Model or dataset
kaitranntt/ccs avatar
kaitranntt/ccs

CCS (Claude Codex Switch): one command surface for switching runtimes, accounts and providers

Switch between Claude accounts, Gemini, Copilot, OpenRouter (300+ models) via CLIProxyAPI OAuth proxy. Visual dashboard, remote proxy support, WebSearch fallback. Zero-config to production-ready.

2,853 stars260 forksTypeScriptMIT

At a glance

What is it?
CCS by Kai Tran is an MIT-licensed multi-provider profile and runtime manager for Claude Code and compatible CLIs. It lets you move between Claude Code, Codex and Droid runtimes, several Claude accounts, and OAuth or API providers like GLM, Kimi and OpenRouter, without rewriting config files or breaking active sessions.
Who is it for?
Use CCS if you juggle several Claude accounts or route Claude Code across providers and are tired of editing config files by hand. Start with the Docker quick start for the dashboard, or npm install -g @kaitranntt/ccs and ccs config on the host, then switch runtimes with commands like ccs, ccs codex and ccs glm.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What CCS is and the problem it solves

CCS, short for Claude Codex Switch, is a multi-provider profile and runtime manager for Claude Code and compatible CLIs. Its pitch is a single stable command surface over a messy reality: you can run Claude, Codex, Droid-routed profiles, GLM, local models and Anthropic-compatible APIs without config thrash. The stated goal is simple, stop rewriting config files, stop breaking active sessions, and move between providers in seconds.

That frames the audience well. CCS is for developers who use Claude Code seriously enough to have several accounts or providers, and who have felt the pain of hand-editing environment variables and settings files to switch between them, only to break a running session. If you use one account and one provider, CCS is more machinery than you need; if you switch often, its whole reason for existing is to make that switch a single command.

What it can switch between

The breadth is the point. CCS lets you move between multiple runtimes such as Claude Code, Factory Droid and Codex CLI; multiple Claude subscriptions with isolated account contexts; OAuth providers like Codex, xAI/Grok, Kiro, Claude and Kimi, with legacy Copilot compatibility; and API or local-model profiles including GLM, Kimi, OpenRouter, OrcaRouter, Ollama, llama.cpp, Novita, Fireworks AI and Alibaba Coding Plan.

The README is also honest about a current gap: Qwen Code account linking is not yet available in the bundled CLIProxy runtime, so for Qwen models you use an API-key profile such as Alibaba Coding Plan. That kind of caveat is worth trusting a project for; it tells you where the edges are rather than implying everything works equally. The underlying mechanism for the OAuth providers is CLIProxyAPI, an OAuth proxy that CCS manages, with a community CLIProxyAPIPlus fork available as an opt-in for plus-only providers.

Getting started with Docker or npm

There are two install paths. The Docker quick start brings up the dashboard and the proxy together:

bash
curl -fsSL https://ccs.kaitran.ca/docker-compose.yaml -o docker-compose.yaml
docker compose up -d

That serves the dashboard at http://localhost:3000 and the CLIProxy at http://localhost:8317. The host install uses npm and a config step:

bash
npm install -g @kaitranntt/ccs
ccs config

After that you launch whichever runtime fits the task, and the command names are the interface:

bash
ccs
ccs codex
ccs xai
ccs --target droid glm
ccs glm
ccs ollama

package.json sets the support envelope: Node.js 18 or newer, Bun 1.0 or newer, and macOS, Linux and Windows. It also installs several bin aliases, such as ccsx for the Codex runtime and ccsd for Droid, so the runtime you use most can be a single short command.

OpenAI-compatible routing and its relationship to CCR

A newer capability lets CCS bridge Claude Code into OpenAI-compatible providers through a local Anthropic-compatible proxy, rather than requiring a native Anthropic upstream. The short path is to create a preset and launch it:

bash
ccs api create --preset hf
ccs hf

For manual control there are proxy commands (ccs proxy start hf and eval "$(ccs proxy activate)"), plus request-time profile:model selectors, scenario-based routing through proxy.routing, and shell-specific activation helpers.

The README is unusually candid about prior art here. It credits claude-code-router (CCR) by musistudio as an excellent standalone router whose transformer architecture directly informed CCS's local proxy and SSE work, and it tells you when to prefer each: CCR when you want a standalone router without CCS profile management, CCS when you want that routing integrated with CCS profiles, runtime bridges and the ccs command surface. That honesty makes the choice easier rather than harder.

The dashboard, CCS Bar and managed tooling

CCS is not only a CLI. The dashboard adds usage analytics across profiles (usage, costs and session patterns), a live auth and health monitor that shows account state and provider readiness without dropping into raw config, and an OAuth provider control centre for managing CLIProxy-backed providers, quota visibility and routing, including a native choice between round-robin and fill-first upstream selection.

On macOS, CCS Bar puts live subscription quota, daily spend and account controls in the menu bar; you install it with ccs bar install and launch it with ccs bar. There is also managed tooling: CCS can provision first-class local tools such as WebSearch and image analysis for third-party launches, and browser automation now has a first-class setup path, so features you would otherwise wire by hand come provisioned. These surfaces are what make CCS feel like a manager rather than a wrapper: the switch is one command, but the state behind it is visible.

Maturity, licence and a caveat on docs

CCS is MIT licensed and moving fast. package.json is at version 8.10.0, and the release list shows 8.10.0 on 2026-09-11 alongside several 8.9.0 dev builds, with the last push on 2026-09-11. A high major version and frequent dev releases point to rapid iteration, so pin a version if you need stability and watch the changelog before upgrading a production setup. The repository also flags a Docker migration: the old ccs-dashboard image is deprecated in favour of ghcr.io/kaitranntt/ccs:latest.

The one thing to plan for is documentation location. The README stays short on purpose and pushes detail to the docs site at docs.ccs.kaitran.ca, with a matrix of links for installation, first session, provider selection, the CLI reference and troubleshooting. That is a reasonable choice for a tool this broad, but it means the README alone will not get you to a working advanced setup; budget time in the docs, especially for provider selection and the proxy routing features.

Editorial conclusion

Use CCS if you juggle several Claude accounts or route Claude Code across providers and are tired of editing config files by hand. Start with the Docker quick start for the dashboard, or npm install -g @kaitranntt/ccs and ccs config on the host, then switch runtimes with commands like ccs, ccs codex and ccs glm. Read the docs site, since the README deliberately keeps only the essentials.

Frequently asked questions

What is CCS (Claude Codex Switch) for?

CCS is a profile and runtime manager for Claude Code and compatible CLIs. It gives you one command surface to switch between runtimes like Claude Code, Codex and Droid, multiple Claude accounts, and providers such as GLM, Kimi and OpenRouter, without editing config files.

How do I install CCS?

Either run the Docker quick start (download the docker-compose.yaml from ccs.kaitran.ca and docker compose up -d, giving a dashboard on port 3000 and the proxy on 8317), or install on the host with npm install -g @kaitranntt/ccs followed by ccs config.

How is CCS different from claude-code-router?

The README credits CCR as a standalone router and says its transformer work informed CCS. Use CCR when you want a standalone router without profile management; use CCS when you want routing integrated with CCS profiles, runtime bridges and the ccs command surface.

Official sources

  1. kaitranntt/ccs on GitHub
  2. License: MIT
  3. Project website
  4. README
  5. Releases
Community notes

Community notes