Codex CLI en tus propias GPU.
LM Warden como proveedor de modelos personalizado para Codex CLI, con un modelo servido.
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.
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).