Skip to content

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.

ProxybetaMIT

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

TypeQuestionAnswers
ChoiceWhat reasoning effort should the next API call use?low · medium · high
ScoreHow difficult is the current step (0-4)?—
Yes / noAre checks currently failing?(inferred)yes · no

How it works

  1. A prompt arrives or a tool batch finishes
  2. Jev answers effort-related Choice, Score and Noul questions
  3. Code applies floors, ceilings and recovery rules
  4. Effort is inserted as a per-message statement before the next call
  5. 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 claude

At 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-jev
  • Unofficial 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-models
  • Claude 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-projects
  • Runs 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-jev
  • Claude 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-jev
  • Runs 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.

    PluginproductionTypeScript
  • One skill and MCP server for Claude Code, Codex and Hermes where Jev gates large-model turns, routes models and guards Git steps.

    MCP serverbetaPython
  • OpenCode orchestrator that keeps a cheap sticky parent model and escalates to strong child subagents only when Jev flags a hard turn.

    ProjectbetaTypeScript
  • Adaptive thinking-level router for Pi: Jev or local rules pick low/medium/high/xhigh at task start, on reasoning failures and when stable.

    ProjectbetaTypeScript
  • Gateway that batches agent control questions through Jev and calls a generative LLM only when policy says generation is needed.

    ServiceprototypeTypeScript
  • Claude Code plugin that routes every subagent spawn through Jev to pick its model, effort and tool profile.

    Projectprototype