Frontier quality.
~40% less.
Router sends every call to the most efficient model in your pool that passes your evals. More accepted work per dollar, in minutes, without touching your code.
One model answers everything. So everything pays the frontier rate.
- route a webhook payload
- translate a string table
- classify a support ticket
- rewrite a commit message
- summarize tool output
- extract invoice fields
- answer from retrieved docs
- review a small diff
- debug a failing test
- write the migration
- plan the refactor
Classifying a ticket and planning a refactor are not the same job, but they leave on the same wire and land on the same invoice line. The gap between the two bars is not a discount waiting to be found — it is work you already did, priced as if it were the hardest thing you asked all day.
Nobody picks a cheaper model by hand, because nobody wants to be the person who quietly made the product worse to save a few hundred dollars.
So make the gate decide. Cheapest candidate that still passes.
Router scores every model in your pool against your own eval suites — the ones you already trust to tell you whether a release is safe — and sends the call to the cheapest one that clears them. Not the smallest model. Not the fastest. The cheapest one that passed.
If nothing passes, nothing moves. The frontier model keeps the call and you are exactly where you started, minus a few milliseconds.
- $3.00claude-sonnet-4.6serving today · Anthropic list
- $2.50gpt-5.4cleared the gate · OpenAI list
- $0.75gpt-5.4-minicleared the gate · OpenAI list
Cheapest row that cleared the gate wins the call. gpt-5.4-mini serves it; the frontier model keeps everything that still needs it.
the rest of your pool, on your own keys
Prices shown are catalog list, August 2026. A model the catalog doesn't price is never drawn as the cheap one.
Nine weeks of your own traffic, replayed. The rate fell. The gate didn't.
The blended rate falls because the work moves, not because the bar does. Both lines are drawn from the same replay, on the same gate, so the flat one is the reason the falling one is allowed to count.
Replayed production traffic, August 2026 · modeled at list prices · methodology in docs
No suite slipped
Pass rate per suite, before and after.
- retrieval94% → 94%
- tool use91% → 92%
- codegen88% → 88%
- extraction96% → 95%
the flat line on the chart, itemized
Where the traffic settled
Share of routed calls, by model tier.
- small tier46%
- mid tier31%
- frontier23%
frontier keeps the quarter of calls that still need it
Routing overhead
Decision time across the replay window.
choosing is cheaper than the call it replaces
Nothing moves until it has earned the move. Five stages. One gate. One way back.
- recordreal traffic, captured. Nothing changes.
- replaycandidate pools scored against the recording
- shadowrouted in parallel, compared, not served
- canarya slice of live traffic, watched against the gate
- activeand if the gate slips, it rolls itself back
A canary that drops below the gate doesn't page anyone. It reverts, and the previous route keeps serving.
Your side of it is one line. Not a rewrite. Not a wrapper.
- 01Point your base URL at Routerone line, in your SDK or your agent's env
- 02Pick your model poolthe providers you already hold keys for
- 03Set your eval gatethe suites a model has to clear to earn traffic
Router speaks the OpenAI-compatible API. Your tools, your streaming and your error handling are untouched.
import OpenAI from "openai";const client = new OpenAI({baseURL: "https://router.caveman.so/v1",apiKey: process.env.CAVEMAN_API_KEY,});
export OPENAI_BASE_URL=https://router.caveman.so/v1export ANTHROPIC_BASE_URL=https://router.caveman.so/v1claude # codex, cursor-agent, or your own loop
Now put your own numbers in it. The delta is shown, not editable.
Not an input. The replayed-traffic benchmark figure, held fixed. Pool spans $0.75–$3.00 / 1M input at list price.
$24,000 of $40,000 routed through the pool · $115,200 a year
Modeled on replayed traffic at list prices, August 2026. An estimate, not a bill.
The short answers.
What is Router?
Model routing inside the Caveman Platform request path. Every call goes to the most efficient model in your pool that passes your evals — or stays exactly where it is.
How does it decide where a call goes?
It scores each candidate on your own eval suites, then picks the cheapest one that clears the gate. A model that hasn't earned a class of traffic never sees it.
What happens on a quality regression?
Rollout is eval-gated end to end: record, replay, shadow, canary, active. If a canary drops below the gate, traffic rolls back automatically and the previous route keeps serving.
Do I have to change my code?
One base URL. Router speaks the OpenAI-compatible API, so your existing SDK calls, tools and streaming keep working unchanged.
Does it work with coding agents?
Yes. Claude Code, Codex, Cursor and anything else that reads a base URL from its environment routes through Router the same way production traffic does — one exported variable, no wrapper.
Which providers?
OpenAI, Anthropic, Google, Meta, Mistral and DeepSeek, on your own keys. Your pool is whatever subset you choose.
How is ~40% measured?
Replayed production traffic over a nine-week window, scored on the same eval gates and modeled at published list prices. It's a benchmark, not an invoice — the methodology is in the docs.
When can I use it?
Router is in private development. Join the waitlist and we'll reach out when there's something to point your base URL at.