Switch Claude Code between AI providers with one command.
# 1. Install
git clone https://github.com/gameofdimension/claude-code-switch.git
cd claude-code-switch
uv tool install .
# 2. Configure API keys
ccm config
# 3. Switch and use
ccm glm global # switch to GLM (sets env vars)
ccc glm global # switch + launch Claude Codegit clone https://github.com/gameofdimension/claude-code-switch.git
cd claude-code-switch
uv tool install .For automatic env var handling, run the installer:
./install.sh # User-level (default)
./install.sh --system # System-level
./install.sh --project # Project-only
./install.sh --no-rc # Skip shell rc injection./uninstall.shAfter pulling latest changes:
uv tool install . --reinstall
# or
./install.shccm configThis opens ~/.ccm_config. Add your API keys:
DEEPSEEK_API_KEY=sk-...
KIMI_API_KEY=...
GLM_API_KEY=...
QWEN_API_KEY=...
MINIMAX_API_KEY=...
ARK_API_KEY=... # For Doubao/Seed
STEPFUN_API_KEY=... # For StepFun
OPENROUTER_API_KEY=... # For OpenRouter
CLAUDE_API_KEY=... # Optional, for Claude APIccm statusccm glm global # GLM global (default)
ccm glm china # GLM China
ccm deepseek # DeepSeek
ccm kimi global # Kimi global
ccm kimi china # Kimi China
ccm qwen global # Qwen global
ccm minimax # MiniMax
ccm stepfun # StepFun
ccm seed # Doubao/Seed
ccm claude # Claude officialccc glm global # Switch to GLM, then launch
ccc open glm # Via OpenRouterccm status # Show current configuration
ccm help # Show all commands| Provider | Command | Region | Base URL |
|---|---|---|---|
| GLM | ccm glm [global|china] |
global (default) | api.z.ai/api/anthropic |
| china | open.bigmodel.cn/api/anthropic |
||
| DeepSeek | ccm deepseek |
- | api.deepseek.com/anthropic |
| Kimi | ccm kimi [global|china] |
global (default) | api.moonshot.ai/anthropic |
| china | api.kimi.com/coding |
||
| Qwen | ccm qwen [global|china] |
global (default) | coding-intl.dashscope.aliyuncs.com/apps/anthropic |
| china | coding.dashscope.aliyuncs.com/apps/anthropic |
||
| MiniMax | ccm minimax [global|china] |
global (default) | api.minimax.io/anthropic |
| china | api.minimaxi.com/anthropic |
||
| StepFun | ccm stepfun |
- | api.stepfun.ai/v1/anthropic |
| Seed/Doubao | ccm seed [variant] |
- | ark.cn-beijing.volces.com/api/coding |
| Claude | ccm claude |
- | api.anthropic.com |
GLM Coding Plan: bigmodel.cn/glm-coding
Doubao Coding Plan: volcengine.com (Invite code:
ZP5PZMEY)
ccm seed # ark-code-latest (default)
ccm seed doubao # doubao-seed-code
ccm seed glm # glm-5
ccm seed deepseek # deepseek-v3.2
ccm seed kimi # kimi-k2.5ccm open claude # Claude via OpenRouter
ccm open glm # GLM via OpenRouter
ccm open kimi # Kimi via OpenRouter
ccm open deepseek # DeepSeek via OpenRouter
ccm open qwen # Qwen via OpenRouter
ccm open minimax # MiniMax via OpenRouter
ccm open stepfun # StepFun via OpenRouterAvailable: claude, glm, kimi, deepseek, qwen, minimax, stepfun
Write to ~/.claude/settings.json. Overrides everything.
ccm user glm global # GLM for all projects
ccm user reset # Restore env var controlWhen to use:
- Other tools modify
~/.claude/settings.json - You want persistent defaults across shell restarts
Override settings for a specific project:
ccm project glm global # GLM for this project only
ccm project reset # Remove project overrideCreates .claude/settings.local.json in the project.
~/.claude/settings.json- User-level settings.claude/settings.local.json- Project-level settings~/.ccm_config- Config file (reloads on each command)- Environment variables
# API Keys
DEEPSEEK_API_KEY=sk-...
KIMI_API_KEY=...
GLM_API_KEY=...
QWEN_API_KEY=...
MINIMAX_API_KEY=...
ARK_API_KEY=...
STEPFUN_API_KEY=...
OPENROUTER_API_KEY=...
CLAUDE_API_KEY=...
# Model overrides (optional)
DEEPSEEK_MODEL=deepseek-chat
KIMI_MODEL=kimi-k2.5
GLM_MODEL=glm-5
MINIMAX_MODEL=MiniMax-M2.5
CLAUDE_MODEL=claude-sonnet-4-5-20250929
OPUS_MODEL=claude-opus-4-6
HAIKU_MODEL=claude-haiku-4-5-20251001If using --no-rc or calling binary directly:
eval "$(ccm glm global)"- 7 env vars exported:
ANTHROPIC_BASE_URL,ANTHROPIC_AUTH_TOKEN,ANTHROPIC_MODEL,ANTHROPIC_DEFAULT_OPUS_MODEL,ANTHROPIC_DEFAULT_SONNET_MODEL,ANTHROPIC_DEFAULT_HAIKU_MODEL,CLAUDE_CODE_SUBAGENT_MODEL - Claude official: Uses subscription by default, or
CLAUDE_API_KEYif set - OpenRouter: Requires explicit
ccm open <provider>command
git clone https://github.com/gameofdimension/claude-code-switch.git
cd claude-code-switch
uv sync --dev
uv run ccm --help # Test locally
uv run pytest tests/ -v # Run testsMIT License - see LICENSE for details.