Skip to main content

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.

CI PyPI License: Apache-2.0

Quick start · Example · Use cases · Cost

Quick start

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. 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 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

Example

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.

Use cases

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

Commands

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 <command> --help has the rest.

Cost and speed

Every record is one request billed to your OpenRouter credit. The cost follows the size of each record; asking several questions at once barely changes it. Up to 100 records run at the same time, so hundreds take seconds. Measured runs:

Input Records Time Cost Per 1,000 records
Commit messages (ripgrep 15.0) 136 2.0 s $0.0016 $0.012
Small source files (jevpipe) 31 1.4 s $0.0013 $0.043
Source files (ripgrep) 88 2.2 s $0.016 $0.18

--max-cost 0.50 stops sending requests once the run has spent $0.50; it then exits with status 3 and names the line to resume from. To cap every run by default, run jevpipe config set max-cost 0.50 once; jevpipe config --help lists the other defaults you can set.

License

Apache-2.0. jevpipe is an independent project, not affiliated with or endorsed by TypeSafe AI; the answers come from Jev, TypeSafe AI's calibrated decision model, through OpenRouter. Building from source needs Rust (rustup picks the pinned toolchain) and PowerShell 7 for ./check.ps1.

Release files for jevpipe 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for jevpipe 0.1.0
File
jevpipe-0.1.0-py3-none-win_arm64.whl Python 3 none Windows ARM64 Details
jevpipe-0.1.0-py3-none-win_amd64.whl Python 3 none Windows x86-64 Details
jevpipe-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl Python 3 none Linux glibc 2.17+ x86-64, Linux musl 1.1+ x86-64 Details
jevpipe-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl Python 3 none Linux musl 1.1+ ARM64, Linux glibc 2.17+ ARM64 Details
jevpipe-0.1.0-py3-none-macosx_11_0_arm64.whl Python 3 none macOS 11.0+ ARM64 Details
jevpipe-0.1.0-py3-none-macosx_10_12_x86_64.whl Python 3 none macOS 10.12+ x86-64 Details

Total release size: 19.0 MB

Release files / jevpipe-0.1.0-py3-none-win_arm64.whl

Download URL jevpipe-0.1.0-py3-none-win_arm64.whl
Size 2.7 MB
Tags Python 3 Windows ARM64
SHA-256 checksum
How to use checksums
606fa77973646f23e4749234ca3c0e61c27642cbb84dc0e71da45ba9b4ff5b60
BLAKE2b-256 checksum
How to use checksums
cd1685f9a0b3c8ca6c91f39f1d906bc7ec0ae2a50b6a217444a435eb32d53af4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / jevpipe-0.1.0-py3-none-win_amd64.whl

Download URL jevpipe-0.1.0-py3-none-win_amd64.whl
Size 2.7 MB
Tags Python 3 Windows x86-64
SHA-256 checksum
How to use checksums
7864c119f986c1513e08afe5bda6cedbfc010320898b49d647d51a7e1e41516a
BLAKE2b-256 checksum
How to use checksums
3c7641976e7c484058e1d77eac6154a8a9001fee31e893bb4f1aba9da2aafd3b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / jevpipe-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl

Download URL jevpipe-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl
Size 4.1 MB
Tags Linux glibc 2.17+ x86-64 Linux musl 1.1+ x86-64 Python 3
SHA-256 checksum
How to use checksums
c52a645795b552a4d58178358d609d8945583c284a31974425c8ea8b509d6cf4
BLAKE2b-256 checksum
How to use checksums
1a4ec85cc8c499396d5fe10f162384624bc9eb2c2180a41646a27c15cc467fce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / jevpipe-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl

Download URL jevpipe-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
Size 3.8 MB
Tags Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3
SHA-256 checksum
How to use checksums
801517c2adf27b9c99ca9c60dba6f41d019c1452e2957c57063ead3cf5cf48c5
BLAKE2b-256 checksum
How to use checksums
868ff1315e1898f6d538315019a34fd2d8650d2badf92e8a9c38390140d70030
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / jevpipe-0.1.0-py3-none-macosx_11_0_arm64.whl

Download URL jevpipe-0.1.0-py3-none-macosx_11_0_arm64.whl
Size 2.7 MB
Tags Python 3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0c7615d2c8108237d9bb2c1728c3f7da0efb64d88177553b3f4af401a6368af0
BLAKE2b-256 checksum
How to use checksums
2e1633dcdef17e6a8dee9804b2cd2bef6bb9fe0ba2b7a9f64b19bc79aee77728
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / jevpipe-0.1.0-py3-none-macosx_10_12_x86_64.whl

Download URL jevpipe-0.1.0-py3-none-macosx_10_12_x86_64.whl
Size 2.9 MB
Tags Python 3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d692776ad9dc8e0c434d8445734d27291c1520fc876d46d8bfadd2856f3d1432
BLAKE2b-256 checksum
How to use checksums
9eabb0aeaa87dd8a00bd09c5c587c77f08705dce15ca8fd247fc474c39e26231
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

0.2.1

6 release files

0.2.0

6 release files

0.1.1

6 release files

This release

0.1.0 This release

6 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page