A Python CLI tool built with Typer to switch Claude Code and Codex environments with explicit tool commands.
- Tool-specific commands:
cw claude-code ...andcw codex ... - Separate config files:
~/.claude/cc.yamland~/.codex/cw.yaml usefor terminal-only switching (prints exports via--export)applyfor persistent global switching- Claude multi-model mapping (
opus/sonnet/haiku) with backward compatibility forfast - Codex auth mode switching: official login or API key
- Current status, environment listing, and detailed environment info
pip install -e .uv pip install -e .cw claude-code list
cw claude-code use <environment>
cw claude-code use <environment> --export
cw claude-code apply <environment>
cw claude-code current
cw claude-code unset
cw claude-code unset --global
cw claude-code info <environment>cw codex list
cw codex use <environment>
cw codex use <environment> --export
cw codex apply <environment>
cw codex current
cw codex unset
cw codex unset --global
cw codex info <environment>eval "$(cw claude-code use <environment> --export)"
eval "$(cw codex use <environment> --export)"For Codex, use creates a managed CODEX_HOME so the switch only affects the current terminal.
cw claude-code apply <environment>updates~/.claude/settings.jsoncw codex apply <environment>updates~/.codex/config.tomland~/.codex/auth.json
Create ~/.claude/cc.yaml:
duckcoding:
url: "https://jp.duckcoding.com"
token: "sk-ant-api03-xxx"
timeout: 600000
tokens: 65000
huoshan:
url: "https://ark.cn-beijing.volces.com/api/coding"
token: "sk-ant-api03-xxx"
model: "ark-code-latest"
fast: "ark-code-fast" # legacy fast-model override
models:
opus: "claude-opus-4-6"
sonnet: "claude-sonnet-4-6"
haiku: "claude-haiku-4-5"Claude mapping behavior:
model→ANTHROPIC_MODELmodels.opus→ANTHROPIC_DEFAULT_OPUS_MODELmodels.sonnet→ANTHROPIC_DEFAULT_SONNET_MODELmodels.haiku→ANTHROPIC_DEFAULT_HAIKU_MODELfastremains supported and maps toANTHROPIC_SMALL_FAST_MODEL(and also falls back ashaikuwhenmodels.haikuis missing)
Create ~/.codex/cw.yaml:
official:
auth_mode: "login"
model: "gpt-5.4"
proxy:
auth_mode: "apikey"
base_url: "https://your-openai-compatible-endpoint/v1"
api_key: "sk-xxx"
model: "gpt-5.4"Codex official login requires an existing codex login session in ~/.codex/auth.json.
pip install -r requirements.txt
pip install -e .
pytestMIT