Codex CLI con UberLLM: ejecuta el agente de codificación de OpenAI en cualquier modelo
Exporta UBERLLM_API_KEY, luego añade una tabla [model_providers.uberllm] a ~/.codex/config.toml con base_url https://api.uberllm.dev/v1, env_key UBERLLM_API_KEY y wire_api "responses", y configura model_provider = "uberllm" más el model id. UberLLM atiende las llamadas de la Responses API de Codex, por lo que los shell commands, las file edits y las multi-step tasks funcionan en cualquier chat model.
Pasos
- Crea una clave en tu página de claves y añade crédito.
- Instala Codex si no lo tienes:
npm install -g @openai/codex. - Pon la clave en tu perfil de shell (
~/.zshrco~/.bashrc) y abre una nueva terminal:
export UBERLLM_API_KEY="ull_..."
- Abre
~/.codex/config.toml(créalo si no existe) y añade:
model = "moonshotai/kimi-k3"
model_provider = "uberllm"
web_search = "disabled"
[model_providers.uberllm]
name = "UberLLM"
base_url = "https://api.uberllm.dev/v1"
env_key = "UBERLLM_API_KEY"
wire_api = "responses"
- Ejecuta
codexen una carpeta de proyecto y asígnale una tarea.
Mantén base_url terminando en /v1: Codex le añade /responses. env_key es el nombre de la variable, no la clave en sí.
Cambiar modelos
Pasa -m para una sesión, por ejemplo codex -m deepseek/deepseek-v4.1-flash para una pequeña corrección, o cambia model en el archivo. Cualquier ID de modelo de chat de uberllm.dev/models funciona.
Para scripts y CI, codex exec ejecuta una tarea sin la pantalla interactiva:
codex exec --skip-git-repo-check "add a docstring to every function in utils.py"
Ajustes que vale la pena añadir
model_context_window: Codex no conoce el tamaño de contexto de los modelos fuera de la lista de OpenAI y asume 272,000 tokens. Para un modelo más pequeño, establece el número de su página en uberllm.dev/models (por ejemplo,model_context_window = 131072), para que Codex compacte la conversación antes de quedarse sin espacio.model_reasoning_effort:"low","medium"o"high"se pasa a los modelos que piensan (DeepSeek, Kimi Thinking, GLM, GPT-5). Omítelo para el valor predeterminado del modelo.web_search = "disabled": La búsqueda web de Codex se ejecuta en los propios servidores de OpenAI, por lo que no puede ejecutarse a través de otro proveedor. Al desactivarlo, no se le ofrece al modelo una herramienta que no puede usar.
Qué funciona
Cada herramienta de Codex es una llamada de función normal desde el lado de la API, así que las ejecuciones de comandos, ediciones de archivos, planes y servidores MCP que añades a Codex, todo funciona en cualquier modelo que acepte llamadas a herramientas. Codex envía toda la conversación en cada turno (store = false), así que nada se guarda en UberLLM entre llamadas. Cada llamada aparece en Dashboard → Activity bajo el nombre de la aplicación codex, con su costo.
Solución de problemas
wire_api = "chat"ya no es compatible: Codex 0.95 y posteriores solo entienden la Responses API. Establecewire_api = "responses".- 401 o "Missing environment variable: UBERLLM_API_KEY": la variable no está exportada en la terminal donde se ejecuta Codex. Abre una nueva terminal después de editar tu perfil, o ejecuta
export UBERLLM_API_KEY=...primero. - 404 en cada turno: a
base_urlle falta/v1. Debe ser exactamentehttps://api.uberllm.dev/v1. - "Model metadata for … not found. Defaulting to fallback metadata": Codex imprime esto para cada modelo fuera de la lista propia de OpenAI. Es inofensivo; establece
model_context_windowcomo arriba. - El modelo responde pero nunca ejecuta un comando: elige un modelo de la primera tabla. Los modelos pequeños se desvían del formato de herramienta de Codex.
- 402 créditos insuficientes: añade crédito en la página de créditos. Para un límite estricto, establece un límite de gasto en la key.