LM Warden

Codex CLI en tus propias GPU.

LM Warden como proveedor de modelos personalizado para Codex CLI, con un modelo servido.

Adónde va una solicitud de Codex CLI Codex CLI envía sus solicitudes a LM Warden, con base_url configurada con la dirección del warden y una clave del warden en env_key. LM Warden comprueba la clave, recibe la solicitud por OpenAI Responses, la pone en cola según la prioridad de la clave y se la pasa al enrutador de réplicas, que mantiene cada sesión en la réplica que ya tiene su caché, con una copia del modelo por 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
Adónde va una solicitud de Codex CLI Codex CLI envía sus solicitudes a LM Warden, con base_url configurada con la dirección del warden y una clave del warden en env_key. LM Warden comprueba la clave, recibe la solicitud por OpenAI Responses, la pone en cola según la prioridad de la clave y se la pasa al enrutador de réplicas, que mantiene cada sesión en la réplica que ya tiene su caché, con una copia del modelo por 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
Adónde va una solicitud de Codex CLI: las dos opciones que configura Connect, el warden en medio y, después, una copia del modelo por GPU.

Descripción: Codex CLI envía sus solicitudes a LM Warden, con base_url configurada con la dirección del warden y una clave del warden en env_key. LM Warden comprueba la clave, recibe la solicitud por OpenAI Responses, la pone en cola según la prioridad de la clave y se la pasa al enrutador de réplicas, que mantiene cada sesión en la réplica que ya tiene su caché, con una copia del modelo por GPU.

Protocolo
OpenAI Responses
Compatibilidad
Solo modelos locales

Solo modelos locales. Codex solo admite la Responses API; el warden traduce POST /v1/responses a Chat Completions para el modelo servido, así que la respuesta, las llamadas a herramientas y el uso llegan a Codex como eventos de Responses. No guarda estado: Codex envía store:false y toda la conversación en cada turno, y previous_response_id se rechaza. El razonamiento está activado de forma predeterminada (Codex pide resúmenes del razonamiento y el del modelo se muestra resumido; para desactivarlo, define model_reasoning_effort = "none" en config.toml), la búsqueda web alojada se descarta (define web_search = "disabled") y las reglas del enrutador no se aplican. Define model_context_window con la ventana real del modelo: Codex supone 272 mil para los nombres que no conoce. El motor necesita tener habilitadas las llamadas a herramientas (vLLM: --enable-auto-tool-choice y un --tool-call-parser). Una solicitud para un modelo que no está cargado recibe un 404, y Codex reintenta durante varios segundos antes de desistir.

Requisitos

  • Necesita un modelo con llamadas a herramientas (ediciones agénticas).
  • Funciona mejor con al menos 32.768 tokens de contexto.

Configuración

En la consola, Connect genera estos archivos con la dirección de tu warden, tu clave y el modelo que hayas elegido. Aquí aparecen con marcadores de posición.

Modelos locales

Agrega LM Warden como proveedor de modelos en ~/.codex/config.toml.

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.
Shell
export LMWARDEN_KEY=vw_YOUR_KEY
codex exec "Reply with the single word OK."

Documentación oficial: https://learn.chatgpt.com/docs/config-file/config-reference (consultada el 2026-10-04).