Router · coming soonfor coding agents and production traffic

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.

01Waste

One model answers everything. So everything pays the frontier rate.

a day of callscharged at one 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
what the call neededwhat the call cost
illustrative mix · catalog list prices

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.

02Decision

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.

candidatelist price / 1M in
  • claude-sonnet-4.6
    serving today · Anthropic list
    $3.00
  • gpt-5.4
    cleared the gate · OpenAI list
    $2.50
  • gpt-5.4-mini
    cleared the gate · OpenAI list
    $0.75

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

OpenAI
Anthropic
Google
Meta
Mistral
DeepSeek

Prices shown are catalog list, August 2026. A model the catalog doesn't price is never drawn as the cheap one.

03Evidence

Nine weeks of your own traffic, replayed. The rate fell. The gate didn't.

eval pass ratesame gate, every week92%blended rate · USD / 1M input$0$1$2$3$2.83$1.70~40% keptat list pricesw1w2w3w4w5w6w7w8w9replayed production traffic · nine weeks

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.

added latency, p505 ms

choosing is cheaper than the call it replaces

04Safety

Nothing moves until it has earned the move. Five stages. One gate. One way back.

  1. record
    real traffic, captured. Nothing changes.
  2. replay
    candidate pools scored against the recording
  3. shadow
    routed in parallel, compared, not served
  4. canary
    a slice of live traffic, watched against the gate
  5. active
    and 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.

05Work

Your side of it is one line. Not a rewrite. Not a wrapper.

  1. 01
    Point your base URL at Router
    one line, in your SDK or your agent's env
  2. 02
    Pick your model pool
    the providers you already hold keys for
  3. 03
    Set your eval gate
    the 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.

your SDK
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://router.caveman.so/v1",
apiKey: process.env.CAVEMAN_API_KEY,
});
your coding agent
export OPENAI_BASE_URL=https://router.caveman.so/v1
export ANTHROPIC_BASE_URL=https://router.caveman.so/v1
claude # codex, cursor-agent, or your own loop
Anything that speaks an OpenAI-compatible base URL.
06Receipt

Now put your own numbers in it. The delta is shown, not editable.

$40,000
60%
measured efficiency gain~40%

Not an input. The replayed-traffic benchmark figure, held fixed. Pool spans $0.75$3.00 / 1M input at list price.

what routing keeps, every monthlist price · estimate
$9,600/ month

$24,000 of $40,000 routed through the pool · $115,200 a year

→ with Router
same evals, same quality bar
$30,400 / mo
kept
$115,200 a year
$9,600 / mo

Modeled on replayed traffic at list prices, August 2026. An estimate, not a bill.

07Questions

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.

Route every call.
Keep the quality.

Stack