Skip to content

jevgrep 0.1.0

Latest

Choose a tag to compare

@allebee allebee released this 21 Sep 18:13
· 1 commit to main since this release

First release of jevgrep: grep by meaning. Pipe in any text, ask a yes/no question, and get back only the lines where TypeSafe's Jev answers yes.

uv tool install jevgrep-cli            # or: pipx install jevgrep-cli
uv tool install 'jevgrep-cli[explain]' # adds --explain (Claude via OpenRouter)
tail -f server.log | jevgrep "This line reports a real error, not routine noise"

Features

  • Streams: micro-batches of 20 lines, sent after 300 ms without input (1 s at most), several requests in flight, output in input order. It works behind tail -f, where matches appear about 0.7 s after the line is written.
  • grep-style flags and exit codes: -v, -n, --score, --json, --threshold, and 0 / 1 / 2 / 130.
  • Runs through OpenRouter or directly on TypeSafe, chosen by whichever key is set; --model jev-1.13 pins a version.
  • --stats shows lines, requests, tokens, the provider-reported cost and p50 latency. --explain gives a 3–5 sentence root-cause summary of the matches.
  • Identical lines are judged once. Log text stays in the request's data and never in instructions.

Benchmark (195 hand-labelled log lines, 3 questions): Jev scored a mean F1 of 0.904 for $0.0024 in 12 s. Claude Haiku 4.5 scored 0.873 for $0.11, and Claude Sonnet 5 scored 0.952 for $0.41. Jev loses on the fuzziest question ("a real error, not routine noise") and on a log line that argues for its own label. Details: bench/results.md.

The PyPI package is named jevgrep-cli because jevgrep is too close to the existing jev-grep. The command is jevgrep.