Docs

Codex.

Codex CLI es el agente de terminal de OpenAI. Habla el formato de OpenAI, que es el mismo que habla NaN, así que se conecta directamente: solo hay que declarar un proveedor nuevo.

Puedes saltarte todo esto El CLI de NaN escribe esta configuración por ti: pestaña Setup, e para pegar tu clave, espacio para marcar Codex, c para aplicar.

Qué necesitas

  • Codex CLI instalado.
  • Tu API key de NaN en una variable de entorno.
export NAN_API_KEY="sk-tu-clave"

Codex lee la clave de la variable de entorno que le indiques, no del fichero de configuración. Así no acaba escrita en un fichero que puedas subir a un repositorio sin querer.

Configuración

Edita ~/.codex/config.toml:

model_provider = "nan"
model = "glm5.3-flash"
model_context_window = 1048576

[model_providers.nan]
name = "NaN"
base_url = "https://api.nan.builders/v1"
env_key = "NAN_API_KEY"
wire_api = "responses"

Cuatro detalles que importan:

  • wire_api = "responses" es el único valor que Codex sigue aceptando. Desde la 0.154, "chat" no es que vaya peor: el fichero no carga y Codex no abre. Esta página recomendaba "chat" porque /responses contestaba de una sola vez; ahora emite la respuesta por partes, salvo con qwen3.6 y gemma4 (mira abajo).
  • model_context_window hace falta porque Codex no tiene metadatos de los modelos del clúster: sin él supone una ventana y compacta la conversación mucho antes de tiempo. Pon la del modelo que uses; están en Modelos.
  • El identificador del proveedor no puede ser openai, ollama ni lmstudio, que están reservados. Por eso se llama nan.
  • base_url termina en /v1 y nada más. No añadas la ruta del endpoint.

Comprueba que funciona

codex

Pídele algo corto, por ejemplo que liste los ficheros del directorio y resuma qué hace el proyecto. Si contesta, ya está funcionando contra el clúster.

Si ves un error de autenticación, lo más habitual es que la variable NAN_API_KEY no esté exportada en la terminal desde la que lanzas codex.

Cambiar de modelo

Puedes cambiarlo sin tocar el fichero:

codex --model deepseek-v4-flash

Con una pega: la model_context_window del fichero no cambia con el modelo, así que un modelo de 262.144 tokens se queda con la ventana del que tengas declarado, y Codex compacta contra una ventana que no existe.

Para tener los modelos del clúster a mano, cada uno con su ventana, escribe un fichero por modelo en ~/.codex/. Codex lo llama perfil: tu config.toml con ese fichero encima.

# ~/.codex/nan-qwen36.config.toml
model = "qwen3.6"
model_provider = "nan"
model_context_window = 262144
codex --profile nan-qwen36

Ojo con el nombre: Codex quiere “un nombre simple” y rechaza los puntos, así que qwen3.6 no vale como perfil aunque sí como modelo.

El resto del config.toml (tu proveedor, tus MCP, tus permisos) sigue aplicando; el perfil solo pisa lo que nombra. El CLI de NaN los escribe por ti, uno por cada modelo de chat del clúster, con el prefijo nan- y sin los puntos: nan-glm53-flash, nan-deepseek-v4-flash, nan-mimo-v26-flash, nan-qwen36… Al desconectar Codex se los lleva.

Modelo recomendado

glm5.3-flash para trabajo de código. Si tienes el tier premium, glm5.3. Para preguntas sueltas que no tocan ficheros, deepseek-v4-flash va sobrado.

Problemas conocidos
  • Las funciones en la nube de Codex no aplican. Al declarar un proveedor propio, todo va contra NaN desde tu máquina.
  • El razonamiento se ve distinto según el modelo. Los modelos del clúster emiten su traza de razonamiento a su manera, y Codex no siempre la presenta como con los modelos de OpenAI.
  • wire_api = "chat" en un fichero antiguo. Codex 0.154 lo retiró: si lo tienes, ni la CLI ni la app de escritorio abren. Cámbialo a "responses", o pasa por el Setup del CLI de NaN, que lo corrige solo.
  • model_context_window repetida. Las versiones del CLI de NaN anteriores a la 0.1.20 la añadían al final del fichero en cada pasada del setup. Dos son una clave duplicada y Codex no carga el fichero: la CLI dice duplicate key y la app abre un diálogo de error y nada más. La 0.1.20 deja una sola y la pone donde se lee.
  • 401 This API key does not have access to the requested model. Pese al mensaje, la clave suele estar bien: el modelo es uno que el clúster no sirve. O el model_provider apunta al clúster pero el model sigue siendo de OpenAI, o el modelo se ha retirado: mimo-v2.5 ahora es mimo-v2.6-flash. Comprueba el id en Modelos. El CLI de NaN 0.1.30 cambia el perfil nan-mimo-v25 por nan-mimo-v26-flash la próxima vez que pases por su Setup.
  • Con qwen3.6 y gemma4 la respuesta sigue llegando de golpe al final del turno. No es un cuelgue: con esos dos el /responses del clúster retiene la respuesta hasta tenerla completa. El resto de modelos la va emitiendo según se escribe.
  • Model metadata for ... not found. Defaulting to fallback metadata en cada turno. Es ruido: Codex lo imprime antes de leer tu model_context_window, y la ventana que acaba usando es la tuya.
nan.builders © 2026
Copied to clipboard