LM Warden

Codex CLI を自分の GPU で。

LM Warden を Codex CLI のカスタム モデル プロバイダーとして設定し、提供中のモデルを一つ使います。

Codex CLI からのリクエストの行き先 Codex CLI は、base_url に warden を、env_key に warden のキーを設定して LM Warden にリクエストを送ります。LM Warden はキーを確認し、OpenAI Responses 形式でリクエストを受け付け、キーの優先度に従ってリクエストをキューに入れ、レプリカ ルーターに渡します。ルーターは各セッションを、そのキャッシュをすでに保持しているレプリカ (GPU ごとに一つ置かれたモデルのコピー) に留めます。 Codex CLI base_url the warden, at /v1 env_key LMWARDEN_KEY holds vw_… POST /v1/responses LM Warden checks the key: one per app speaks OpenAI Responses scheduler, key priority usage, latency and live stats per key Replica router a session goes back to the replica that holds its cache one model copy per GPU your GPUs: vLLM or llama.cpp replica 0, GPU 0 replica 1, GPU 1 replica 2, GPU 2 a conversation stays on its replica
Codex CLI からのリクエストの行き先 Codex CLI は、base_url に warden を、env_key に warden のキーを設定して LM Warden にリクエストを送ります。LM Warden はキーを確認し、OpenAI Responses 形式でリクエストを受け付け、キーの優先度に従ってリクエストをキューに入れ、レプリカ ルーターに渡します。ルーターは各セッションを、そのキャッシュをすでに保持しているレプリカ (GPU ごとに一つ置かれたモデルのコピー) に留めます。 Codex CLI base_url the warden, at /v1 env_key LMWARDEN_KEY holds vw_… POST /v1/responses LM Warden checks the key: one per app speaks OpenAI Responses scheduler, key priority usage, latency, live stats per key Replica router a session goes back to the replica that holds its cache replica 0 GPU 0 replica 1 GPU 1 replica 2 GPU 2 your GPUs: vLLM or llama.cpp a conversation stays on its replica
Codex CLI からのリクエストの行き先:Connect が書き込む二つの設定、中央に warden、その先に GPU ごとに一つのモデルのコピー。

テキストによる説明: Codex CLI は、base_url に warden を、env_key に warden のキーを設定して LM Warden にリクエストを送ります。LM Warden はキーを確認し、OpenAI Responses 形式でリクエストを受け付け、キーの優先度に従ってリクエストをキューに入れ、レプリカ ルーターに渡します。ルーターは各セッションを、そのキャッシュをすでに保持しているレプリカ (GPU ごとに一つ置かれたモデルのコピー) に留めます。

プロトコル
OpenAI Responses
サポート
ローカル モデルのみ

ローカル モデルのみです。Codex は Responses API にしか対応していないので、warden が提供中のモデル向けに POST /v1/responses を Chat Completions に変換し、応答、ツール呼び出し、使用量は Responses イベントとして Codex に届きます。ステートレスです。Codex は毎ターン store:false と会話全体を送り、previous_response_id は拒否されます。思考は既定でオンです (Codex は推論の要約を求め、モデルの推論は要約として表示されます。オフにするには config.toml で model_reasoning_effort = "none" を設定します)。ホストされた Web 検索は省かれ (web_search = "disabled" を設定)、ルーターのルールは適用されません。model_context_window にはモデルの実際のウィンドウを設定してください。Codex は知らない名前には 272k を想定します。エンジンではツール呼び出しを有効にする必要があります (vLLM:--enable-auto-tool-choice と --tool-call-parser)。読み込まれていないモデルへのリクエストは 404 になり、Codex は数秒間再試行してから諦めます。

要件

  • ツール呼び出しに対応したモデルが必要です (エージェントによる編集のため)。
  • 32,768 トークン以上のコンテキストで最もよく動きます。

セットアップ

コンソールでは、Connect が warden のアドレス、キー、選んだモデルを入れてこれらのファイルを書き出します。ここではプレースホルダーを使って示しています。

ローカル モデル

~/.codex/config.toml で LM Warden をモデル プロバイダーとして追加します。

config.toml (~/.codex/config.toml)
model = "your-served-model-name"
model_provider = "lmwarden"
# Codex assumes a 272k window for models it does not know; set the real one.
model_context_window = 32768

[model_providers.lmwarden]
name = "LM Warden"
base_url = "https://your-warden/v1"
env_key = "LMWARDEN_KEY"
wire_api = "responses"
# The model's context window is unknown: 32768 is a guess. Set it to the model's real window.
シェル
export LMWARDEN_KEY=vw_YOUR_KEY
codex exec "Reply with the single word OK."

公式ドキュメント:https://learn.chatgpt.com/docs/config-file/config-reference (2026-10-04 時点)。