Codex Router の仕組み — アーキテクチャとリクエストフロー
Codex Router は、Codex App/CLI と外部モデルプロバイダーの間にあるローカル HTTP サービスです。このページでは、ルーターが必要な理由、4 つの構成要素、リクエストの流れ、セキュリティ境界を説明します。
なぜルーターが必要か
Codex App は Responses API と Codex 型のモデルカタログを期待します。Kimi と DeepSeek は、認証とリクエスト詳細が異なる OpenAI 互換の Chat Completions API を公開しています。Codex Router はそれらの契約を橋渡しし、ネイティブ GPT トラフィックは通常の ChatGPT Codex バックエンドのままにします。
4 つの構成要素
- 生成カタログが外部モデルを Codex の
model_catalog_jsonのネイティブ GPT モデルの隣に配置。 - ディスパッチャーが名前空間モデル ID でネイティブ/外部ルーティングを選択——
deepseek/、kimi-oauth/、anthropic-api/などで始まるものは外部パスへ。 - LiteLLM が Responses リクエスト・ストリーム・ツールコールを各プロバイダーのネイティブプロトコル(OpenAI 互換 Chat Completions と Anthropic Messages を含む)に変換。
- 認証情報フォワーダーが選択したプロバイダーの認証だけを注入し、他をすべて除去。
すべてのリスナーは 127.0.0.1 にバインドされ、サービス全体がマシン上でローカルに動作します。
リクエストフロー
Codex は Responses リクエストを 4102 ポートのループバックルーターに送信します:
| ポート | リスナー | 役割 |
|---|---|---|
| 4102 | ルーター | Codex Responses リクエストを受信、呼び出し元を認証 |
| 4100 | LiteLLM | Responses を各プロバイダーのネイティブプロトコルへ変換 |
| 4101 | Kimi OAuth | 更新済み OAuth bearer で Kimi に転送 |
| 4103 | API フォワーダー | 選択キーで API キープロバイダーに転送 |
ネイティブ GPT モデルの場合、ルーターは許可リスト化された Codex ヘッダーとネイティブモデル ID で ChatGPT Codex バックエンドに転送します——ネイティブリクエストを外部プロバイダーに送ることはありません。
レジストリモデル(例:kimi-oauth/k3)の場合、ルーターは呼び出し元を検証し、ゲートウェイモデルと内部キーを LiteLLM に渡し、LiteLLM がリクエストを変換して一致するフォワーダーに渡します。フォワーダーは内部キーを破棄し、選択したプロバイダー認証のみを注入します。ストリームは Responses イベントとして LiteLLM を経由して戻ります。
認証情報境界
| ルート | 入ってくる Codex 認証 | アップストリーム認証 |
|---|---|---|
| ネイティブ GPT | 許可リスト化・転送 | 既存の ChatGPT/Codex 認証 |
| Kimi OAuth | 破棄 | ~/.kimi-code の Kimi CLI OAuth bearer |
| Kimi API | 破棄 | Kimi Platform API キー |
| DeepSeek | 破棄 | DeepSeek API キー |
Codex からルーターへ、内部サービスへの 2 つの信頼境界は別々のランダムキーを使用し、それぞれ mode 600 または現在ユーザー Windows ACL で保存されます。外部フォワーダーは、アップストリームへ送信する前に Codex アカウント・インストール・attestation・プライベートヘッダーを除去します。
セキュリティモデル
- ローカル呼び出し元認証。 管理ベース URL には独立したランダムケーパビリティが含まれ、ルーターはモデルリクエストの読み取り前、アップストリーム接触前にそれを検証します。Codex は内蔵プロバイダーにルーター専用ヘッダーを付けられないため、ケーパビリティは URL パスに置かれます。ステータス・移行・サポートツールはそれを脱敏します。
- ブラウザアクセスなし。 ルーターは JSON コンテンツを要求し、ブラウザオリジンヘッダーを拒否し、CORS を許可しません。
- 脱敏されたエラー。 ネットワーク向けエラーは限定的で非機密。生の例外テキストは置き換えられます。
- 認証情報漏洩なし。 診断は存在とソースのみを報告し、値を報告しません。保護ファイルは mode
600または現在ユーザー ACL を使用。
トランスポートと圧縮
現在の Codex ビルドはまず Responses WebSocket を試みます。ルーターは HTTP 426 で応答し、Codex は HTTP にフォールバックします——これは期待される動作です。リクエストボディは Zstandard、gzip、deflate、Brotli を使用する場合があり、ルーターはモデル ID を調べる前に安全に解凍します。
外部 Chat Completions プロバイダーは OpenAI の不透明な暗号化圧縮ペイロードを作成できないため、ルーターは選択した外部モデルに続きの要約を生成させ、ルーター所有の kcr1: ペイロードに包みます。リプレイ時には普通の続きメッセージに変換します。
Codex 内に残るもの
コマンド、権限、MCP ツール、スキル、エージェントループ、タスク状態は Codex に残ります。ルーターはモデル推論と外部モデルの圧縮を処理します。選択したモデルやプロバイダーが実装していない機能を追加することはできません。
コラボレーションサブエージェントの場合、ルーターはネイティブタスクペイロードを認証済みのネイティブ Codex バックエンド経由で中継します——このリレーには有効な ChatGPT ログインが必要で、ログインフリーでは読み取り不能な暗号文を外部プロバイダーに転送せず、失敗して閉じます。
ネイティブカタログは保持される
統合は内蔵 OpenAI プロバイダー、ネイティブ GPT モデル、ChatGPT ログイン、プロファイル、MCP 設定、プロジェクトトラスト、推論デフォルトを保持します。Codex 設定にはマークされたルートブロックと不活性カスタムプロバイダーテーブルを 1 つ追加するだけです。disable は以前の値を正確に復元します。
関連:インストール、モデル概要、トラブルシューティング。