Harness Router
Agent tool router that keeps obvious calls on a fast path, uses Jev via OpenRouter for ambiguous tool choices, and offers bounded MCTS.
Overview
Harness Router chooses the next tool inside an existing agent loop. Given a goal, the current observation and the available tools, it returns a tool choice with confidence, or a fallback to the host planner. It uses Jev through OpenRouter for discrete decisions, caches reusable choices, and supports optional Monte Carlo Tree Search over simulated outcomes when multi-step consequences matter, with Jev as an optional prior. The host still generates arguments, checks permissions, executes the tool and processes results.
It integrates as a stdio MCP server with route and route_mcts tools, as a Codex skill and hook, and through a Python API. Decision records, including goal and observation text, are stored locally, and the README advises keeping secrets out of routed state. Without an OpenRouter key, route returns a fallback, and MCTS can run locally without the Jev prior. It is alpha.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which available tool should be used next for this goal and observation? | — |
How it works
- Host sends goal, observation and tool descriptors
- Fast path or cache resolves obvious choices
- Jev decides ambiguous choices; MCTS for multi-step cases
- Return tool, confidence, fallback and reason
Strengths
- Model calls only for ambiguous choices
- MCTS for multi-step planning
- MCP and Codex integrations
Caveats
- Alpha status
- State and tool descriptions sent to the provider
Getting started
uv tool install harness-router with MCP support, then configure harness-router-mcp in your MCP host with OPENROUTER_API_KEY.At a glance
- Type
- MCP server
- Status
- prototype
- Language
- Python
- Runtime
- CLI, MCP server, Python API
- Has code
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Coding agents: framework-agnostic tool router that keeps obvious calls on a fast path, uses Jev for genuinely ambiguous choices, and can apply bounded MCTS when multi-step consequences matter, with MCP plus Codex skill and hook integrations.
yibie/awesome-jevFast decision routing for agent harnesses — native MCP with Jev for tool selection and MCTS for multi-step decisions.
logicrw/awesome-jev-projectsRoutes an agent's tool calls, as a hook on every call or a skill you invoke, with MCTS for multi-step decisions.
MrJev/awesome-jev
Frequently asked questions
When is Jev called?
Only for genuinely ambiguous tool choices not resolved by the fast path or cache.
What is MCTS used for?
Choosing the first tool when multi-step consequences matter.
What happens without a key?
route returns a missing-key fallback; MCTS can run without the Jev prior.
Related projects
MIT plugin and local MCP server that hands an agent's closed questions to Jev or local Laya, with policy gates and receipts.
Agent skillproductionPythonClaude Code and Codex skill that routes a task to one of 27 specialist roles, with an optional Jev engine for catalog selection.
ProjectbetaPythonOrchestrator 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.
HookbetaJavaScriptPer-prompt capability router for coding agents that picks at most one installed skill, MCP server, subagent or command via Jev, or none.
MCP serverbetaTypeScriptAgent toolkit for Claude Code and Codex whose optional /d router uses Jev to pick agents, skills and workflows and gate dispatch on intent.
ProjectbetaPython