Skip to content

System One Router

A Go gateway that speaks the OpenAI and Anthropic APIs and handles model: "auto" by asking a decision model four typed questions about the prompt — topic, complexity, risk and private data — then scoring models in config.yaml and calling the cheapest one above the quality floor.

Stars
3
Language
HTML
License
APACHE-2.0
Published by
Community
Author
mmornati
Last verified
Oct 2026

About this project

Fast thinking picks the model. Slow thinking answers. An OpenAI- and Anthropic-compatible gateway where a tiny, cheap "System One" decision model picks the right "System Two" LLM for every prompt: the cheapest one that is good enough. Getting started · How it works · Claude Code & MCP · Benchmark · All docs.

Quoted from the project's README. Read the full README.

Highlights

  • Routing is plain arithmetic over config.yaml rather than a prompt asking an LLM to route, so a decision is reproducible and inspectable.
  • A pre-check screens secrets, PII and request size before anything leaves, and private: local_only keeps such requests on local models or refuses them.
  • Optional check-and-escalate spends one yes/no call judging the finished answer and re-sends a weak one to a stronger model exactly once.
  • Decisions, checks and ratings are logged to decisions.jsonl, and cmd/refit re-fits per-model skills from that log against peers at the same difficulty.

Watch out

The headline figures come from 80 labelled prompts on one pinned Jev version: 89% topic accuracy, 72% agreement with human route labels, 43% lower model cost than always sending to Opus, and a 268 ms p50 decision. That is one small labelled set, not a production trace, and the Jev-versus-Laya comparison lives in a separate doc. Unless you run the Laya sidecar locally, everything routes through OpenRouter and needs a key in .env. Turning on check-and-escalate adds a second model call to every turn, so the cost saving assumes you leave it off. Refitting skills from your own logged outcomes is a data-collection project, not a switch. The README also carries a roadmap doc that marks some of this as still ahead. Copy reviewed against the repository README on 2026-10-04, not from running it.

Questions about this entry

Short answers drawn from the linked project or page.

More Jev resources like this

7GitHub stars
Four read-only MCP tools that rank files, cut a file down to the relevant part and pick from long lists, measured on a frozen SWE-bench Lite split.
Jev Practices & Patterns#community#awesomejev#catalog-import
2GitHub stars
A TypeScript starter for the layer around the model: decision contracts, confidence thresholds that route to auto, fallback or human review, deterministic mock providers, and an offline evaluation harness.
Jev Practices & Patterns#community#awesomejev#catalog-import
3GitHub stars
Rust event bus where routing is a judgment call: one event plus one typed question per subscription goes to a Jev judge, and the calibrated probabilities decide drop, review or deliver.
Jev Practices & Patterns#community#awesomejev#catalog-import
Runs Jev as an LLM router over two public benchmarks, with a no-Jev ablation and RouterArena's own scorer so the numbers sit next to the public leaderboard.
Jev Practices & Patterns#community#jevbest#catalog-import
1GitHub stars
Runnable benchmark putting Jev, jev-preview and Claude Sonnet 5 through one real agent task — classifying a tool call as readonly, destructive, privileged or exfiltration — on the same 60 labelled cases, with raw per-call results committed.
Jev Practices & Patterns#community#awesomejev#catalog-import
0GitHub stars
Upworthy's randomized headline A/B tests, filtered to variants that shared an image: Jev picks the click winner 64.5% of the time on a held-out confirmatory split, and 74.7% when the real gap was decisive.
Jev Practices & Patterns#community#jevbest#catalog-import

From the Jev guides

Original write-ups on what this entry is for.

Most Jev accuracy problems are state problems. What belongs in a state, what is a pre-made judgment to leave out, and why naming the slice you ask about matters more than the wording.
Jev Practices & Patterns#state#design#primitives
Read article
A Noul returns one number and no separate confidence. How to read the value, pin its boundary with criteria, split compound questions, and set a per-action threshold that matches the cost of being wrong.
Jev Practices & Patterns#noul#primitives#confidence
Read article
A Score is a weighted position, not a ruler. Why the number can land between levels, why levels are judged separately, and how to combine several atomic scores in code instead of one crowded rubric.
Jev Practices & Patterns#score#primitives#scoring
Read article
Back to all resources

From the Jev community

Posts from builders shipping with Jev right now.

Follow @typesafeai