Claude Code を使っていると、こんな場面が増えてきませんか?
- 普段は Claude を使うけど、検証で Azure Foundry や GLM も試したい
- ローカルの Ollama に切り替えてオフライン気味に作業したい
- 毎回環境変数を書き換えるのが面倒で、切り替えミスも起きる
そこで作ったのが @nogataka/cloud-code-switcher(コマンド名: cc-switch) です。
売りは「超シンプル」。CLI と Web UI の両方から、Claude Code の接続先とモデルを安全に切り替えられます。
リポジトリ
- GitHub: nogataka/cloud-code-switcher-ts
- npm:
@nogataka/cloud-code-switcher(npm install -g @nogataka/cloud-code-switcher)
できること(READMEベース)
cc-switch は次のプロバイダーに対応しています。
-
claude(デフォルト) -
azure(Azure Anthropic / Foundry) -
glm(Zhipu AI) -
ollama(Local) -
kimi(Moonshot) -
custom(独自エンドポイント)
主な操作は4つです。
1) 現在の設定を見る
cc-switch show
アクティブな provider、モデル、base_url、認証設定の有無を確認できます。
2) シェルに環境変数を反映する
eval "$(cc-switch env)"
現在の状態から export/unset を生成して、そのままシェルに適用できます。
.bashrc / .zshrc に書いておけば、起動時に自動適用も可能です。
3) Web UI で切り替える
cc-switch ui
http://127.0.0.1:8787(デフォルト)で UI を起動。
CC_SWITCH_HOST / CC_SWITCH_PORT で変更できます。
4) 切り替え後の環境でコマンドを実行する
cc-switch run
設定済みの環境変数を付けた状態でコマンド実行できます。
ここが便利:なぜ使いたくなるか
-
超シンプルで覚えることが少ない
基本はshow / env / ui / runの4コマンドだけ。まず導入してすぐ使えます。 -
切り替えのミスを減らせる
プロバイダーごとに必要な変数を自動で整理してくれるため、前回の設定が残って壊れる事故を防げます。 -
CLI派にもGUI派にも対応
ターミナルで完結させたい人はshow/env/run、視覚的に切り替えたい人はuiを使えます。 -
モデル戦略を持てる
opus / sonnet / haikuごとにモデルを保持し、default_tierで既定を切り替えできます。
コード解説(実装の読みどころ)
1) CLIの司令塔:src/cli.ts
commander で show / env / ui / run を定義。
run は child_process.spawn でコマンドを実行し、起動したプロセスを登録・終了時に掃除します。
ポイント:
-
argsが空ならclaudeを実行 -
buildEnvFromState()の結果をprocess.envにマージして子プロセス起動 -
registerProcess()/unregisterProcess()で実行中プロセスを追跡
2) 環境変数の中核:src/env-builder.ts
このファイルが実質コアです。
まず競合しやすい環境変数(Foundry系、Anthropic系)をいったんクリアし、プロバイダーに応じて正しい値だけ再設定します。
特に効いている設計:
-
競合防止の先行クリア
先に空文字でリセットしてから必要分をセットするため、切り替え時の残骸を減らせる -
AzureだけFoundryモードを明示
CLAUDE_CODE_USE_FOUNDRY=1と Foundry用キーを設定 -
ティア別モデル管理
ANTHROPIC_DEFAULT_OPUS_MODELなどを設定し、CLAUDE_MODELはdefault_tierから決定
3) Web APIとUI配信:src/server.ts
Fastify + @fastify/static で UI と API を提供します。
-
GET /api/providers: 対応プロバイダー一覧 -
GET /api/state: 現在状態 -
POST /api/switch: プロバイダー切替(バリデーションあり) -
GET /api/export-env: 現在状態からの環境変数プレビュー -
GET /api/processes: 生存中プロセス一覧
POST /api/switch では、base_url のスキーマ(http:// / https://)や default_tier の妥当性を検証しているので、壊れた状態を保存しづらいのも良い点です。
4) 状態永続化:src/state.ts / src/processes.ts / src/fs-utils.ts
- 設定は
~/.config/cloud-code-switcher/state.json - 実行中プロセス管理は
~/.config/cloud-code-switcher/processes.json - 書き込みは
atomicWriteFileSync()でテンポラリ経由のアトミック更新
ensureState() が初期化・復旧・マイグレーション(model 単体から tier 別へ)まで担当しており、実運用で壊れにくい作りになっています。
GitHub情報(公開情報)
nogataka/cloud-code-switcher-ts は public repository です。
記事執筆時点で確認できる主な情報は次のとおりです。
- 言語: TypeScript
- デフォルトブランチ:
main - Stars: 0
- Forks: 0
- Open Issues: 0
- CI/CD:
.github/workflows/release.ymlでタグ起点の npm publish + GitHub Release 作成を自動化
補足:
-
releases/latestは未作成(= まだ最新リリースは公開されていない状態) - ワークフローは
package.jsonの version とタグの整合チェックも実装済み
最短で試す手順
npm install -g @nogataka/cloud-code-switcher
cc-switch show
eval "$(cc-switch env)"
cc-switch ui
まずは show と env だけでも、普段の環境変数管理よりかなり楽になるはずです。
claude-code-router との使い分け
「似た領域のツール」として、musistudio/claude-code-router も非常に強力です。
ざっくり言うと、次のように使い分けると分かりやすいです。
-
cc-switchが向いているケース
「今このシェル/端末で使う接続先を、超シンプルに切り替えたい」
例: Claude ⇔ Azure ⇔ Ollama を手早く切り替える、eval "$(cc-switch env)"で即反映する。 -
claude-code-routerが向いているケース
「リクエスト内容や用途に応じて、複数モデルへ動的ルーティングしたい」
例: default/think/longContext を分ける、transformer でプロバイダー差分を吸収する、CLI/CI まで含めた高度運用。
つまり、単純な“切り替え”中心なら cc-switch、高度な“ルーティング基盤”まで求めるなら claude-code-router という整理です。
まずは軽量な cc-switch で運用を安定させ、要件が増えたら router 系へ拡張する流れが現実的だと思います。
まとめ
CC Switch は、「複数プロバイダー時代の Claude Code 運用を、超シンプルにする」 ための小さな道具です。
READMEのコマンドはシンプルですが、内部では競合回避・バリデーション・状態復旧まで押さえてあり、毎日の運用にそのまま使える設計になっています。
「環境変数の切り替えがストレス」という人は、ぜひ一度触ってみてください。
リポジトリ
- GitHub: nogataka/cloud-code-switcher-ts
- npm:
@nogataka/cloud-code-switcher(npm install -g @nogataka/cloud-code-switcher)
できること(READMEベース)
cc-switch は次のプロバイダーに対応しています。
-
claude(デフォルト) -
azure(Azure Anthropic / Foundry) -
glm(Zhipu AI) -
ollama(Local) -
kimi(Moonshot) -
custom(独自エンドポイント)
主な操作は4つです。
1) 現在の設定を見る
cc-switch show
アクティブな provider、モデル、base_url、認証設定の有無を確認できます。
2) シェルに環境変数を反映する
eval "$(cc-switch env)"
現在の状態から export/unset を生成して、そのままシェルに適用できます。
.bashrc / .zshrc に書いておけば、起動時に自動適用も可能です。
3) Web UI で切り替える
cc-switch ui
http://127.0.0.1:8787(デフォルト)で UI を起動。
CC_SWITCH_HOST / CC_SWITCH_PORT で変更できます。
4) 切り替え後の環境でコマンドを実行する
cc-switch run -- claude
設定済みの環境変数を付けた状態でコマンド実行できます。
引数なしなら claude を起動します。
ここが便利:
-
超シンプルで覚えることが少ない
基本はshow / env / ui / runの4コマンドだけ。まず導入してすぐ使えます。 -
切り替えのミスを減らせる
プロバイダーごとに必要な変数を自動で整理してくれるため、前回の設定が残って壊れる事故を防げます。 -
CLI派にもGUI派にも対応
ターミナルで完結させたい人はshow/env/run、視覚的に切り替えたい人はuiを使えます。 -
モデル戦略を持てる
opus / sonnet / haikuごとにモデルを保持し、default_tierで既定を切り替えできます。
コード解説(実装の読みどころ)
1) CLIの司令塔:src/cli.ts
commander で show / env / ui / run を定義。
run は child_process.spawn でコマンドを実行し、起動したプロセスを登録・終了時に掃除します。
ポイント:
-
argsが空ならclaudeを実行 -
buildEnvFromState()の結果をprocess.envにマージして子プロセス起動 -
registerProcess()/unregisterProcess()で実行中プロセスを追跡
2) 環境変数の中核:src/env-builder.ts
このファイルが実質コアです。
まず競合しやすい環境変数(Foundry系、Anthropic系)をいったんクリアし、プロバイダーに応じて正しい値だけ再設定します。
特に効いている設計:
-
競合防止の先行クリア
先に空文字でリセットしてから必要分をセットするため、切り替え時の残骸を減らせる -
AzureだけFoundryモードを明示
CLAUDE_CODE_USE_FOUNDRY=1と Foundry用キーを設定 -
ティア別モデル管理
ANTHROPIC_DEFAULT_OPUS_MODELなどを設定し、CLAUDE_MODELはdefault_tierから決定
3) Web APIとUI配信:src/server.ts
Fastify + @fastify/static で UI と API を提供します。
-
GET /api/providers: 対応プロバイダー一覧 -
GET /api/state: 現在状態 -
POST /api/switch: プロバイダー切替(バリデーションあり) -
GET /api/export-env: 現在状態からの環境変数プレビュー -
GET /api/processes: 生存中プロセス一覧
POST /api/switch では、base_url のスキーマ(http:// / https://)や default_tier の妥当性を検証しているので、壊れた状態を保存しづらいのも良い点です。
4) 状態永続化:src/state.ts / src/processes.ts / src/fs-utils.ts
- 設定は
~/.config/cloud-code-switcher/state.json - 実行中プロセス管理は
~/.config/cloud-code-switcher/processes.json - 書き込みは
atomicWriteFileSync()でテンポラリ経由のアトミック更新
ensureState() が初期化・復旧・マイグレーション(model 単体から tier 別へ)まで担当しており、実運用で壊れにくい作りになっています。
GitHub情報(公開情報)
nogataka/cloud-code-switcher-ts は public repository です。
記事執筆時点で確認できる主な情報は次のとおりです。
- 言語: TypeScript
- デフォルトブランチ:
main - Stars: 0
- Forks: 0
- Open Issues: 0
- CI/CD:
.github/workflows/release.ymlでタグ起点の npm publish + GitHub Release 作成を自動化
補足:
-
releases/latestは未作成(= まだ最新リリースは公開されていない状態) - ワークフローは
package.jsonの version とタグの整合チェックも実装済み
最短で試す手順
npm install -g @nogataka/cloud-code-switcher
cc-switch show
eval "$(cc-switch env)"
cc-switch ui
まずは show と env だけでも、普段の環境変数管理よりかなり楽になるはずです。
claude-code-router との使い分け
「似た領域のツール」として、musistudio/claude-code-router も非常に強力です。
ざっくり言うと、次のように使い分けると分かりやすいです。
-
cc-switchが向いているケース
「今このシェル/端末で使う接続先を、超シンプルに切り替えたい」
例: Claude ⇔ Azure ⇔ Ollama を手早く切り替える、eval "$(cc-switch env)"で即反映する。 -
claude-code-routerが向いているケース
「リクエスト内容や用途に応じて、複数モデルへ動的ルーティングしたい」
例: default/think/longContext を分ける、transformer でプロバイダー差分を吸収する、CLI/CI まで含めた高度運用。
つまり、単純な“切り替え”中心なら cc-switch、高度な“ルーティング基盤”まで求めるなら claude-code-router という整理です。
まずは軽量な cc-switch で運用を安定させ、要件が増えたら router 系へ拡張する流れが現実的だと思います。
まとめ
CC Switch は、「複数プロバイダー時代の Claude Code 運用を、超シンプルにする」 ための小さな道具です。
READMEのコマンドはシンプルですが、内部では競合回避・バリデーション・状態復旧まで押さえてあり、毎日の運用にそのまま使える設計になっています。
「環境変数の切り替えがストレス」という人は、ぜひ一度触ってみてください。
