6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Codeの接続先を一発で切り替える `CC Switch` を作ってみた

6
Last updated at Posted at 2026-02-12

Claude Code を使っていると、こんな場面が増えてきませんか?

  • 普段は Claude を使うけど、検証で Azure Foundry や GLM も試したい
  • ローカルの Ollama に切り替えてオフライン気味に作業したい
  • 毎回環境変数を書き換えるのが面倒で、切り替えミスも起きる

そこで作ったのが @nogataka/cloud-code-switcher(コマンド名: cc-switch です。
売りは「超シンプル」。CLI と Web UI の両方から、Claude Code の接続先とモデルを安全に切り替えられます。

image.png


リポジトリ


できること(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

commandershow / env / ui / run を定義。
runchild_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_MODELdefault_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

まずは showenv だけでも、普段の環境変数管理よりかなり楽になるはずです。


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のコマンドはシンプルですが、内部では競合回避・バリデーション・状態復旧まで押さえてあり、毎日の運用にそのまま使える設計になっています。

「環境変数の切り替えがストレス」という人は、ぜひ一度触ってみてください。


リポジトリ


できること(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

commandershow / env / ui / run を定義。
runchild_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_MODELdefault_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

まずは showenv だけでも、普段の環境変数管理よりかなり楽になるはずです。


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のコマンドはシンプルですが、内部では競合回避・バリデーション・状態復旧まで押さえてあり、毎日の運用にそのまま使える設計になっています。

「環境変数の切り替えがストレス」という人は、ぜひ一度触ってみてください。

6
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?