jev-use

mcp
Security Audit
Fail
Health Warn
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Low visibility — Only 5 GitHub stars
Code Fail
  • execSync — Synchronous shell command execution in bench/examples/agree.mjs
  • process.env — Environment variable access in bench/examples/agree.mjs
  • network request — Outbound network request in bench/examples/agree.mjs
  • spawnSync — Synchronous process spawning in bench/examples/collab.mjs
  • process.env — Environment variable access in bench/examples/collab.mjs
  • network request — Outbound network request in bench/examples/collab.mjs
  • exec() — Shell command execution in bench/examples/compact.mjs
  • process.env — Environment variable access in bench/examples/compact.mjs
  • network request — Outbound network request in bench/examples/compact.mjs
  • execSync — Synchronous shell command execution in bench/examples/completion.mjs
  • fs module — File system access in bench/examples/completion.mjs
  • process.env — Environment variable access in bench/examples/fairbase.mjs
  • network request — Outbound network request in bench/examples/fairbase.mjs
  • rm -rf — Recursive force deletion command in bench/examples/gate-session.mjs
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

Claude Code / Codex / pi plugin that hands agent steps needing no text output to Jev (TypeSafe's judgment model) — measured p50 ~230 ms and ~$0.02 per 1,000 judgments, with typed escalation back to the LLM

README.md

jev-use

English | 简体中文

The best way for Claude Code, Codex, and pi
to work with Jev:
hand the tasks that need no text output to Jev — faster steps, fewer
tokens, tasks done sooner and better.

It makes the LLM and Jev true collaborators: when content needs to be
written, the LLM takes over; when a step just needs a fast decision, Jev
executes it.

Demos — real runs, 1× speed

Directions task: Jev clicks, the LLM types — 10 decisions (p50 274 ms) · 4 writes; Jev rejects a wrong route, the LLM rewrites
OpenStreetMap directions: Jev picks controls in green, the LLM types the locations in blue; a wrong 1809km geocode is rejected by Jev and repaired by the LLM, ending on the real 3.7km walking route
Context compaction — 200 messages judged in 7 calls, one LLM paragraph replaces the dropped pile; recall 3/3
A real transcript fills the context window to 94%; Jev tints each message keep or drop, the LLM's summary paragraph replaces the dropped block, the window falls to 44% and three recall checks pass
Pong: ball speed = decision latency — 86 Jev decisions in 20 s vs 6 (haiku) and 3 (gemini) called the usual way; enum-constrain both and the gap is 3×
Three Pong lanes replaying a live run at 1x: the Jev ball sweeps the field at ~224ms per decision while the LLM balls crawl
Gate every shell command — dangerous ones denied in ~230 ms with a reason, zero LLM tokens
A 24-command dev session gated at 1x: dangerous commands denied at confidence 1.00, benign ones allowed

Every demo is a rerunnable script in bench/examples/;
all numbers, methodology, variance and caveats:
bench/RESULTS.md · third-party measurements:
docs/evidence.md.

Install

npx -y jev-use install    # wires Claude Code, Codex, and pi — whichever it finds

Set one key in the environment your agent runs in (JEV_BACKEND=mock for
a keyless dry run):

Provider Env var
TypeSafe direct TYPESAFE_API_KEY
OpenRouter OPENROUTER_API_KEY
Vercel AI Gateway AI_GATEWAY_API_KEY

npx -y jev-use doctor checks the wiring. Judged state goes to the
provider you configure; JEV_BACKEND=mock stays local. Plugin form with
the routing skill and the PreToolUse gate:
harness/claude-code ·
harness/codex.

Use as a library

npm i jev-use — zero runtime dependencies on the judgment path:

import { Jev, check, pick, rate } from "jev-use";

const jev = new Jev();

const { answers } = await jev.judge(state, {
  next: pick("Next action?", { merge: "all green", rerun: "looks flaky", hold: "needs attention" }),
  risk: rate("How risky?", ["routine", "worth a look", "incident"]),
  passed: check("Did the run fully succeed?"),
});
// answers.next → { answer: "merge", confidence: 0.93, escalate: false }

Anything Jev can't or shouldn't decide comes back with escalate: true
and a typed reason. Tools, verdict shape, escalation contract, CLI:
docs/reference.md.

Small enough to read

File Job
src/protocol.ts Questions (check/pick/rate), verdicts, escalation reasons
src/dispatch.ts Pre-call routing: what never reaches Jev
src/judge.ts screen → backend → hand back what is unsure; gate
src/jev.ts The Jev client over that engine
src/backends/ TypeSafe, OpenRouter, Vercel, mock adapters
src/server.ts The two MCP tools
src/cli.ts install, serve, hook gate, doctor
skills/jev-use/SKILL.md The routing rules the agent follows

Development

$ npm run typecheck && npm test    # unit tests incl. per-provider wire fixtures
$ npm run smoke                    # real MCP client ↔ built CLI over stdio
$ node bench/run.mjs               # micro-benchmarks, your key and region

Substantially written with Claude Code (AI-assisted).

MIT © shitianfang

Reviews (0)

No results found