DodoRouter
Get Started
Open source · OpenAI & Anthropic compatible

Every model. One dashboard.
Zero babysitting.

Point your agent at DodoRouter once. Then rewire providers, watch every request, and survive every outage — live, from the dashboard, without touching code again.

This is the product: a router that heals itself while you watch — or don't.

Drop-in compatible

Stop building reliability into every agent.
Build it once.

Change one line of code and every agent you build — today or next year — gets automatic fallback, full observability, and provider switching. No SDK changes. No deployment. Your agent code stays exactly the same.

  • One line change — update base_url and you're protected
  • Streaming, tool calls, and context window overflow handled automatically
  • Full request logs, headers, and error bodies for every failure — no more guessing

Automatic fallback

When a provider fails,
nobody notices.

Rate limits, outages, overloaded models, context overflows — your chain absorbs them all. The request silently reroutes to the next step and your user gets an answer, not an error page.

Primary Fallback Last resort
Build your chain

Reliability is just the beginning

Everything between your code and the model — handled, visible, and adjustable while it runs.

Mid-stream failure recovery

The stream dies. The sentence doesn't.

The cruelest failure mode: a provider drops the connection halfway through a streamed answer, with tool calls in flight. DodoRouter catches the dropped stream, re-issues the request on the next step in your chain, and keeps streaming to your client.

  • No broken half-messages in your UI
  • Tool-call state carried across providers
  • Logged as a fallback, so you can see it happened

Context-overflow rerouting

Too many tokens? Hop to a bigger window.

Every provider reports overflow differently — OpenAI throws a code, Anthropic says "prompt is too long", z.ai returns a 200 with a special finish_reason, Kimi 400s with the count. DodoRouter knows every dialect, and instead of guessing token limits preflight, it reacts to the real signal and reroutes to a model with room.

  • Per-provider overflow detection, maintained for you
  • Optional skip-fallback toggle when you'd rather fail fast
  • One standardized error if the whole chain is too small

Replay & compare

Audition models on your real traffic.

Wondering if a cheaper model could handle your workload? Take any logged request and re-run it against a different provider or model — the answers render side by side, diffed, with tokens and latency compared. No synthetic benchmarks; your production prompts are the benchmark.

  • Replay against any provider key you hold
  • Diff view highlights what actually changed
  • Replays never pollute your request stats

Rewire in production

Change everything. Deploy nothing.

Reorder steps, swap models, rotate keys, tune reasoning effort and temperature — from the dashboard, effective on the very next request. Your agent keeps its one base URL; the routing behind it is yours to remix at any hour, mid-incident, without a code change or restart.

  • Per-step model, key, reasoning effort, temperature
  • Takes effect instantly, no deploys or restarts
  • Client-sent options always win when present

Subscriptions as keys

Route through plans you already pay for.

Claude Max, ChatGPT Pro, Kimi Code, z.ai Coding — those subscriptions carry serious model quota. DodoRouter treats them as first-class provider keys (OAuth device flow built in, no token copy-pasting) so your chain can burn subscription quota first and fall back to pay-as-you-go API keys only when it runs dry.

  • Connect with a device-code login, not a pasted token
  • Mix subscription and API keys in one chain
  • Key health tracked — quota-dry keys flagged automatically

The flight recorder

Every request your agent ever made, inspectable.

One header groups requests into sessions; recordings capture whole conversations. Each request opens into a full picture — the conversation, the raw request and response, headers, and a per-step fallback trace with each provider's real error body. When something goes wrong, the cause is on screen, not in your imagination.

  • Failures lead with what the client saw and why
  • Cache-hit and cost analytics per model and provider
  • Live — new requests appear as they happen
OpenAI OpenAI
Anthropic Anthropic
MoonshotAI Moonshot
Z.ai z.ai
DeepSeek DeepSeek
Gemini Google
Grok xAI
Mistral Mistral
+ More soon

Providers

Any model.
One endpoint.

Route across OpenAI, Anthropic, Google, DeepSeek, Moonshot, and more through a single unified API. Mix providers in your fallback chains to optimize for cost, speed, and context window size.

GPT-5.5 Opus 4.7 GLM-5.1

Observability

Debug agent failures in minutes, not hours.

Full request logs with headers, response bodies, error details, and latency breakdowns for every step in your routing chain. Know exactly why a provider failed and what your agent saw.

Request Analytics

Last 7 days · all routers

Live

Total Requests

89,241

+23.4%

Success Rate

99.8%

47 fallbacks recovered

Avg Latency

312ms

-12% vs last week

Total Spend

$84.12

28.4M tokens

Request Volume

Success Fallback
MonTueWedThuFriSatSun

Pricing

Free while in beta

You bring your own provider keys — DodoRouter never marks up your tokens. Use the hosted instance or self-host the open-source release.

Self-hosted

Open source

Run it on your own box. Your keys and logs never leave your infra.

  • Everything in Hosted
  • Single-binary Elixir release
  • Hot upgrades — updates without dropping requests
  • MIT licensed
View on GitHub

FAQ

Questions, answered

Can't I just build this myself?

You can — a retry loop gets you 80% of the way. The last 20% is the hard part: streaming failures mid-response, tool-call state, every provider reporting context overflow differently, and the observability to debug any of it. DodoRouter is that last 20%, already built and battle-tested.

What happens when a provider fails mid-stream?

DodoRouter catches the dropped stream, re-issues the request to the next provider in your chain, and keeps streaming to your client — including handling content that was already sent. The request is logged as a fallback so you can see exactly what happened.

Do I need to change my agent code?

Nope. Change your base URL from api.openai.com to api.dodorouter.com and swap your API key. That's it. Same SDK, same types, same everything.

What does it cost?

DodoRouter is free while in beta — no credit card, no request caps, bring your own provider keys. It's also open source, so you can self-host it any time.

What providers do you support?

OpenAI, Anthropic, Google (Gemini), DeepSeek, Moonshot, z.ai, xAI (Grok), and Mistral. We're adding more every month. If you need a specific provider, let us know.

Point your agent at
something sturdier.

Create a router, add your keys, and make your first request in under two minutes. Free while in beta — no credit card required.