9Router チュートリアル:Claude Code、Codex、Cursor を一つの AI ルーターにつなぐ

9Router はローカル AI コーディングルーターです。インストール、Claude Code/Codex/Cursor 連携、OpenAI-compatible endpoint、token圧縮、model fallback、複数アカウントルーティングを整理します。

9Router は AI コーディングツール向けのローカルルーターです。Claude Code、Codex、Cursor、Cline、Copilot、OpenCode、OpenClaw などを 1 つの OpenAI-compatible endpoint に接続し、そこから複数のモデルや provider に転送します。

目的はチャットクライアントを増やすことではありません。AI コーディングツールとモデル provider の間に入り、API 形式の違い、provider の手動切り替え、ツール出力による token 消費、quota 切れ、複数アカウント管理をまとめて扱います。

README によると、9Router は 40 以上の provider と 100 以上のモデルに対応し、RTK Token Saver、自動 fallback、quota 追跡、複数アカウントのローテーション、形式変換、リクエストログを備えています。JavaScript 製で、Node.js、Next.js、React、Tailwind CSS、LowDB を使い、MIT ライセンスです。

何に向いているか

複数の AI コーディングツールと複数のモデル供給元を同時に使う場合に便利です。

  • Claude Code はサブスクリプションで使う。
  • Codex や Cursor にカスタム OpenAI endpoint を設定したい。
  • Cline、Continue、RooCode に OpenAI-compatible API を渡したい。
  • 無料 provider を試用に使う。
  • GLM、MiniMax、Kimi などを安価なバックアップにする。
  • 高品質モデルを難しいタスクだけに使う。

通常は各ツールに endpoint、API key、モデル名、fallback を個別設定する必要があります。9Router はそれをローカルのルーティング層に集約します。

API:

1
http://localhost:20128/v1

Dashboard:

1
http://localhost:20128/dashboard

インストール

ローカル利用なら npm が簡単です。

1
2
npm install -g 9router
9router

ソースから実行する場合:

1
2
3
4
5
git clone https://github.com/decolua/9router.git
cd 9router
cp .env.example .env
npm install
PORT=20128 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run dev

本番起動:

1
2
npm run build
PORT=20128 HOSTNAME=0.0.0.0 NEXT_PUBLIC_BASE_URL=http://localhost:20128 npm run start

npm パッケージは Node.js >=18.0.0 を要求します。VPS や Docker では JWT_SECRETINITIAL_PASSWORDDATA_DIRAPI_KEY_SECRET を設定してください。

ツールの接続

一般的な設定:

1
2
3
Base URL: http://localhost:20128/v1
API Key: 9Router Dashboard からコピー
Model: 9Router で設定したモデル名または combo 名

Codex CLI:

1
2
3
4
export OPENAI_BASE_URL="http://localhost:20128"
export OPENAI_API_KEY="your-9router-api-key"

codex "your prompt"

Cline、Continue、RooCode では OpenAI Compatible を選びます。

1
2
3
Base URL: http://localhost:20128/v1
API Key: your-9router-api-key
Model: cc/claude-opus-4-7

モデル名は接続済み provider によって変わり、cc/cx/gh/glm/minimax/kr/vertex/ などがあります。

RTK Token Saver

AI コーディングでは以下のようなツール出力が token を大きく消費します。

  • git diff
  • git status
  • grep
  • find
  • ls
  • tree
  • ログ
  • 長いファイル一覧

9Router の RTK Token Saver は、これらをモデルに送る前に圧縮します。プロジェクト説明では、多くのリクエストで 20%-40% の input tokens を節約できるとされています。

ただし、重要なログや完全なファイル内容が必要な場面では、圧縮が回答品質に影響しないか確認してから使うのが安全です。

自動 fallback

モデルを優先順に並べられます。

1
2
3
1. サブスクリプションモデル
2. 安価な API
3. 無料 provider

例:

1
2
3
1. cc/claude-opus-4-7
2. glm/glm-5.1
3. kr/claude-sonnet-4.5

fallback は作業停止を減らしますが、モデルが変わると出力の一貫性も変わります。大規模リファクタリングや移行では固定モデルを使う方が安全です。

無料 provider の注意点

Kiro、OpenCode Free、Vertex などの無料経路は便利ですが、利用条件、地域制限、サードパーティツールでの利用可否、ban や rate limit、期限を必ず確認してください。9Router はルーティングを管理するだけで、上流 provider の規約は変えません。

デプロイ

個人利用なら localhost のみで十分です。VPS や LAN で公開するなら、デフォルトパスワードを変更し、強い JWT_SECRETAPI_KEY_SECRET を設定し、Dashboard を公衆インターネットに直接出さず、/v1/* に Bearer API key を要求します。

1
2
3
4
5
6
7
docker run -d \
  --name 9router \
  -p 20128:20128 \
  --env-file ./.env \
  -e DATA_DIR=/app/data \
  -v "$HOME/.9router:/app/data" \
  9router

Dashboard だけに頼らないヘルスチェック

文書化されていない /health に依存せず、Web と認証付き API を順に確認します。

1
2
3
curl -fsS http://127.0.0.1:20128/dashboard > /dev/null
curl -fsS http://127.0.0.1:20128/v1/models \
  -H "Authorization: Bearer $NINE_ROUTER_KEY"

最初が失敗すればプロセス、ポート、bind、リバースプロキシを調べます。2 番目だけが 401/403 なら API Key を確認します。最後に最小チャットを 1 回送り、combo ルールどおりの provider が選ばれたことを確認します。

Docker ではコンテナと直近ログも確認できます。

1
2
docker ps --filter name=9router
docker logs --tail 100 9router

ログから上流障害を判断する

DATA_DIR には db.jsonusage.jsonlog.txt があります。

1
2
export DATA_DIR="${DATA_DIR:-$HOME/.9router}"
tail -n 100 "$DATA_DIR/log.txt"
  • 401/403:認証情報、権限、OAuth の問題。
  • 429:クォータまたはレート制限。fallback の次段を確認。
  • 5xx、timeout、DNS、TLS:上流またはネットワーク経路。
  • 切り替え後も失敗:combo 内の provider を個別に確認。

ENABLE_REQUEST_LOGS=true は機密データを保存する可能性があります。短時間だけ有効にし、権限を制限して、調査後に無効化します。

データディレクトリのバックアップと復元

書き込みを止めてディレクトリ全体を保存します。

1
2
3
4
export DATA_DIR="${DATA_DIR:-$HOME/.9router}"
pm2 stop 9router
tar -C "$DATA_DIR" -czf "$HOME/9router-backup-$(date +%Y%m%d-%H%M%S).tgz" .
pm2 start 9router

バックアップには認証情報や API Key が含まれ得ます。復元時は停止し、現在のディレクトリを退避して空の DATA_DIR へ展開し、検証後に再起動します。

1
2
3
4
python -m json.tool "$DATA_DIR/db.json" > /dev/null
python -m json.tool "$DATA_DIR/usage.json" > /dev/null
pm2 start 9router
tail -n 100 "$DATA_DIR/log.txt"

Docker では停止中に /app/data のホストディレクトリまたは volume を保存し、復元後に Dashboard、/v1/models、最小チャットを再確認します。

まとめ

9Router は AI コーディングツールのローカル gateway です。Claude Code、Codex、Cursor、Cline などを http://localhost:20128/v1 に集約し、モデル選択、形式変換、token 圧縮、quota 追跡、fallback を処理します。

複数 provider を使う重めの AI コーディングユーザーに向いています。まず 1 つのツールと 1 つの provider から試し、徐々に combo とアカウントを増やすのが無難です。

よくある質問

このプロジェクトは何ですか?

この記事で紹介している AI ツール系プロジェクトで、何ができるか、どう使うか、どんな場合に試す価値があるかを整理しています。

誰に向いていますか?

README を読むだけでなく、実際のワークフローに接続したい開発者や AI ツール利用者に向いています。

使う前に何を確認すべきですか?

インストール方法、対応ツール、データと権限の境界、プロジェクトの更新頻度を確認してください。

本番利用に向いていますか?

まず小さなワークフローで検証し、挙動を確認してから機密性の高い作業や本番タスクに使うべきです。

参考資料