Multi-subscription router · Tauri desktop app

Merge every AI coding plan into one virtual subscription

Stacked subscriptions but Claude Code can only talk to one vendor at a time? cc-router speaks every mainstream LLM API, so quota from almost any model — DeepSeek, GLM, Kimi, Qwen, Gemini, OpenAI and more — pools into one virtual plan: sequential, round-robin or sticky, with automatic failover when one hits its rate limit.

MIT open sourcemacOS · Windows · LinuxLocal proxy · data stays on device
DeepSeek GLM Kimi MiMo Qwen Every plan → 1 plan
How it works

The whole picture, in one sketch

Any tool → 4 inbound protocols → cc-router → 4 outbound protocols → almost any LLM.

Clients
Anthropic-protocol clients
Claude Code · Claude Desktop
Codex clients
Codex CLI · Codex App
OpenAI-compatible clients
Open WebUI · Cherry Studio
Your code / agents
Anything that can send HTTP
In · 4 protocols
POST /v1/messages
Anthropic Messages
POST /v1/responses
OpenAI Responses
POST /v1/chat/completions
OpenAI Chat Completions
POST /v1/systemone
Jev System One
Local proxy
cc-router
127.0.0.1:23456
  • Any chat protocol in, any out
  • Virtual models: set up your tool once
  • Sequential / round-robin / sticky
  • Auto-switch on rate limit or error
Jev decision lane
Passed through as-is, model-jev only
Out · 4 protocols
Anthropic-compatible
DeepSeek · GLM · Kimi · Qwen …
OpenAI-compatible
OpenAI · Workers AI · vLLM …
Gemini-compatible
Google AI Studio · Interactions
Jev System One
TypeSafe · Cloudflare Clef · OpenRouter
Any compatible endpoint plugs in — just add its URL
Features

One local proxy. Every coding plan you own.

cc-router spins up a local proxy that speaks Anthropic, OpenAI and other mainstream protocols on both sides. Your tools talk to it; it forwards to almost any LLM by the rules you set.

Almost any LLM

Speaks Anthropic, OpenAI, Gemini and Jev System One upstream. DeepSeek, GLM, Kimi, Qwen, Gemini, OpenAI and more are built in — Token Plan, Coding Plan and pay-as-you-go API, all ready to go.

Virtual models: same name, any model

Set the model name in your tool once; which vendor and model answer it is changed in cc-router. One name can hold several plans — hard tasks go to strong models, chores to cheap ones.

Automatic failover

Rate limit, 429 or error? The router switches to the next upstream. Sequential, round-robin or sticky — your agent never notices.

4 inbound protocols, any tool

Anthropic Messages, OpenAI Responses and OpenAI Chat Completions for chat, so Claude Code, Codex and Cherry Studio plug straight in — plus a Jev System One entry that brings decision models under the same scheduling.

Bring your own endpoint

Built-in providers not enough? Anything speaking Anthropic Messages, Gemini or OpenAI Responses / Chat Completions drops in with first-class scheduling.

Local HTTPS

Generate a self-signed CA and server certificate in one click, so HTTPS-only clients — the Claude Desktop app among them — can reach cc-router.

Any model name works

Whether your tool says claude-opus-4-7, gpt-5.5 or model-opus, it lands on the same virtual model — no renaming just for cc-router.

Usage receipts

Export a token-spend snapshot as PNG, PDF or HTML in 8 themes — usage-only by default.

Trilingual UI

Simplified Chinese, English and Japanese — auto-follow your system or pick manually.

Scheduling

Sequential, round-robin or sticky?

Sequential

Drain A first, then B. Great cache hit rate, perfect for squeezing small plans.

Round-robin

Split traffic evenly. Caches across accounts are independent, so quota burn is higher in exchange for real load balancing.

Sticky

One session stays pinned to one vendor, keeping cache hits while still spreading load across accounts.

Screenshots

See exactly what it does

Configuration, logs, usage receipts — everything in one app.

Live routing
Terminal UI

Manage it from the terminal, too

cc-router-tui lets you watch and manage the running cc-router right in your terminal — everyday tasks are a few keystrokes away.

cc-router-tui
  • Overview: today’s requests, hourly traffic, subscription health and quotas
  • Subscriptions: enable/disable, test connections, refresh models and balances, change slots
  • Virtual models, live routing and request-log details — press ? for every key binding

Turn it on under Settings → Security & Access → Terminal UI (local connections only; the desktop app must stay running). After “Add to PATH”, just type cc-router-tui in any terminal.

cc-router terminal UI overview
Receipts

Eight receipt themes to pick from

Export a token-spend snapshot as PNG, PDF or HTML — usage only, no prices, by default.

  • Diner check
  • Window label
  • German market
  • Pharmacy style
  • French marche
  • Minimal
  • US megastore
  • Japanese receipt

Sample data is trimmed; a real export lists every subscription and real model under each slot.

Window label
Diner check
Japanese receipt
FAQ

Frequently asked

What problem does cc-router solve?
Without it, your AI agent can only talk to one vendor at a time — small plans run out at the worst moment and you switch configs by hand. With cc-router in front, your agent transparently load-balances and fails over across vendors A, B and C. Three plans behave like one.
What is a virtual model?
A model name served by cc-router, such as model-opus. Your tool only ever uses that name; the real model behind it is whatever you pick in cc-router — swap it any time, or hang several plans on it in rotation. Claude Code already sends harder work to bigger tiers, so strong models get the hard tasks and cheap ones the chores. You save money and stop editing settings.json.
Sequential, round-robin or sticky?
Sequential: drain A first, then B. Great cache hit rate, perfect for squeezing two small plans. Round-robin: split traffic evenly, but caches across accounts are independent so total quota burn is higher in exchange for real load balancing. Sticky: one session stays pinned to one vendor, keeping cache hits while still spreading load across accounts.
Does Codex work too?
Yes. cc-router serves Anthropic /v1/messages, OpenAI /v1/responses and /v1/chat/completions at the same time. Codex CLI and the Codex desktop app connect through /v1/responses and share the very same subscription pool and scheduling rules as Claude Code.
What is a Jev decision model? Can Claude Code use it?
Jev (System One) is a family of structured decision models: you give it a state and a set of questions, and it returns a structured answer for each — no chat text, so it cannot write code for Claude Code. It is meant for your own programs and agent frameworks calling /v1/systemone; cc-router pools keys from TypeSafe, Cloudflare Clef and others under model-jev and schedules them together.
Is this a reverse-engineering tool?
No. cc-router only forwards requests; the body is passed through nearly verbatim. It does not reverse, jailbreak or bypass anything. Users remain responsible for following each plan's Terms of Service.
Does my data go to the cloud?
No. cc-router is a pure local proxy bound to 127.0.0.1:23456. All forwarding happens on your machine. There is no telemetry or external traffic beyond the provider APIs you configure.

Make one subscription work like many.

MIT open source · macOS · Windows · Linux · Local proxy · data stays on device