mrkeyoor.com_
Sun 01 Nov 21:57 UTC
AI Toolsevaluationupdated 30 Sept 2026

claude-code-router review

Claude Code Router is a local gateway that lets Claude Code, Codex, OpenCode, and other coding clients share provider accounts, routing rules, fallbacks, tools, and logs. It solves the mess of maintaining a separate model setup in every agent, but it also becomes the place where prompts and provider credentials converge.

+61stars / 7d
Verdict

Our Claude Code Router install stopped after 24 seconds because pnpm blocked five dependency build scripts, so source users should expect an approval step before they can even build. Use the desktop or CLI path if you regularly move several coding agents across providers and want one place to see the resolved route. Keep the management UI private, and avoid the Docker path on an exposed interface while issue 1835 remains open.

We ran it

Lab card: what happened when we ran claude-code-routerScreenshot of claude-code-router (ccrdesk.top)
Install✗ · 24s
Build—
Repo841 files~243,085 lines of source · 53 MB · 3 CI workflows · Dockerfile · tests dir

Answers from our run

Does claude-code-router build from source?

The dependency install failed, and the project has no separate build step. We cloned commit f2e01bf into a clean Debian container with 3 CPUs and no project-specific setup.

Who should not use claude-code-router?

Anyone expecting a clean unattended source install: our pnpm run stopped because five dependency build scripts needed approval.

What are the alternatives to claude-code-router?

LiteLLM, Portkey AI Gateway. Our Claude Code Router install stopped after 24 seconds because pnpm blocked five dependency build scripts, so source users should expect an approval step before they can even build.

Setup2/5Install stopped at five unapproved dependency build scripts
Docs4/5Clear desktop, CLI, Docker, routing, and packaging guidance
Community5/537,486 stars, a September push, and rapid issue activity
Maturity3/5v3.1.1 is active, but installs and Docker exposure need care

Discussed on

  1. hnClaude Code Router160 points

Who it’s for

Developers who switch between Claude Code, Codex, OpenCode, and several model providers.
Teams that need ordered fallbacks, credential pools, request rewrites, and per-request cost records.
Power users who want a desktop app or local web UI instead of editing each agent's configuration by hand.
Operators prepared to keep the management service private and review routing changes carefully.

Who it’s NOT for

Anyone expecting a clean unattended source install: our pnpm run stopped because five dependency build scripts needed approval.
Teams that want one provider and one coding client: a direct agent configuration has fewer credentials, routes, and failure paths.
Operators planning to expose the Docker management port as shipped: open issue 1835 reports that v3.1.1 returns its management token to unauthenticated clients, while the desktop and CLI paths are not affected.
Environments below Node.js 22 or Windows teams expecting to package the desktop app on Linux: the README requires Node 22 and says Windows packaging must run on Windows x64.

Setup reality

Our sandbox install of commit f2e01bf failed after 24 seconds. Pnpm refused to continue because build scripts for @parcel/watcher, better-sqlite3, core-js, electron-winstaller, and esbuild were ignored; it told us to run pnpm approve-builds. We did not reach build or tests.

Using the app requires at least one provider account or compatible endpoint, its credentials, model choices, and an agent profile. The CLI requires Node.js 22 or newer. The desktop flow hides most file editing, while Docker and source builds add gateway authentication and deployment choices.

The gateway listens on port 3456 and the management UI on 3458 by default. Windows desktop packaging must run on Windows x64 because of the native better-sqlite3 Electron module. An open v3.1.1 Docker report makes loopback binding or a separate authenticated network boundary essential.

One endpoint can serve ten coding clients

Claude Code Router sits between coding clients and model providers. The README names Claude Code, Codex, Grok CLI, Kimi CLI, Kilo Code, OpenCode, Pi, ZCode, Claude Design, and WorkBuddy. Instead of teaching each client about every provider, you point it at the local gateway and choose providers, models, credentials, and rules in one interface. That is the useful part: switching a model stops being a hunt through several config formats.

The gateway supports Anthropic, OpenAI, Gemini, OpenRouter, DeepSeek, Mistral, and custom compatible endpoints. It can retry requests, rotate credentials, apply request conditions, and walk an ordered fallback list. Logs show the selected route, status, latency, token use, estimated cost, and tool calls. If you run several agents, those records answer a practical question: which provider actually handled this request?

The control plane also concentrates your secrets

Centralization changes the risk. Provider keys, local login imports, prompts, routing scripts, and request logs meet in one process. A bad rule or exposed management service therefore has a wider blast radius than a typo in one agent's config. CCR offers separate client keys with expiration and local usage limits, but those controls only help when the management side stays private and operators understand which credentials each provider uses.

The quick start is pleasantly direct. Download a desktop build, add a provider, start the server, apply an agent profile, and inspect the logs. The CLI requires Node.js 22 or newer and serves its management UI on port 3458, with the model gateway on 3456. That route is a better first trial than building the 841-file monorepo, especially if your goal is to compare two providers rather than change CCR itself.

What happened when we ran it

Our sandbox cloned commit f2e01bf and attempted the pnpm install with 3 CPUs, 8 GB of RAM, Node 22, no secrets, and no elevated privileges. The 53 MB checkout contained about 243,085 lines of source. Installation failed after 24 seconds, so we did not run the build or tests. Those are the only outcomes this run establishes.

The log did not report a network failure or a broken lockfile. Pnpm said it had ignored build scripts for five dependencies: @parcel/watcher, better-sqlite3, core-js, electron-winstaller, and esbuild. It then exited with ERR_PNPM_IGNORED_BUILDS and told us to run pnpm approve-builds. That is a required trust decision, not a command we should silently answer on behalf of a user.

The repository does carry 3 CI workflow files, a Dockerfile, a compose file, a tests directory, and monorepo workspaces. None of those signals turns our failed install into a passing build. A source contributor should review the five scripts, approve only the expected ones, and then run the project's own build and test commands. Our sandbox result cannot say whether the later steps would pass.

Docker should stay private while issue 1835 is open

Open issue 1835 reports that the v3.1.1 Docker deployment returns its management token to an unauthenticated request at the site root. The reporter traced the problem by static review and explicitly says the desktop and CLI paths are not affected. The report also says the compose file publishes the management port on all interfaces. This is a report, not a finding from our sandbox run.

The immediate decision is still clear. Do not expose port 3458 to a LAN or the internet merely because the compose file starts successfully. Bind it to loopback, restrict it through a private network, or put real authentication in front. CCR handles the contents of coding conversations and provider access, so a management token is not a low-value secret. Check the issue and release notes again before deploying Docker.

Windows packaging has a native boundary

Desktop builders also face a platform-specific rule. The README says the Windows installer must be packaged on Windows x64 because better-sqlite3 includes a native Electron module. Mac builds have their own commands and outputs. This matters to release engineers who expect one Linux runner to emit every desktop artifact. CCR's release workflow uses macOS for Mac packages and windows-latest for Windows instead.

Release v3.1.1, published September 16, fixed gateway error reporting, configuration timeouts, usage attribution, daemon flags, and Docker UI packaging. GitHub showed 37,486 stars, 1,156 combined issues and pull requests, and a last push on September 26, 2026. The first 100 open items returned by the API contained 72 issues and 28 pull requests, including reports filed in the final week of September. This is active maintenance under heavy demand, not a quiet finished utility.

Claude Code Router makes sense when model routing has already become a daily chore across several agents. Start with the local desktop or CLI path, where the README gives a bounded setup and issue 1835 says the reported Docker weakness does not apply. Source contributors must make an explicit call on five blocked build scripts, and Docker operators should treat the management interface as sensitive infrastructure. The convenience is real, but it comes from putting more authority in one place.

Alternatives

ProjectWhat it isPick it when
LiteLLM gh↗A broad OpenAI-compatible proxy for many model providers, with budgets and gateway controls.pick this instead when the shared API gateway matters more than desktop agent profiles.
Portkey AI GatewayAn open model gateway focused on routing, fallbacks, guardrails, and observability.pick this instead when you are building a service gateway rather than managing local coding agents.

Sources

  1. Claude Code Router repository and README
  2. Claude Code Router v3.1.1 release
  3. Docker management token exposure report, issue 1835

More ai tools reviews

kornia · skills · anarlog · pr-agent · agent-sprite-forge · KiroCrew · the whole board →