sabi
Host-agnostic routing layer that picks model, effort and provider per round for coding harnesses from trajectory evidence.
Overview
Sabi sits between a coding harness and the models it can call. The harness keeps its own loop, tools, permissions and approvals; Sabi reads trajectory evidence such as tool calls, results, failures, context pressure, capabilities and provider state to choose the capacity needed for the next inference round, rather than one model for the whole task. It has two boundaries: inference routing (model and provider per round) and controller handoffs (continue, delegate or spawn).
It installs once at user scope as a controller with hooks, a daemon and a local OpenAI-compatible proxy, works with Claude Code, Codex, OpenCode and Hermes, and also ships as a Command Code mod and an agent skill. The fetched README does not mention Jev or a decision model specifically; it is listed in Jev directories as an adaptive inference scheduler, so the routing judgment is where a decision model would fit. The README is careful to say a hook install is not model switching and a mock pass is not a savings benchmark.
What the decision model decides
| Type | Question | Answers |
|---|---|---|
| Choice | Which model, effort and provider should serve the next round?(inferred) | — |
| Choice | Should the controller continue, delegate or spawn? | continue · delegate · spawn |
How it works
- Harness runs its normal loop
- Sabi collects trajectory evidence each round
- Choose model, effort and provider for the next inference
- Proxy the call or hand off via the controller
Strengths
- Per-round capacity rather than one model per task
- Harness keeps its own tools and approvals
- Falls back to the normal path if Sabi is unavailable
Caveats
- Jev/decision-model use not stated in the fetched README
- Savings not benchmarked per its own caveats
Getting started
npm install --global @vizuh/sabi-controller && sabi setup && sabi doctor && sabi serveAt a glance
- Type
- Proxy
- Status
- beta
- Language
- TypeScript
- Runtime
- Local proxy, hooks and daemon
- Has code
- yes
- Has tests
- yes
- License
- MIT
Use cases and integrations
How curated lists describe it
Adaptive inference scheduling for AI agents — per-round model, effort and provider routing for coding harnesses: a Command Code mod or a local OpenAI-compatible proxy.
logicrw/awesome-jev-projects
Frequently asked questions
What does Sabi decide?
The model, effort and provider for each inference round, and whether to continue, delegate or spawn.
Does it use Jev?
The fetched README does not say; it is listed in Jev directories as a routing layer.
Does it replace my harness?
No; it is a routing layer and the harness keeps its own loop.
Related projects
Cost-, cache- and quota-aware LLM router that classifies each turn with a Jev-class model, prices every route, and checks cheap answers.
ProjectprototypePythonLocal-first, outcome-aware model router for coding harnesses that picks a capability tier per task with Jev and learns from history.
ProjectprototypeRust- jev-router★ 593
Per-turn model routing for Claude Code and Codex: wraps the real CLI and lets Jev send simple turns to fast models and hard ones to strong.
ProxybetaJavaScript TypeScript/Bun launcher that asks Jev which model and reasoning effort each Codex, Claude Code or Pi turn should use.
ProjectbetaTypeScriptGo CLI model router that uses one Jev analysis to recommend a model, harness and effort level, then selects deterministically.
CLIbetaGoClaude Code and Codex plugin where Jev judges each turn for model routing, delegation, evidence search and compaction.
ProjectbetaTypeScript