Skip to content

jevgrep (allebee)

grep by meaning: pipe text in, ask a yes/no question in plain English, and Jev returns matching lines, even behind tail -f.

BenchmarkbetaMIT

Overview

jevgrep (allebee) filters logs and other text streams by meaning. You pipe in text and ask a yes/no question in plain English, such as this line reports a real error, not routine noise; Jev answers one Noul per line in batches, code applies a threshold, and matching lines are printed grep-style. It behaves like grep, supporting -v, -n, JSON output, pipes and grep's exit codes, handles Ctrl+C and head cleanly, and works behind tail -f, kubectl logs -f or journalctl -f, with matches appearing about 0.7 seconds after a line is written. An optional explain flag asks Claude for a short summary of matches and likely root cause.

On its hand-labelled benchmark of 195 log lines and three questions, run through OpenRouter with identical states, batching and a 0.5 threshold, Jev with default batching reached a mean F1 of 0.904 for $0.0024, versus 0.873 for Claude Haiku 4.5 at $0.11 and 0.952 for Claude Sonnet 5 at $0.41. The README says it keeps meaningful lines without the word error (a 503, a traceback, OOMKilled) and drops misleading ones (error_rate=0.00), estimates about $0.004 per 1,000 lines, documents where Jev loses, and advises using grep when a regex suffices. It is on PyPI with CI and an MIT licence.

What the decision model decides

TypeQuestionAnswers
Yes / noDoes this line satisfy the user's plain-English question (e.g. reports a real error, not routine noise)?—

How it works

  1. Pipe text or a live stream into jevgrep
  2. Batch lines with one Noul each to Jev
  3. Print lines at or above the threshold
  4. Optionally summarise matches with --explain

Strengths

  • Meaning-based filtering beyond keywords
  • About $0.004 per 1,000 lines per the README
  • Fast enough for live tailing
  • Benchmark against Claude models with honest limits

Caveats

  • Small hand-labelled benchmark
  • Sonnet 5 scored higher F1
  • Uses a remote API for every line

Getting started

uv tool install jevgrep-cli && export OPENROUTER_API_KEY=..., then `tail -f server.log | jevgrep "This line reports a real error, not routine noise"`.

At a glance

Type
Benchmark
Status
beta
Language
Python
Runtime
CLI
Has code
yes
Has tests
yes
License
MIT

Use cases and integrations

How curated lists describe it

  • Log triage: filters logs and other text streams, including live `tail -f` output, by asking Jev one Noul per line against a plain-English question and printing lines at or above a probability threshold, with a hand-labelled benchmark against Claude in the repository.

    yibie/awesome-jev
  • Streaming grep by meaning for logs: asks Jev one Noul per line against a plain-English question and prints the lines at or above a threshold, including from `tail -f`

    AnotiaWang/awesome-decision-models
  • On the bundled sample (\`examples/sample.log\`, 200 lines):

    logicrw/awesome-jev-projects
  • Jev decides, one Noul per line, whether each line of a log or other text stream satisfies a plain-English question; code applies the threshold and prints the matches grep-style, including from `tail -f`.

    cobanov/awesome-jev
  • Grep by meaning: pipe in any text, ask a yes/no question in plain English, get only the matching lines. Works behind tail -f, about $0.004 per 1,000 lines, powered by TypeSafe's Jev.

    hellogumbo/awesome-jev

Frequently asked questions

How does it compare with Claude?

Mean F1 0.904 versus 0.873 for Haiku 4.5 and 0.952 for Sonnet 5, at a small fraction of the cost, on the README's benchmark.

Can it follow live logs?

Yes, matches appear about 0.7 s after a line is written.

When should I use plain grep?

Whenever a regex can express what you are looking for.

Related projects

  • On-call tooling where Jev judges alerts and incident hypotheses and plain code decides: alert routing plus a no-LLM root-cause benchmark.

    ProjectbetaPython
  • SREGym blog post on Kubernetes incident diagnosis with no LLM agent: Jev picks a root cause from collected evidence.

    Articleresearch
  • Experiment testing whether a local Qwen read via label log-probabilities can replace Jev on synthetic AIOps alert decisions.

    ProjectresearchPython
  • Web app that sends identical ticket-routing and alert-triage questions to OpenAI Decisions and Jev side by side.

    BenchmarkprototypePython
  • Self-hosted Stacks blockchain data service whose Slack gate and fault-triage paths reportedly run on Jev decisions.

    ServiceproductionTypeScript
  • Home Assistant integration that runs weekly checks with Jev judgments and turns confident findings into Repairs cards for you to confirm.

    ProjectbetaPython