ccs is a free, open source frameworks & platforms project written in TypeScript and released under MIT. It has 2,856 GitHub stars, 260 forks and 18 open issues, and was last pushed 7 days ago. On this registry it ranks #37 of 44 tracked projects in Frameworks & Platforms, with 5 head-to-head comparisons available.

What is ccs?

CCS is an MIT-licensed TypeScript CLI that switches Claude Code and compatible CLI runtimes between multiple Claude accounts, OAuth providers such as Codex and xAI/Grok, and OpenAI-compatible or local model endpoints through one stable ccs command surface, aimed at developers who hold several AI coding subscriptions or model providers at once.

What it is

CCS (Claude Codex Switch) is a multi-provider profile and runtime manager for Claude Code and compatible CLIs. It runs Claude, Codex, Droid-routed profiles, GLM, local models, and Anthropic-compatible APIs without config thrash, giving one command surface over multiple runtimes such as Claude Code, Factory Droid, and Codex CLI, over multiple Claude subscriptions and isolated account contexts, and over OAuth providers like Codex, xAI/Grok, Kiro, Claude, and Kimi with legacy Copilot compatibility.

The concrete problem it solves is config rewriting between providers. Switching providers by hand means editing config files, breaking active sessions, and repeating that work for every provider change. CCS moves that into named profiles and a local Anthropic-compatible proxy, so a provider switch is a command rather than an edit. It lives in the Node.js and Claude Code ecosystem, distributed through npm and as a container image, and it replaces the per-project config file churn that otherwise sits between a developer and each upstream model provider.

Key capabilities

  • One command surface for launching runtimes: ccs, ccs codex, ccs xai (alias ccs grok), ccs --target droid glm, ccs glm, and ccs ollama.
  • Multiple Claude subscriptions and isolated account contexts managed as profiles.
  • OAuth provider support for Codex, xAI/Grok, Kiro, Claude, and Kimi, with legacy GitHub Copilot compatibility for existing setups.
  • API and local-model profiles including GLM, Kimi, OpenRouter, OrcaRouter, Ollama, llama.cpp, Novita, Fireworks AI, and Alibaba Coding Plan.
  • OpenAI-compatible routing that bridges Claude Code into non-Anthropic upstreams through a local proxy: ccs api create --preset hf, then ccs hf; manual control via ccs proxy start hf and eval "$(ccs proxy activate)", with a Fish variant ccs proxy activate --fish.
  • Request-time profile:model selectors and scenario-based model routing through proxy.routing.
  • A React dashboard and proxy shipped as ghcr.io/kaitranntt/ccs:latest, with the dashboard on port 3000 and CLIProxy on port 8317, plus remote proxy support and WebSearch fallback.

Who uses it and how

  • Developers holding more than one Claude subscription use profile switching to keep isolated account contexts apart without editing config between sessions.
  • Teams that need Claude Code to talk to OpenAI-compatible providers create a preset with ccs api create --preset hf and route through the local proxy.
  • Self-hosters run the published compose file and point a sibling container at CLIProxy, with the dashboard at http://localhost:3000.
  • Environments behind a corporate proxy download docker/compose.yaml directly from raw.githubusercontent.com instead of using the hosted quick-start URL.
  • Local-model users add an Ollama or llama.cpp profile and launch it with ccs ollama rather than maintaining a separate client configuration.

Getting started

Install on a host with npm install -g @kaitranntt/ccs and run ccs config, or run the container path with curl -fsSL https://ccs.kaitran.ca/docker-compose.yaml -o docker-compose.yaml followed by docker compose up -d.

How it compares

Among similar tools, claude-code-router is named in the README as a standalone router for sending Claude Code requests to OpenAI-compatible providers, and CCS credits CCR's transformer architecture for informing its own local proxy and SSE transformation work. The README's stated split is to use CCR when a standalone router is enough, and CCS when the routing flow should stay integrated with CCS profiles, runtime bridges, and the existing ccs command surface, so CCS positions itself as the profile-management layer rather than a router alone.

When to use it — and when not to

A self-hoster must operate the Docker containers, the local proxy, the dashboard, and the OAuth credentials for each provider, and must keep profile and routing configuration current as providers change. Anyone wanting a single-provider client with no proxy in the path should not pick it, since the profile and proxy layers are the product. One documented gap: Qwen Code account linking is not available in the bundled CLIProxy runtime yet, so Qwen models require an API-key profile such as Alibaba Coding Plan, and the older ghcr.io/kaitranntt/ccs-dashboard:latest image is deprecated in favour of ghcr.io/kaitranntt/ccs:latest.

project readme (upstream, from github) — read inline

CCS - Claude Codex Switch

CCS Logo

The multi-provider profile and runtime manager for Claude Code and compatible CLIs

Run Claude, Codex, Droid-routed profiles, GLM, local models, and Anthropic-compatible APIs without config thrash.

License npm PoweredBy

Website | Documentation | Product Tour | CLI Reference

[Docker] ghcr.io/kaitranntt/ccs-dashboard:latest is deprecated. Use ghcr.io/kaitranntt/ccs:latest instead. See #1251 and docker/README.md for migration details. To wire a sibling container to CLIProxy, see Connect your app to CLIProxy.

Quick Start (Docker)

With Docker installed:

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

Dashboard at http://localhost:3000 · CLIProxy at http://localhost:8317.

Need a corporate-proxy alternative? Download directly: https://raw.githubusercontent.com/kaitranntt/ccs/main/docker/compose.yaml

Install on Host (npm)

npm install -g @kaitranntt/ccs
ccs config

Then launch whatever runtime fits the task:

ccs
ccs codex
ccs xai              # Alias: ccs grok
ccs --target droid glm
ccs glm
ccs ollama

Why CCS

CCS gives you one stable command surface while letting you switch between:

  • multiple runtimes such as Claude Code, Factory Droid, and Codex CLI
  • multiple Claude subscriptions and isolated account contexts
  • OAuth providers like Codex, xAI/Grok, Kiro, Claude, Kimi, and more, with legacy Copilot compatibility for existing setups
  • API and local-model profiles like GLM, Kimi, OpenRouter, OrcaRouter, Ollama, llama.cpp, Novita, Fireworks AI, and Alibaba Coding Plan

Qwen Code account linking is not available in the bundled CLIProxy runtime yet; use an API-key Qwen profile such as Alibaba Coding Plan for Qwen models.

The goal is simple: stop rewriting config files, stop breaking active sessions, and move between providers in seconds.

OpenAI-Compatible Routing

CCS can now bridge Claude Code into OpenAI-compatible providers through a local Anthropic-compatible proxy instead of requiring a native Anthropic upstream.

ccs api create --preset hf
ccs hf

Need to manage the proxy manually?

ccs proxy start hf
eval "$(ccs proxy activate)"

The proxy also supports request-time profile:model selectors, scenario-based model routing through proxy.routing, and explicit activation helpers such as ccs proxy activate --fish.

Guide: OpenAI-Compatible Provider Routing.

Related Project: claude-code-router

claude-code-router is an excellent standalone tool for routing Claude Code requests to OpenAI-compatible providers. CCS's local proxy and SSE transformation work was directly informed by CCR's transformer architecture.

Use CCR when you want a standalone router without CCS profile management. Use CCS when you want the routing flow integrated with CCS profiles, runtime bridges, and the existing ccs command surface.

Need the full setup path instead of the short version?

Need Start here
Install and verify CCS /getting-started/installation
First successful session /getting-started/first-session
Visual walkthrough /getting-started/product-tour
Provider selection /providers/concepts/overview
Full command reference /reference/cli-commands
Troubleshooting /reference/troubleshooting

See CCS In Action

CCS Bar For macOS

CCS Bar

CCS Bar puts live subscription quota, daily spend, and account controls in the macOS menu bar. Install it with ccs bar install, launch it with ccs bar, and tell us what would make it more useful: issues and ideas are welcome in GitHub Issues.

Deep dive: CCS Bar.

Usage Analytics

Analytics Dashboard

Track usage, costs, and session patterns across profiles. Deep dive: Dashboard Analytics.

Live Auth And Health Monitoring

Live Auth Monitor

See auth state, account health, and provider readiness without dropping into raw config. Deep dive: Live Auth Monitor.

OAuth Provider Control Center

CLIProxy API

Manage OAuth-backed providers, quota visibility, and proxy-wide routing from one place. CCS now surfaces round-robin vs fill-first natively in both CLI and dashboard flows instead of hiding that choice inside raw upstream controls. The original CLIProxyAPI backend remains the default; the community-maintained CLIProxyAPIPlus fork is opt-in for plus-only providers. When Plus is selected, CCS points the embedded management panel at the maintained CPAMC dashboard fork by default. Deep dive: CLIProxy API.

Managed Tooling And Fallbacks

WebSearch Fallback

CCS can provision first-class local tools like WebSearch and image analysis for third-party launches instead of leaving you to wire them by hand. Browser automation now has a first-class setup path as well. Deep dive: WebSearch | Browser Automation.

Docs Matrix

The README stays short on purpose. The docs site owns the detailed guides and reference material.

If you want to... Read this
Understand what CCS is and how the pieces fit together Introduction
Install CCS cleanly on a new machine Installation
Go from install to a successful first run Your First CCS Session
See the dashboard and workflow surfaces before setup Product Tour
Install the native macOS menu-bar companion CCS Bar
Compare OAuth providers, Claude accounts, and API profiles Provider Overview
Learn the dashboard structure and feature pages Dashboard Overview
Configure profiles, paths, and environment variables Configuration
Understand browser attach vs Codex browser tooling Browser Automation
Keep OpenCode aligned with your live CCS setup OpenCode Sync Plugin
Browse every command and flag CLI Commands
Recover from install, auth, or provider failures Troubleshooting
Understand storage, config, and architecture details Reference

Example Workflow

# Design with default Claude
ccs "design the auth flow"

# Implement with a different provider
ccs codex "implement the user service"

# Use a cheaper API profile for routine work
ccs glm "clean up tests and docs"

# Run a local model when you need privacy or offline access
ccs ollama "summarize these logs"

Community Projects

Project Author Description
[ope

readme truncated — read the full docs on github

Frequently asked questions

Is ccs free to use?

ccs is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does ccs do?

Switch between Claude accounts, Gemini, Copilot, OpenRouter (300+ models) via CLIProxyAPI OAuth proxy. Visual dashboard, remote proxy support, WebSearch fallbac

What is ccs written in?

ccs is primarily written in TypeScript. Its source is publicly available at https://github.com/kaitranntt/ccs, and it has 2,856 GitHub stars.