---
title: "Tools: CLIs, linters, semantic grep and dev tools"
type: community
source_tier: community
tags: [community, tools, cli, linters, semantic-search]
created: 2026-09-25
updated: 2026-09-25
confidence: medium
sources:
  - raw/x-repos/model-clis__jev.md
  - raw/x-repos/shiftynick__jev-axi.md
  - raw/x-repos/ariel-frischer__jevkit.md
  - raw/x-repos/suraj-phanindra__wellposed.md
  - raw/x-repos/hyperspaceai__jevcache.md
  - raw/x-repos/shinpr__jev-reranker.md
  - raw/x-repos/sufianetaouil__every.md
  - raw/x-repos/kyu1204__jgrep.md
  - raw/x-repos/allebee__jevgrep.md
  - raw/x-repos/devanshbatham__commit-miner.md
  - raw/x-repos/supercorp-ai__supercov.md
  - raw/x-repos/wobsoriano__oxlint-plugin-jev.md
  - raw/x-repos/mizchi__jev-lint.md
  - raw/x-repos/lukstei__slop-grader.md
  - raw/x-repos/misbahsy__doc-router.md
  - raw/x-repos/agent-labs-dev__fastbrowse.md
  - raw/x-repos/tontoko__jev-browser.md
  - raw/x-repos/HarnessRouter__SystemOneHarness.md
  - raw/x-repos/evoke-build__evoke.md
  - raw/x-repos/ragelink__firehose-judge.md
  - raw/x-repos/shaharia-lab__jev-cli.md
  - raw/x-repos/aoprisan__jev-ts-repl.md
  - raw/x-repos/Nasrallah-AL__jev-cli.md
  - raw/x-repos/Nasrallah-AL__jev-cli__plugin-hooks-readme.md
  - raw/x-repos/andududu__jeview.md
  - raw/x-repos/lakeday-org__perch.md
  - raw/x-repos/virolea__lintus.md
  - raw/x-repos/tyler-dot-earth__patdown.md
  - raw/x-repos/tyler-dot-earth__patdown__docs-jev-input-limits.md
  - raw/x-repos/DanRWilloughby__snifftest.md
  - raw/x-repos/DanRWilloughby__snifftest__docs-eval-notes.md
  - raw/x-repos/DanRWilloughby__snifftest__bench-results-2026-09-17-tables.md
  - raw/x-repos/Alurith__jeff.md
  - raw/x-repos/Alurith__jeff__docs-handoffs-evals-harness.md
  - raw/x-repos/markjaquith__typesafe-ai-playground.md
  - raw/x-repos/keltokhy__jgrep.md
  - raw/x-repos/keltokhy__jgrep__docs-code-review.md
  - raw/x-repos/keltokhy__jgrep__docs-benchmarks-local-models-2026-09-22.md
  - raw/x-repos/keltokhy__jsort.md
  - raw/x-repos/keltokhy__jsort__docs-benchmarks-local-models-2026-09-22.md
  - raw/x-repos/can1357__jegrep.md
  - raw/x-repos/can1357__jegrep__benches-results.md
  - raw/x-repos/uehaj__jev-semgrep.md
  - raw/x-repos/uehaj__jev-semgrep__tests-report.md
  - raw/x-repos/nassim-arifette__jevgrep.md
  - raw/x-repos/dorkitude__webctl.md
  - raw/x-repos/dorkitude__webctl__benchmarks-results.md
  - raw/x-repos/syumai__jevyoumean.md
  - raw/x-repos/m0rphtail__triagedy.md
  - docs/sweep/2026-09-25-mrjev/partc.md
jev_version: "jev-1.13.0"
summary: "Community Jev CLIs, REPLs, linters, code and prose scanners, semantic grep and sort, web search and pipeline tools: install line, name collisions, author numbers, vetting notes."
---

# Tools: CLIs, linters, semantic grep and dev tools

> **TL;DR** Command-line and CI tools that ask Jev questions: general CLIs, linters and scanners, semantic grep/sort/search. **Unaudited community code**, mostly days old (★ and push as captured 2026-09-23 to 25). Numbers are the authors'. Names collide heavily: check the owner before you install. Split from [[ideas/tools-and-integrations]] on 2026-09-25 (nothing dropped); agent gates and screens are on [[ideas/tools-guardrails]].

Pattern IDs: [[ideas/patterns]]. Licence MIT unless stated. "Our check" = our 2026-09-25 source and registry vetting (docs/sweep/2026-09-25-mrjev/partc.md), not a raw capture.

**Name collisions.** At least six tools install a command called `jev` (model-clis/jev, jevkit, shaharia-lab/jev-cli, jev-repl, Nasrallah-AL's `jevctl`, utk2103/jev-studio): run `which jev` before trusting it. `jev-cli` is three projects (crates.io: shaharia-lab; PyPI: tumf; npm `jevctl`: Nasrallah-AL); mattn/go-jev also ships a `jev-cli` ([[ideas/sdks-and-replicas]]). `jgrep` is kyu1204 (npm `jevgrep`) or keltokhy (PyPI `jev-grep`); `jevgrep` is allebee (`jevgrep-cli`), nassim-arifette (`@nassim-arifette/jevgrep`) or kyu1204's npm package. uehaj's `semgrep` binary shadows the Semgrep tool. Alurith's `jeff` also collides with other tools (our check).

## General CLIs and REPLs

| Tool | Does | Install | ★ · push | Note |
|---|---|---|---|---|
| [jev CLI](https://github.com/model-clis/jev) (model-clis) | one-question commands, `--assert` → exit 3, presets, `map` over JSONL | brew, scoop, curl | 0 · 2026-09-18 | exit 0 ≠ "yes"; its "roughly 20 requests/second" = the documented 1,200 rpm (20 × 60) `verified`; `--concurrency` default 4, author advises ≤ 8. P10 |
| [jev](https://github.com/shaharia-lab/jev-cli) (shaharia-lab; crates `jev-cli`) | Rust CLI: yes/no, choice and rubric subcommands; exit codes and `--abstain-band` for CI; YAML batch files; `jev mcp serve`; the key is never a flag | install script, `brew install shaharia-lab/tap/jev`; `claude mcp add jev -- jev mcp serve` | 27 · 2026-09-25 · Apache-2.0 | 255 options and 2–10 levels match [[concepts/choice]], [[concepts/score]] (`verified`); "about a hundredth of a cent" per question `unverified` (its own 42-token example shows $0.000002). Installers check SHA-256 (our check). P10 |
| [jev-axi](https://github.com/shiftynick/jev-axi) (Nicholas Underwood) | `pick/rate/check/rank/diff/triage/guard`; `setup safety` hook | `npm i -g jev-axi` | 19 · 2026-09-19 | file ranking did not cut agent cost. P03, P11, P16 |
| [jevkit](https://github.com/ariel-frischer/jevkit) (Ariel Frischer) | Rust CLI (command `jev`); `jev lint`: 13 offline rules | install.sh | 3 · 2026-09-19 | |
| [jevctl](https://github.com/Nasrallah-AL/jev-cli) (Nasrallah-AL; command `jev`) | verify, screen, classify, extract, find, rerank, match, route, compact, batch; exit 2 when a `--fail-on` condition matches | `npm install -g jevctl`; plugin `claude plugin install jev@jev-cli` | 21 · 2026-09-25 | the plugin swaps Claude Code's compaction summary for keep/drop per tool call, adapted from tamaratran/fast-jev-compaction; it sends the transcript to Jev and needs `CLAUDE_CODE_ENABLE_FUNCTION_HOOKS=1` (undocumented, `unverified`). Its 25k state / 30k request caps sit under 32k/64k (`verified`, [[reference/models-and-pricing]]). P07 |
| [jev-repl](https://github.com/aoprisan/jev-ts-repl) (aoprisan) | terminal REPL and sketch page with offline mock answers; `:turn`/`:trend` re-ask as a conversation grows; `jev eval` scores a saved request on labelled cases | `npx jev-repl` | 0 · 2026-09-25 | its cost example uses user-supplied "$0.20/$1.00 per Mtok"; as Jev's price that **contradicts docs** ($0.042/Mtok input, output free). P42 |
| [wellposed](https://github.com/suraj-phanindra/wellposed) (suraj-phanindra) | pre-send linter for requests: 45 offline structural checks, then Jev for what structure cannot decide; agent skill | npm `wellposed` | 2 · 2026-09-24 | a Choice without a "none of the above" option answered wrong at confidence 1.00 (author); the fix matches [[concepts/choice]] (`verified`) → [[ideas/failure-reports]]. P42 |
| [jevcache](https://github.com/hyperspaceai/jevcache) (hyperspaceai) | cache on redacted (model, schema, state); CI `replay` | curl | 71 · 2026-09-19 · no licence | answers not bit-exact ([[ideas/measurements]]) |
| [Jeview](https://github.com/andududu/jeview) (andududu) | local gateway on 127.0.0.1:4777 with a live map of every call; an `events` id links calls into chains | clone, Node 24 | 53 · 2026-09-21 | **not a transparent proxy**: it adds `events` to Jev's JSON. Calls and your key sit in a local `jeview.sqlite`, readable by your user only, so any process running as you can spend it. "About ten cents an hour" demo cost `unverified` |

Names only: [jev-studio](https://github.com/utk2103/jev-studio) (utk2103; PyPI `jev-studio`: a `jev` CLI with exit code 2 on a tripped check, MCP server, cookbook slash commands; it checks PyPI for updates, our check); [jev-cli](https://github.com/tumf/jev-cli) (tumf; PyPI `jev-cli`, dependency-free Python CLI plus stdio MCP server `jev-mcp`; its Vercel `v4/ai/evaluation-model` endpoint is `unverified`, our check).

## Linters and code or prose scanners

| Tool | Does | Install | ★ · push | Note |
|---|---|---|---|---|
| [perch](https://github.com/lakeday-org/perch) (lakeday-org) | method-level bug scanner: ranked defects with severity and confidence; `perch check <id>` re-asks after a fix; custom rules in `perch.yaml`; skills for Claude Code, Codex, pi, Cursor | `npm install -g @lakeday/perch`; key in `PERCH_API_KEY` | 179 · 2026-09-25 | no accuracy published. Unscoped npm `perch` is an unrelated 2016 package (our check). P10 |
| [lintus](https://github.com/virolea/lintus) (virolea) | lint rules in plain English (YAML), one Noul per rule per file, all of a file's rules in one request; whole tree, diff or staged; GitHub or JSON output | `curl … install.sh \| sh` (checksum-verified, our check); crates `lintus` | 13 · 2026-09-20 | author: every file was flagged at ~0.15 until the **criteria** were reworded; fix wording, not the threshold. Default 100000-byte file cap ≈ 25k tokens at ~4 characters per token (our arithmetic); dense code tokenizes worse and the rules count too, so a file near the cap can exceed the 32k state + longest-question budget (inferred). No accuracy. P10 |
| [patdown](https://github.com/tyler-dot-earth/patdown) (tyler-dot-earth) | lints a tree against fuzzy rules in one markdown file; Pi write steering; Claude Code Write/Edit hook; GitHub Action | `npx patdown`; `pi install npm:@patdown/pi` | 15 · 2026-09-24 · 0BSD (GitHub: NOASSERTION) | author's direct-API probe (2026-09-18, `jev-1.13.0`, 14 probes): succeeded at 32,808 reported input tokens, failed from 97,536 bytes with HTTP 400 `max_tokens_exceeded`; 131,072 spaces cost 2,363 tokens → [[ideas/request-mechanics]]. The code is not in the docs we hold (`unverified`). P10 |
| [Sniff Test](https://github.com/DanRWilloughby/snifftest) (DanRWilloughby) | prose linter for AI writing tells: regex rules locally, one Noul per rule per paragraph; 0.4–0.6 = "no judgment" | `npm install --global snifftest` | 31 · 2026-09-18 | author, 166 paragraphs, 2026-09-17: Jev 63/80 faults, 1/54 false alarms, $0.0129 per 100 paragraphs, 182 ms; Haiku 4.5 66/80 with 37/54; Opus 5 77/80 with 0/54 at $3.08. Rule missing from Jev's reply on 13 paragraphs → [[ideas/head-to-head-benchmarks]]. P30 |
| [Supercov](https://github.com/supercorp-ai/supercov) (supercorp-ai) | coverage tool adding Jev quality and security scores per file; content-hash cache; Claude Code plugin | `npx supercov quality` | 120 · 2026-09-25 | vendor: about a cent per megabyte of source (1 MB ≈ 250k tokens at ~4 characters per token × $0.042/Mtok ≈ $0.0105, our arithmetic, consistent); your source goes to TypeSafe. P10 |
| [oxlint-plugin-jev](https://github.com/wobsoriano/oxlint-plugin-jev) (wobsoriano) | Oxlint rules as English yes/no | `npm i -D oxlint oxlint-plugin-jev` | 58 · 2026-09-21 | P10 |
| [jev-lint](https://github.com/mizchi/jev-lint) (mizchi) | ast-grep + one question; 99 rules | `npx -y jev-lint check` | 74 · 2026-09-22 | P10 |
| [slop-grader](https://github.com/lukstei/slop-grader) (lukstei) | every rule × every line, feeds an agent fix plan | `npx @lukstei/slop-grader` | 20 · 2026-09-22 | P30 |
| [Every](https://github.com/sufianetaouil/every) (sufianetaouil) | one yes/no per function in a codebase, ranked | `pip install every-cli` | 8 · 2026-09-17 | 1,302 gin functions in 3.7 s for $0.018; self-test 10/10 recall on 20 labelled functions; its "waitlist" is the author's hosted tier. P17, P10 |
| [commit-miner](https://github.com/devanshbatham/commit-miner) (devanshbatham) | labels commit diffs: bug fix, security/CWE, change type; HTML/CSV reports | `cargo install --path . --locked` | 36 · 2026-09-17 · **no licence** | describe, don't reuse code. P18, P35 |
| [triagedy](https://github.com/m0rphtail/triagedy) (m0rphtail) | security alerts as a Unix filter: JSONL in, typed decisions out; routing in code; local OpenAI-compatible fallback | clone, Rust | 2 · 2026-09-22 | calls Choice `confidence` "calibrated"; per [[concepts/confidence]] `confidence` is a statistic of the distribution's shape, not a probability (`contradicts docs`). Weak benchmarks (author). P23 |

Names only: [JevLint](https://github.com/iamtoomas/JevLint) (iamtoomas, was huntedman; npm `@jevlint/cli`; one Noul per file per rule; JS plugins run with full permissions even in `--dry-run`, our check); [jeff](https://github.com/Alurith/jeff) (Alurith; Go, read-only lint with a privacy filter; the author's first strict eval run failed its own quality gates → [[ideas/failure-reports]]; Apache-2.0); [typesafe-ai-playground](https://github.com/markjaquith/typesafe-ai-playground) (markjaquith; Rust experiments: option definitions once in `state`, catalogues over 253 codes split so each Choice stays ≤ 255, `verified`); [jev-seo](https://github.com/AkashPriyadarshii/jev-seo) (AkashPriyadarshii; crates `jev-seo`, Rust SEO CLI + MCP server with a per-run Jev spend cap; **its README hides a note aimed at AI answer engines and claims a release dated 2026-10-22 that crates.io does not have, so take nothing from that README as fact**; our check).

## Semantic grep, sort and search

| Tool | Does | Install | ★ · push | Note |
|---|---|---|---|---|
| [jgrep](https://github.com/kyu1204/jgrep) (kyu1204) | semantic grep over code, diffs, CSV; 16 chunks per request; grep exit codes for CI | `npm i -g jevgrep` (command `jgrep`) | 34 · 2026-09-24 | `init` stores the key `chmod 600`. Not keltokhy/jgrep below. P17 |
| [jgrep](https://github.com/keltokhy/jgrep) (keltokhy; PyPI `jev-grep`) | grep where the pattern is a description: lines, paragraphs, JSONL/CSV fields, diff hunks, whole functions | `uv tool install jev-grep` | 99 · 2026-09-24 | author via OpenRouter: SMS spam 5,574 messages F1 0.91 for $0.07 vs 17-term regex 0.72; AG News 7,600 articles 86.6% top-1; ~210 ms flat from 1 to 64 questions per call; repeats: 128 of 150 identical, rest moved ≤ 0.03. Warns input text can steer answers → [[ideas/head-to-head-benchmarks]]. Local-replica run (2026-09-22): Laya's 512-token window failed 300 decisions until records were cropped ([[ideas/open-replicas]]). P17 |
| [jevgrep](https://github.com/allebee/jevgrep) (allebee) | grep lines by meaning | `uv tool install jevgrep-cli` | 1 · 2026-09-21 | author's limits: a self-describing line scored 0.97; a line scored 0.86 in a batch, 0.01 alone ([[ideas/failure-reports]]). Not `@nassim-arifette/jevgrep`. P17, P16 |
| [semgrep](https://github.com/uehaj/jev-semgrep) (uehaj; npm `@uehaj/semgrep`) | grep by meaning across languages; AND/OR/NOT over meanings; regex prefilter; 30 lines per request | `npm install -g @uehaj/semgrep` | 144 · 2026-09-25 · MIT text (GitHub: NOASSERTION) | **binary shadows Semgrep.** Author: `--chunk 1` flipped 18 of 200 log lines vs 1 when batched; judges solo verdicts less reliable (the opposite of allebee's result; [[ideas/request-mechanics]]); ±0.05 drift; 420 questions in one request worked; P 0.94 / R 0.98 on 51 lines (Claude-judged). P17 |
| [jegrep](https://github.com/can1357/jegrep) (can1357) | semantic code search, no index: lexical candidates → Jev on short sketches → ≤ 40 full passages | `cargo install jegrep` | 91 · 2026-09-20 | fails over between OpenRouter and TypeSafe on 401/429/5xx and others; reads keys from `~/.env`. Author, 30 queries: files 49/49, regions 93/94, ~$0.005 per query; labels positive-only, so precision is a lower bound. P17 |
| [JevGrep](https://github.com/nassim-arifette/jevgrep) (nassim-arifette) | semantic code search CLI + MCP returning exact excerpts with line numbers; asks approval per repo before sending code | `npm install -g @nassim-arifette/jevgrep` | 72 · 2026-09-23 | local token ceilings: 64,000 direct, 32,000 on Vercel/OpenRouter (its own conservative policy). P17 |
| [jsort](https://github.com/keltokhy/jsort) (keltokhy; PyPI `jev-sort`) | sorts texts along a plain-English dimension: one Noul per pair, Bradley-Terry fit with standard errors | `uv tool install jev-sort` | 23 · 2026-09-24 | author: 300 CommonLit excerpts r 0.824 vs ~0.88 ceiling for $0.046; a 2-option Choice pushed 93% of answers below 0.1 or above 0.9 where a Noul left 28% between → [[ideas/head-to-head-benchmarks]]. Local replicas (author, 2026-09-22): on the 289 excerpts all scored, DiffusionGemma r 0.789, Laya 0.032 ([[ideas/open-replicas]]). P17 |
| [webctl](https://github.com/dorkitude/webctl) (dorkitude) | agent web search: Jev scores results from several backends, MinHash + Jev dedupe, keeps relevant chunks | brew, apt, `npm install -g webctl`, `go install` | 143 · 2026-09-23 | author, 30 questions judged by Kimi: in Claude Code every webctl arm beat native search (9.17–9.30 vs 8.50) at 19–30% lower cost; under 0.3 points is noise. **npm postinstall downloads the release binary with no checksum** (our check). P17 |
| [jev-reranker](https://github.com/shinpr/jev-reranker) (shinpr) | JSON pipe: rerank, filter, extract | `npm i -g jev-reranker` | 4 · 2026-09-23 | P17 |
| [jevyoumean](https://github.com/syumai/jevyoumean) (syumai; command `jym`) | semantic "did you mean?" for any CLI: one Choice over subcommands plus `__none__`, sharded above 254 options | `go install …/cmd/jym@latest` | 16 · 2026-09-23 | auto-run needs p ≥ 0.95 and never a denylisted verb (`rm`, `push`, …); valid commands never touch the network; `--all` wraps every executable on PATH (author: dangerous). P12, P14 |
| [doc-router](https://github.com/misbahsy/doc-router) (misbahsy) | which PDF pages need OCR | cargo | 26 · 2026-09-18 | 155 → 87 pages billed; 9 misses vs 28 for rules. P26 |

## Browsers, harnesses and pipelines

| Tool | Does | Install | ★ · push | Note |
|---|---|---|---|---|
| [fastbrowse](https://github.com/agent-labs-dev/fastbrowse) (Agent Labs) | Jev picks actions, LLM reads, cited answers, `--authorize` gate | `uvx fastbrowse` | 98 · 2026-09-22 | 41/42 vs Browser Use 39/42; median $0.0041 vs $0.3668/task. P12 |
| [jev-browser](https://github.com/tontoko/jev-browser) (Tomohiko Hiraki) | Playwright SDK, CLI, MCP | release tarball | 7 · 2026-09-22 · Apache-2.0 | not jkudish/jev-browser ([[ideas/tools-and-integrations]]). P12 |
| [System One Harness](https://github.com/HarnessRouter/SystemOneHarness) | finite actions → questions, gated steps, traces | `pip install -e .` | 124 · 2026-09-21 · Apache-2.0 | P24 |
| [evoke](https://github.com/evoke-build/evoke) | sentence → program + args; runs, confirms or asks | curl; npm | 11 · 2026-09-23 · Apache-2.0 | P14 |
| [firehose-judge](https://github.com/ragelink/firehose-judge) (Leo Mata) | Cloudflare template: 8 questions per post, human lane | `wrangler deploy` | 0 · 2026-09-19 | ~260 ms, ~850 tokens/post. P16, P06 |

Elsewhere: semdecide, blink, jev-shell-history → [[ideas/repos-agents]].

## Related

- [[ideas/tools-and-integrations]] — hub: MCP servers, plugins, connectors, agent routing
- [[ideas/tools-guardrails]] — tool-call gates, permission hooks, injection screens
- [[ideas/sdks-and-replicas]] — SDKs by language and libraries; [[ideas/community-repos]] — vetting
- [[ideas/request-mechanics]] — token limits, batching and stability evidence behind several rows

## Sources

Links inline; raw captures (2026-09-23 to 25) in frontmatter. Names-only lines and "our check" notes rest on our 2026-09-25 vetting at source (docs/sweep/2026-09-25-mrjev/partc.md) where no capture exists.
