jev-opus
Runs Claude Code on Opus 5.5 with Jev re-picking reasoning effort after every tool batch, via per-message effort so the cache survives.
Overview
jev-opus runs Claude Code on claude-opus-5-5 and lets Jev decide the reasoning effort level when a prompt arrives and again after every tool batch, before the next API call. A failing test raises the next step's effort; once the check passes, effort steps back down, all within one prompt. Jev is asked a Choice, a Score and a Noul each time, and code enforces configured floors and ceilings.
The key trick is cache preservation. Changing effort between requests normally changes the request prefix and discards the prompt cache, but Opus 5.5 accepts effort as a per-message statement inside the conversation. jev-opus only changes effort that way and keeps every statement in place, so history never changes. It works as a local gateway for interactive Claude Code (adding an 'Opus 5.5 · Jev' model entry) or as a headless driver through the Agent SDK. An audit command shows each decision and its reasons. Without a Jev key it falls back to local heuristics.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | What reasoning effort should the next API call use? | low · medium · high |
| Score | How difficult is the current step (0-4)? | — |
| Yes / no | Are checks currently failing?(inferred) | yes · no |
How it works
- A prompt arrives or a tool batch finishes
- Jev answers effort-related Choice, Score and Noul questions
- Code applies floors, ceilings and recovery rules
- Effort is inserted as a per-message statement before the next call
- The prompt cache keeps growing unbroken
Strengths
- Effort adapts step by step without breaking the prompt cache
- Works interactively or headless
- Auditable decision log
- Heuristic fallback without a key
Caveats
- Requires Claude Code 2.1.280+ and Node 22.18+
- Specific to Opus 5.5's per-message effort support
- Unofficial project
Getting started
npm install -g jev-opus && jev-opus init && jev-opus claudeAt a glance
- Type
- Proxy
- Status
- beta
- Language
- TypeScript
- Runtime
- CLI gateway and Claude Code plugin
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Coding agents: runs Claude Code on Opus 5.5 and asks Jev a `Choice`, a `Score` and a `Noul` on each prompt and after every tool batch to pick the next API call's reasoning effort (low/medium/high), sent as a per-message statement so the prompt cache never breaks.
yibie/awesome-jevUnofficial CLI and Claude Code gateway: runs Claude Code on Opus 5.5 and asks Jev typed Choice / Score / Noul questions on each prompt and after every tool batch to pick the next call's reasoning effort, with code enforcing floors and ceilings and sending the result as a per-message effort statement so the prompt cache is kept
AnotiaWang/awesome-decision-modelsClaude Opus 5.5 with the effort level re-decided every step by the TypeSafe Jev reflex — without breaking the prompt cache. CLI + Claude Code plugin.
logicrw/awesome-jev-projectsRuns Claude Code on Opus 5.5 and asks Jev typed Choice, Score, and Noul questions on each prompt and after every tool batch to pick the next API call's reasoning effort (low/medium/high); code enforces floors and ceilings and sends the result as a per-message effort statement so the prompt cache is kept.
cobanov/awesome-jevClaude Opus 5.5 with the effort level re-decided every step by the TypeSafe Jev reflex — without breaking the prompt cache. CLI + Claude Code plugin.
hellogumbo/awesome-jevRuns Claude Opus 5.5 with the effort level re-decided by Jev at every step, without breaking the prompt cache; CLI plus Claude Code integration.
MrJev/awesome-jev
Frequently asked questions
What does Jev decide?
The reasoning effort for Claude's next API call, re-decided after every tool batch.
Why doesn't it break the prompt cache?
It changes effort only through per-message statements that stay in history, so the request prefix never changes.
Which keys work?
A TypeSafe key or an OpenRouter key; without either it uses local heuristics.
Related projects
Multi-agent orchestration layer for Claude Code with opt-in Jev hooks for fast judgment points, decision caching and egress controls.
PluginproductionTypeScriptOne skill and MCP server for Claude Code, Codex and Hermes where Jev gates large-model turns, routes models and guards Git steps.
MCP serverbetaPythonOpenCode orchestrator that keeps a cheap sticky parent model and escalates to strong child subagents only when Jev flags a hard turn.
ProjectbetaTypeScriptAdaptive thinking-level router for Pi: Jev or local rules pick low/medium/high/xhigh at task start, on reasoning failures and when stable.
ProjectbetaTypeScriptGateway that batches agent control questions through Jev and calls a generative LLM only when policy says generation is needed.
ServiceprototypeTypeScriptClaude Code plugin that routes every subagent spawn through Jev to pick its model, effort and tool profile.
Projectprototype