Skip to content
MrJev

jgrep

Like grep, but the pattern is a description: it filters piped output as well as files and prints a probability per line.

View on GitHub →

Hands-on review

Filters lines by meaning, for pipes as well as files, with a dollar budget and a local estimate first. Four of its six skip rules only apply with -r.

Good for

  • Working on a pipe, which is what makes it feel like grep
  • A dollar budget and an offline `--estimate` before you spend anything
  • Trusted Publishing to PyPI, with the tag and version checked against each other

Watch out for

  • Name a file and the gitignore, symlink and dot-file rules don't apply
  • `-C` sends the neighbouring lines too, which the question says aren't being judged
  • A halt after `-l` still pays for requests already in flight

Tested Sep 20, 2026 at bc0dc8d · Python in Docker, offline against a local stand-in via its own JEV_URL override

How we reviewed this: we ran it in Docker offline through its own JEV_URL override — no patching needed — and captured every request. We made no Jev calls.

What it does

tail -f app.log | jgrep "a user is getting frustrated". That is the whole pitch, and it works: the pattern is a description, the input can be a stream, and each line comes back with a probability. It also reads diffs, functions, JSONL and CSV fields.

Two things here that almost nothing else in this batch has. There is a dollar budget, defaulting to $1.00, and an --estimate mode that computes the cost locally without making a single call. Being able to ask “what will this cost” before spending is the feature other tools in this category are missing.

Six skip rules, four of them conditional

The read set is: any path you name, every regular file under -r, or stdin. The skip set has six rules, and four of them only run under -r — symlinks and .git, .gitignore and .ignore files from the repository ancestry, and the binary sniff. Name a file directly and none of those apply.

So jgrep "…" ~/.ssh/config does what you asked, and jgrep -r "…" ~ does something more careful. The tool is consistent about it, and it is the same seam we found in snifftest and jegrep the same day — three tools, one pattern: the directory walk is where the protection lives, and naming a path steps around it.

Worth knowing about -C: the neighbouring lines are sent too, prefixed, and the instructions tell the model “they are not themselves being judged”. They are still in the payload. If the line you want checked sits next to one you would not send, the flag sends both.

The budget also has a rounding edge: a halt triggered by -l stops new work but pays for requests already in flight, so the call count can exceed the record count.

Verdict

The most grown-up release process of the four CLIs: CI on two Python versions, PyPI Trusted Publishing with no token to leak, and the tag checked against the project version before anything ships. It is also the only one here with an outside contributor’s work merged.

One naming caution: the package is jev-grep on PyPI. jgrep there belongs to somebody else.

For the tree-walking version of the same idea, see jegrep; for line-by-line matching with boolean operators, semgrep.

See how it compares with other tools in Best Jev tools, tested hands-on.

Review updated Sep 20, 2026. Numbers quoted from the project are its author's own; we don't publish our own measurements of Jev.

More in Command-Line Tools

jevgrep

★ 866

dzhng/jevgrep

Finds code by what it does rather than what it matches: a CLI for coding agents that asks which files and which regions are relevant to a description.

TypeScript

JevRev

★ 434

Alex314618-create/JevRev

Puts an LLM and Jev in one workflow, with sift, loop and long modes, a TUI, and a CLI that can be pointed at any /v1/systemone host. English and Chinese.

TypeScript

semgrep (uehaj)

★ 145▲ 26

uehaj/jev-semgrep

Grep by meaning: Jev scores each line against a description in any language, with AND, OR, and NOT. A single dependency-free Node file.

JavaScriptReviewed

Get new Jev projects every week

New Jev releases, pricing changes, and the best new projects, once a week. No spam; unsubscribe anytime.

Powered by Buttondown. See our privacy policy.