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,
epara pegar tu clave,espaciopara marcar Codex,cpara 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/responsescontestaba de una sola vez; ahora emite la respuesta por partes, salvo conqwen3.6ygemma4(mira abajo).model_context_windowhace 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,ollamanilmstudio, que están reservados. Por eso se llamanan. base_urltermina en/v1y 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_windowrepetida. 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 diceduplicate keyy 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 elmodel_providerapunta al clúster pero elmodelsigue siendo de OpenAI, o el modelo se ha retirado:mimo-v2.5ahora esmimo-v2.6-flash. Comprueba el id en Modelos. El CLI de NaN 0.1.30 cambia el perfilnan-mimo-v25pornan-mimo-v26-flashla próxima vez que pases por su Setup.- Con
qwen3.6ygemma4la respuesta sigue llegando de golpe al final del turno. No es un cuelgue: con esos dos el/responsesdel 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 metadataen cada turno. Es ruido: Codex lo imprime antes de leer tumodel_context_window, y la ventana que acaba usando es la tuya.