mrkeyoor.com_
Thu 17 Sept 20:42 UTC
AI Toolsevaluationupdated 26 Aug 2026

claude-code-router review

Claude Code Router is a local gateway that puts several coding agents behind one provider, model, credential, routing, and logging layer. Its English README is the primary page and a Chinese translation is available; the app supports Claude Code, Codex, OpenCode, Kimi CLI, and other compatible clients while translating requests across several model API formats.

+114stars / 7d
Verdict

Our Claude Code Router install pulled 1,892 packages and 493 MB, then the release build stopped at 32 seconds for a missing GH_TOKEN, so this is a substantial control plane rather than a tiny proxy. Use it when several agents and providers already create enough configuration churn to justify one local routing and observability layer. Pin release 3.0.22, keep the gateway local by default, and test every protocol conversion your workflows depend on before putting fallback routing into daily use.

We ran it

Lab card: what happened when we ran claude-code-routerScreenshot of claude-code-router (ccrdesk.top)
Install✓ · 26s1892 packages · 493 MB
Build✗ · 32s
Tests✗ · 216s5 passed · 0 failed of 5 (node:test)
Known vulns00 critical · 0 high · 0 moderate · 0 low (npm audit)
Repo788 files~227,949 lines of source · 49.2 MB · 3 CI workflows · Dockerfile · tests dir

Answers from our run

Does claude-code-router build from source?

Dependencies installed in 26 seconds (1892 packages), and the build failed. We cloned commit 829298c into a clean Debian container with 3 CPUs and no project-specific setup.

Do claude-code-router's tests pass?

Yes: 5 of 5 passed when we ran the project's own test command (node:test). Some failures need services or credentials a bare container does not have.

Does claude-code-router have known vulnerabilities in its dependencies?

npm audit found none in the dependency tree at the time of our run.

Who should not use claude-code-router?

Developers using one agent with one provider: the router adds a 1,892-package control plane, local gateway, UI, and another failure boundary.

What are the alternatives to claude-code-router?

LiteLLM, Portkey AI Gateway, One API. Our Claude Code Router install pulled 1,892 packages and 493 MB, then the release build stopped at 32 seconds for a missing GH_TOKEN, so this is a substantial control plane rather than a tiny proxy.

Setup3/5Ready-made apps, but a large install and failed source release build
Docs5/5Detailed English quick starts, architecture, CLI, and Docker guides
Community5/5Daily fixes and releases across 1,096 open items
Maturity3/5Broad 3.0.22 product, with protocol and desktop edge reports

Discussed on

  1. hnClaude Code Router160 points

Who it’s for

Developers who use several coding agents and want one local endpoint for provider and model changes.
Teams that need ordered fallbacks, credential pools, routing rules, request logs, quotas, and per-agent profiles.
Users testing Anthropic, OpenAI, Gemini, OpenRouter, DeepSeek, Kimi, Mistral, or custom compatible providers from the same clients.
Operators prepared to protect a gateway that holds model credentials and sees prompts, responses, token counts, and tool calls.

Who it’s NOT for

Developers using one agent with one provider: the router adds a 1,892-package control plane, local gateway, UI, and another failure boundary.
Teams that require exact cross-protocol fidelity without acceptance tests: an open report for 3.0.21 says Anthropic image blocks were silently dropped when translated to OpenAI chat completions.
macOS users expecting in-app updates to work unattended: an open report says the shipped app was ad hoc signed and failed update signature validation.
Claude CLI-only users who do not want desktop configuration touched: an open change request says the router rewrites Claude's desktop config even when a profile is marked CLI only.
Contributors expecting an offline release build: our AppImage job stopped after packaging work because GH_TOKEN was not set.

Setup reality

Our sandbox installed 1,892 npm packages in 26 seconds and used 493 MB. At commit 829298c, the build ran 32 seconds and failed with exit 1 after Electron extraction and AppImage block-map work because GH_TOKEN was not set. npm audit reported 0 known vulnerabilities.

The test command also exited 1 after 216 seconds. Its node:test summary reported 5 passed and 0 failed out of 5, while the supplied log tail showed successful cases numbered 172 through 183. The available tail does not show why the outer command failed, so we do not guess.

Normal users can install desktop release 3.0.22, use the Node 22+ CLI, or run Docker Compose. They still need provider API keys, agent profiles, and a local gateway on port 3456; the management UI uses 3458. Remote exposure requires authentication, restricted client keys, and deliberate log and credential handling.

One local endpoint can simplify several coding agents

Claude Code Router, or CCR, runs a model gateway on 127.0.0.1:3456 and gives coding agents a stable endpoint while providers change behind it. The desktop or browser UI manages provider keys, model catalogs, agent profiles, routing conditions, retries, and ordered fallbacks. Logs record the resolved route, credential, status, latency, token usage, estimated cost, tool calls, and agent traces.

Claude Code, Claude Design, Codex, Grok CLI, Kimi CLI, Kilo Code, OpenCode, Pi, ZCode, and WorkBuddy are documented. Provider adapters cover Anthropic, OpenAI Chat and Responses, Gemini, OpenRouter, DeepSeek, Kimi, Mistral, Z.AI, Bailian, and custom compatible endpoints. This is useful when a developer genuinely switches among several combinations. It is unnecessary machinery for one client and one API key.

Routing adds resilience and translation risk

CCR can choose models from request headers and bodies, rewrite requests, rotate credentials, retry, and fall back through an ordered list. Separate client keys can expire and carry request, token, or image limits. Fusion features add vision, web search, and MCP tools to model routes, while ToolHub and gateway plugins extend the local service. These controls turn a proxy into a policy layer.

Every protocol adapter is also a place where meaning can change. Open issue 1678 reports that version 3.0.21 silently dropped Anthropic image blocks when translating them to an OpenAI chat-completions provider. Text still arrived, the request returned HTTP 200, and the model behaved as if no image existed. Release 3.0.22 mentions repair of Fusion vision inputs, but the report remained open during our research. Test image, tool, reasoning, streaming, and error cases on the exact route you use.

What happened when we ran it

Our sandbox cloned commit 829298c and installed 1,892 npm packages in 26 seconds. Dependencies occupied 493 MB, while the full checkout was 49.2 MB across 788 files and roughly 227,949 source lines. npm audit reported 0 known vulnerabilities at critical, high, moderate, or low severity. The container had 3 CPUs, 8 GB of RAM, and no secrets.

The build failed with exit 1 after 32 seconds. Electron's Linux files had extracted, dependency scanning ran, and the log reached AppImage creation and embedded block-map work. It then reported that no GitHub Personal Access Token was set programmatically or through GH_TOKEN. Warnings also mentioned duplicate dependency references, a missing desktop name, and a default Linux application category, but the explicit terminal error was the missing token. We do not assign another cause.

The test command failed with exit 1 after 216 seconds. The node:test summary supplied by the lab says 5 passed, 0 failed, out of 5. The final log lines show successful cases numbered 172 through 183, including token formatting, request-log summaries, Fusion profile saves, and media-model bindings. Because that tail contains no failing assertion or wrapper error, it does not explain the nonzero outer exit. The honest result is a failed command with passing reported cases and an unresolved exit source.

The repository has 3 CI workflow files, a Dockerfile, a Compose file, a tests directory, and monorepo workspaces. Our failed release-oriented build does not mean the published desktop binaries cannot run. It means contributors should not expect that target to finish in a secret-free sandbox, and the build script could separate local packaging from GitHub publication more clearly.

Three installation paths serve different owners

The README recommends the desktop app for macOS, Windows, and Linux. Version 3.0.22 has Windows, Linux AppImage, and separate Apple Silicon and Intel macOS downloads. After launch, a user adds a provider, starts the server, applies an agent profile, and checks Logs for the resolved route. This is the shortest path for one developer managing local tools.

The CLI requires Node.js 22 or newer and exposes its management UI on 127.0.0.1:3458; the gateway remains on port 3456. Docker Compose uses port 3458 for management and routes by default. Both are better for a headless machine, but remote access changes the threat model. The gateway contains provider credentials and observes requests, responses, and usage. Put authentication and network restrictions in front rather than binding it broadly for convenience.

Desktop packaging has platform constraints. The README says Windows packaging must run on Windows x64 because better-sqlite3 includes a native Electron module. An open report says macOS builds from versions 3.0.18 through 3.0.20 were ad hoc signed and could not pass the updater's signature check, forcing manual updates. It also reports Gatekeeper rejection. Verify the signing state of 3.0.22 on your own Mac before relying on auto-update.

Release pace is fast, and the queue is large

Release 3.0.22 was published August 24, 2026, one day before the last recorded push. Its changes include fixes for multi-byte streaming chunks, usage-token normalization, Claude Code authentication hooks, account meters, OpenAI Responses session IDs, failed media-download cleanup, and oversized JSON previews. GitHub showed 1,096 open issues and pull requests, with same-day work on OpenAI tool schemas, profile syncing, model context overrides, and provider fields.

That count combines proposed features, support requests, pull requests, and defects, so it is not 1,096 bugs. The pace suggests active maintenance, while the range of recent fixes shows how many edges a multi-protocol gateway owns. Pinning a release is safer than following the latest container tag, especially when route translation can silently alter content.

Use CCR only when central control pays for itself

CCR is the most approachable option here for a developer who wants a desktop control panel around several coding agents. It centralizes keys, profiles, fallbacks, quotas, and logs without requiring a shared infrastructure deployment. LiteLLM and Portkey are better fits when the gateway is a server product for many applications rather than a personal agent console.

The cost is 1,892 dependencies, sensitive local state, client-configuration writes, and protocol adapters that demand tests. Start with one provider and one noncritical agent profile. Confirm text, images, tools, streaming, fallbacks, and log redaction, then add routes. If those checks feel excessive for your use, direct provider configuration is simpler and safer.

Alternatives

ProjectWhat it isPick it when
LiteLLM gh↗A provider gateway and proxy centered on an OpenAI-compatible API, budgets, fallbacks, and observability.pick this instead when a server-oriented model gateway matters more than desktop coding-agent profile management.
Portkey AI GatewayAn open AI gateway for routing, fallbacks, retries, and request controls across model providers.pick this instead when the gateway belongs in shared infrastructure and you do not need CCR's agent-specific desktop UI.
One APIA self-hosted API management layer that presents multiple model channels through one service.pick this instead when multi-user API distribution is the job and coding-agent integration is secondary.

Sources

  1. Claude Code Router README
  2. Claude Code Router 3.0.22 release
  3. Anthropic to OpenAI image-loss report
  4. Claude desktop config sync request
  5. macOS update-signature report

More ai tools reviews

rowboat · skills · superpowers-zh · yolov5 · eve · MemOS · the whole board →