jev-harness-router
Per-turn router: one ~350 ms Jev call picks model tier, effort, tools and skill, with a hard deadline and regex fallback.
Overview
jev-harness-router decides how an agent turn should run before the harness spends time on the real work. It asks four questions about the turn in a single Jev call behind a deadline it may not miss: model tier and effort budget are derived in code from a Score of difficulty and scope; tools are chosen with one Noul per tool plus a ranking Choice; and the skill is a Choice over the catalogue gated by four request-shape Nouls. The route reports its source (Jev, cache, shortcut or fallback), and a regex fallback applies when the deadline passes.
You define a catalogue of models (cheapest first), tools with risk levels and skills. Against a keyword baseline on 181 labelled turns, 127 from the author's own Claude Code sessions, the README reports the right skill 90.0 percent of the time versus 59.4 percent, and under-provisioning the model on 3.3 percent of turns versus 19.9 percent. A Claude Agent SDK adapter is included.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Score | How hard is this turn and how much does it touch? | — |
| Yes / no | Does this turn need this tool? | — |
| Choice | Which skill fits this turn (or none)? | — |
How it works
- Define a catalogue of models, tools and skills
- Prewarm the router at startup
- For each turn, one Jev call answers all questions under a deadline
- Derive tier and effort in code; fall back to regex on timeout
Strengths
- Single call for four routing decisions
- Hard deadline with fallback
- Reported large gains over a keyword baseline
Caveats
- Evaluation on 181 turns from one author
- Requires a TypeSafe key
Getting started
`createRouter({ catalog })`, `await router.prewarm()`, then `await router.route({ message })`.At a glance
- Type
- Agent skill
- Status
- beta
- Language
- TypeScript
- Runtime
- Library with Claude Agent SDK adapter
- Has code
- yes
Use cases and integrations
How curated lists describe it
Per-turn router for agent harnesses: one 350ms Jev call picks the model tier, effort, tools and skill, behind a hard deadline with a regex fallback. Claude Agent SDK adapter included.
hellogumbo/awesome-jev
Frequently asked questions
What does Jev decide?
Turn difficulty, which tools are needed and which skill applies; tier and effort are derived in code.
What if Jev is slow?
A hard deadline triggers a regex fallback.
How well does it work?
90.0 percent correct skill versus 59.4 percent for a keyword baseline on 181 turns.
Related projects
Orchestrator that probes which coding agents are installed and logged in, then has Jev pick the best one for a task.
Agent skillbetaPythonHooks for Claude Code, Codex and pi that use Jev to suggest a skill each turn, plus a rule gate for subagent model routing.
HookbetaJavaScriptClaude Code plugin that asks Jev before each turn for reasoning effort, subagent model, strategy and skill, with a decision log.
Agent skillbetaTypeScriptExperimental plugin wiring Jev into coding-agent harnesses to pick skills, tools, models and browser moves, starting with OpenCode.
Agent skillprototypeTypeScriptChooses the model tier, skills and MCP servers for each coding-agent session with two Jev requests, then launches Claude Code or Codex.
MCP serverbetaPythonRouter that puts models, subagents, skills, MCP tools and CLIs in one candidate set and asks Jev one Choice about which handles the step.
MCP serverbetaTypeScript