jev-route
Async Python intent and tool router: Jev picks the handler, and a code-side confidence gate stops weak or invented decisions.
Overview
JevRoute is an embeddable Python library that sits in front of an agent's own tools and handlers. You register callables with decorators such as @router.intent and @router.tool, the router asks Jev which capability should handle an input, applies a confidence gate, and only then invokes the matching handler. The README contrasts it with harness adapters (CLIs, IDE plugins, proxies) that add a decision step to a runner you did not write: here the agent owns the loop and routing is one await inside it.
Safety is enforced in code rather than requested in a prompt. The client returns a typed response with the winner, confidence, per-option scores and the engine's own abstention signal; below the threshold the winner is discarded and a fallback handler runs or the decision abstains. A winning label the engine invented is resolved against the router's own registry and degraded to the fallback with a warning, and executing an unregistered target raises an error. So a weak or hallucinated decision cannot reach a privileged tool such as issuing a refund. It is async, typed, tested with an injectable mock transport, and published on PyPI.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which registered intent or tool should handle this input? | — |
| Yes / no | Should the router abstain on this input? | yes · no |
How it works
- Register handlers with @router.intent or @router.tool
- Call the router with the input
- Jev returns a winner, confidence and per-option scores
- Below threshold or unknown label, run the fallback or abstain
- Otherwise invoke the registered handler
Strengths
- Weak or invented decisions never reach privileged tools
- Plain library inside your own process
- Testable with exact thresholds and mock transport
Caveats
- Requires a TypeSafe key
- Thresholds must be chosen per application
Getting started
pip install jev-route, then register handlers on a router and await its routing call.At a glance
- Type
- Project
- Status
- beta
- Language
- Python
- Runtime
- Async library
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Async, typed intent & tool routing for Python agents: Jev decides, a confidence gate stops weak decisions before they reach a privileged tool.
logicrw/awesome-jev-projects
Frequently asked questions
What does Jev decide?
Which registered intent or tool should handle an input.
What if Jev invents a label?
It is resolved against the registry and sent to the fallback with a warning, never executed.
How is it different from harness plugins?
It is a library inside your own agent, so your code owns the gate and the loop.
Related projects
Plugin suite adding Jev judgments to DeepSeek Harness: tool pruning, dead-loop blocking, a safety guard and skill routing.
PluginbetaTypeScriptDiscontinued DeepSeek Harness decision layer whose policies let Jev only narrow permissions and fail closed; successor is jevcore.
ProjectprototypeTypeScriptMIT plugin and local MCP server that hands an agent's closed questions to Jev or local Laya, with policy gates and receipts.
Agent skillproductionPythonCognitive control layer for OpenCode that uses Jev to compute GO, DELIBERATE, VERIFY or BLOCK for agent actions, observing by default.
ProjectbetaTypeScriptDeepSeek Harness plugin registering a jev_decide tool so the agent can ask Noul, Choice or Score questions and gate on probabilities.
PluginbetaTypeScriptHermes Agent plugin that classifies each turn's route (skill, research, history, others) with Jev before the model call.
PluginbetaPython