Show HN: Jevpipe – a fast System 1 for AI agents, as a Unix pipe Fabian Both released Jevpipe, an open-source Unix-pipe CLI that lets AI coding agents run fast, cheap yes/no and choice judgments over thousands of files, lines or records in one shell command. In a ripgrep 15.1 example, Jevpipe filtered 19 commit messages in 1.1 seconds for $0.000225, and classified all 19 into feature, fix, docs or internal categories in 1.1 seconds for $0.0003. The tool installs via `uv tool install jevpipe` or `pipx install jevpipe`, requires an OpenRouter API key, and ships an agent skill installable with `npx skills add fabianboth/jevpipe --skill jevpipe`. Give your coding agent a System 1. Fast, cheap judgments over thousands of files, lines or records in one shell command, so your agent decides at scale instead of reading everything itself. Quick start https://github.com/fabianboth/jevpipe quick-start · Example https://github.com/fabianboth/jevpipe example · Use cases https://github.com/fabianboth/jevpipe use-cases · Measured https://github.com/fabianboth/jevpipe measured · Cost https://github.com/fabianboth/jevpipe cost-and-speed uv tool install jevpipe the CLI jevpipe auth set-key your OpenRouter key, kept in the system keychain npx skills add fabianboth/jevpipe --skill jevpipe teaches your agent when and how to use it You need an OpenRouter API key https://openrouter.ai/settings/keys . Where there is no keychain, as in containers, CI or headless Linux, set OPENROUTER API KEY instead; it also takes precedence. No uv yet? Install it https://docs.astral.sh/uv/getting-started/installation/ or use pipx. Without uv, or with the GitHub CLI pipx install jevpipe instead of uv gh skill install fabianboth/jevpipe jevpipe the skill, with the GitHub CLI Which of the 19 commits in ripgrep 15.1 are new features? Ask each commit message: in a clone of https://github.com/BurntSushi/ripgrep git log --format=%s 15.0.0..15.1.0 | jevpipe filter "Is this a new feature?" the commit messages that match the question ignore/types: add ssa type printer: add Cursor hyperlink alias the summary, on standard error jevpipe: 19 records, 2 kept, 0 skipped, 0 failed, $0.000225, 1.1s Typed answers with map : sort every commit into feature, fix, docs or internal in a clone of https://github.com/BurntSushi/ripgrep git log --format=%s 15.0.0..15.1.0 | jevpipe map -q '{ "kind": { "type": "choice", "instructions": "What kind of change is this, for the release notes?", "criteria": { "feature": "a new capability for users", "fix": "a bug fix users would notice", "docs": "documentation only", "internal": "refactoring, tests, CI, dependencies or release chores" } } }' Every commit becomes one JSON line. One of the 19: { "record": "printer: add Cursor hyperlink alias", "answers": { "kind": { "type": "choice", "choice": "feature", "probabilities": {"docs": 0.05, "feature": 0.87, "fix": 0.03, "internal": 0.05}, "confidence": 0.82 } } } All 19 took 1.1 seconds and cost $0.0003. Pick from them with jq, for example the fixes: jq -r 'select .answers.kind.choice == "fix" | .record' . A low confidence marks an answer worth a second look. Each item is judged on its own, so ask what the item itself can answer: | Job | Question for every item | Answer | |---|---|---| | Search code by meaning | Does this file retry failed requests? | yes/no | | Triage CI failures | Timeout, network error, failed assertion or crash? | choice | | Review a large diff | Does this change touch authentication or permissions? | yes/no | | Label an issue backlog | Bug report, feature request or question? | choice | | Route a support inbox | Which team? How urgent? | choice, score | | Moderate a comment queue | Fine, spam or abusive? | choice | | Screen papers | How relevant is this abstract to my question? | score 1 to 5 | Classification. Jev against general LLMs on intent routing and prompt-injection detection, from an independent study https://www.ayautomate.com/blog/jev-vs-llm-benchmark : Code search. jevpipe in an agent's hands: 470 searches from the extended CodeSearchNet Challenge https://huggingface.co/datasets/Scoolar/codesearchnet-challenge-extended in five languages, each over every function of its language. Read the full benchmark https://github.com/fabianboth/jevpipe/blob/main/bench/README.md : every language, speed and cost, and the searches where jevpipe loses. | | Asks | Prints | |---|---|---| | jevpipe filter "question" | one yes/no question | the lines answered yes, like grep | | jevpipe map -q '{...}' | several typed questions: yes/no, one choice, a score | one JSON line per record | Both read their input like grep: lines through a pipe or from the files you name. With --read-files , each line is a path, and the file it names is judged instead: git log --format=%s | jevpipe filter "Is this a new feature?" each commit message jevpipe filter "Is this an error worth a closer look?" app.log each line of app.log git ls-files | jevpipe filter "Does this file retry failed requests?" --read-files each file jevpipe