Hermes Agent no sustituye a Codex ni a OpenCode: los controla. Hermes incluye dos skills, codex y opencode, que lanzan cada CLI como un subproceso, y cada subproceso paga con su propia credencial en lugar de utilizar el proveedor de modelos de Hermes. Ese es el hecho que conviene tener presente: un flujo de trabajo, cuatro superficies de credenciales, tres medidores independientes y dos superficies que solo se comunicarán con un endpoint que sirva la Responses API.
Esta página trata sobre Hermes Agent, el software de agentes con licencia MIT de Nous Research: no sobre Hermes 3 ni Hermes 4, la familia de modelos de pesos abiertos de la misma empresa; tampoco sobre el motor JavaScript del mismo nombre ni sobre la marca de artículos de lujo. Una comprobación en directo de el repositorio el 19 de septiembre de 2026 devolvió archived: false, una licencia MIT y un push ese día; la versión publicada más reciente es Hermes Agent v0.21.3, etiquetada como v2026.9.14 el 14 de septiembre de 2026. Para conocer el coste de ejecución del propio agente, consulta precios de Hermes Agent.
Tres elementos llamados "codex" dentro de Hermes
La colisión es lo primero que hay que resolver, porque los tres aparecen en la configuración y solo uno es lo que la mayoría de la gente quiere decir con hermes codex.
| Nombre | Qué es | Dónde se configura | Quién ejecuta el bucle de herramientas |
|---|---|---|---|
skill codex | Una skill incluida que delega la programación a la CLI de Codex como subproceso | No hay nada que configurar en Hermes; la CLI debe estar instalada y autenticada | Codex, como proceso independiente; Hermes lee su salida |
codex_responses | Un valor de transporte para un proveedor personalizado: el protocolo de comunicación que utiliza Hermes | providers.<name>.transport en ~/.hermes/config.yaml | Hermes |
codex_app_server | Un runtime que entrega los turnos propios de Hermes para OpenAI al servidor de aplicaciones de Codex | model.openai_runtime, o /codex-runtime codex_app_server | El runtime de Codex; Hermes se convierte en la envoltura que lo rodea |
Fuentes: la skill codex incluida, la documentación de proveedores y la página del runtime del servidor de aplicaciones de Codex, todas consultadas el 19 de septiembre de 2026.
Delegar una tarea de programación a Codex
La skill codex es de la versión 1.0.1, tiene licencia MIT y su función declarada es "Delegate coding to OpenAI Codex CLI (features, PRs)." Sus requisitos previos son explícitos: Codex instalado con npm install -g @openai/codex; autenticación de OpenAI configurada mediante OPENAI_API_KEY o una sesión OAuth de Codex; el trabajo debe ejecutarse dentro de un repositorio de Git, porque Codex se niega a ejecutarse fuera de uno; y las llamadas de terminal necesitan pty=true porque Codex es una aplicación de terminal interactiva.
El lanzamiento es una llamada de terminal en segundo plano — codex exec --sandbox workspace-write 'Refactor the auth module' con un workdir — que devuelve un ID de sesión. A partir de ahí, Hermes consulta la sesión, lee su registro, responde a las solicitudes de aprobación con una acción submit y la termina si algo sale mal. El resultado llega al agente principal como salida del proceso, además de lo que Codex haya dejado en el árbol de trabajo; no se comparte memoria entre los dos procesos.
La skill documenta dos límites en lugar de ocultarlos. --full-auto sigue funcionando, pero la CLI activa ahora recomienda utilizar --sandbox workspace-write. Además, cuando Codex se invoca desde una puerta de enlace o un contexto de servicio de Hermes —por ejemplo, una sesión de agente controlada por chat—, el aislamiento workspace-write puede fallar aunque el mismo comando funcione en un shell interactivo, con errores de bubblewrap o del espacio de nombres de usuario como setting up uid map: Permission denied. La solución indicada por la propia skill es --sandbox danger-full-access, que elimina por completo el aislamiento de Codex; si la eliges, el límite del proceso en el que ejecutas Hermes será la única contención restante.
Delegar una tarea de programación a OpenCode
La skill opencode es de la versión 1.2.0, tiene licencia MIT y se describe como "Delegate coding to OpenCode CLI (features, PR review)." Instala con npm i -g opencode-ai@latest o brew install anomalyco/tap/opencode, después ejecuta opencode auth login y verifica con opencode auth list. La documentación propia de OpenCode también ofrece el comando /connect dentro de la interfaz de terminal, que escribe las credenciales en ~/.local/share/opencode/auth.json; ambas rutas están vigentes, así que seguir una no significa que la otra esté obsoleta.
Para trabajos acotados, la skill prefiere una sola ejecución: opencode run 'Add retry logic to API calls and update tests', con --model provider/model para fijar un modelo. Las sesiones interactivas se ejecutan en segundo plano con un pty y se controlan mediante poll, log y submit. La skill destaca una trampa en negrita: no envíes /exit; no es un comando válido de OpenCode y abre en su lugar un cuadro de diálogo de selección de agente. Sal con Ctrl+C o mediante una acción kill.
El sistema de nombres tiene su propia trampa actual. El paquete npm opencode-ai es el producto vigente; la organización de GitHub llamada opencode-ai contiene el predecesor archivado, cuyo último push fue el 18 de septiembre de 2025. El repositorio actual es anomalyco/opencode, no sst/opencode; la API de GitHub resuelve la ruta antigua a la nueva, y la organización sst ahora muestra "We've moved to https://github.com/anomalyco". Última versión v1.18.31, 14 de septiembre de 2026 (API REST de GitHub, 19 de septiembre de 2026).
El mapa que realmente determina tu factura
Esta es la parte que la documentación de ninguno de los dos proveedores cubre, porque cada uno solo controla su mitad. En este flujo existen cuatro superficies de credenciales, cada una configurada en un archivo diferente. Las cuatro pueden apuntar a un endpoint de terceros, pero no en las mismas condiciones, y las dos superficies de Codex solo aceptan la Responses API.
| Superficie | Archivo de configuración | Credencial que utiliza | Protocolo de comunicación requerido | Medidor que consultas |
|---|---|---|---|---|
| Turnos propios de Hermes | ~/.hermes/config.yaml | key_env, api_key o key_cmd | Cualquiera de chat_completions, anthropic_messages o codex_responses | Hermes /usage |
| CLI de Codex delegada | ~/.codex/config.toml | Variable env_key, o ~/.codex/auth.json | Solo Responses API | La cuenta de ChatGPT o de la API de OpenAI |
| CLI de OpenCode delegada | opencode.json | options.apiKey, o ~/.local/share/opencode/auth.json | Lo determina el paquete npm que nombres | opencode stats |
| Runtime del servidor de aplicaciones de Codex | model.openai_runtime, además de un [model_providers.<name>] coincidente en la ruta del proveedor con nombre | codex login y hermes auth add openai-codex en la ruta de suscripción; el env_key del proveedor personalizado con nombre en los demás casos | Responses API — wire_api = "responses" en el lado de Codex | La suscripción de ChatGPT o el medidor propio del proveedor con nombre |
Hermes establece claramente la separación: su propio OAuth de Codex reside en ~/.hermes/auth.json, mientras que la sesión de la CLI independiente reside en ~/.codex/auth.json; la página del runtime añade el motivo: Hermes deliberadamente no comparte el estado OAuth con la CLI de Codex para evitar que ambos se sobrescriban al actualizar el token. Por tanto, una tarea de programación delegada no hereda la configuración del proveedor de Hermes; lee ~/.codex/config.toml o opencode.json y utiliza el mismo saldo solo si deliberadamente la diriges a la misma clave. Esto es una ventaja cuando quieres aislar el alcance de un incidente y una sorpresa cuando suponías que un único saldo lo cubría todo.
Qué cambia con el runtime del servidor de aplicaciones
Si activas el runtime del servidor de aplicaciones de Codex, el cálculo cambia de tres formas que conviene conocer antes de hacerlo. Enruta los turnos openai/*, openai-codex/* y de proveedores personalizados con nombre; su tabla de funciones marca los demás proveedores que no son de OpenAI como "n/a — not routed through codex", y un provider: custom anónimo con una URL base simple no es apto explícitamente porque no existe un nombre estable que entregar a Codex. Cuatro herramientas de Hermes dejan de estar disponibles: delegate_task, memory, session_search y todo, porque necesitan el bucle de agente en ejecución y una devolución de llamada sin estado no puede controlarlas. Y el aspecto del coste que más se pasa por alto: con el proveedor openai-codex, las tareas auxiliares también pasan por tu suscripción de ChatGPT de forma predeterminada: generación de títulos, compresión de contexto, detección automática de imágenes y la bifurcación de revisión de auto mejora en segundo plano, porque el cliente auxiliar de Hermes utiliza el proveedor principal cuando no se establece una anulación por tarea.
Un endpoint de terceros no queda excluido en este runtime, pero requiere un segundo archivo de configuración. La página del runtime documenta la ruta: una entrada providers.<name> en ~/.hermes/config.yaml con openai_runtime: codex_app_server, además de una tabla [model_providers.<name>] del mismo nombre en ~/.codex/config.toml que contenga base_url, env_key y wire_api = "responses". Hermes envía únicamente el modelo y el nombre del proveedor cuando comienza el hilo y nunca reenvía la clave, por lo que esa variable de entorno debe estar presente en el proceso donde se ejecuta Hermes; las llamadas auxiliares siguen utilizando la entrada propia de Hermes para ese proveedor. La misma página indica una salvedad: los dos nombres deben coincidir exactamente o Codex informa de un proveedor desconocido en lugar de recurrir al endpoint de Hermes. Mantener el runtime predeterminado (openai_runtime: auto) con un proveedor custom: sigue siendo la ruta más sencilla y la única que no exige que el endpoint hable Responses. Ten en cuenta también que Hermes dirige el subproceso de Codex a ~/.codex/ independientemente del perfil de Hermes activo, por lo que hermes -p work y hermes -p personal comparten una única autenticación de Codex, salvo que establezcas CODEX_HOME y vuelvas a iniciar sesión.
Dirigir las tres superficies abiertas a un único endpoint
Cada bloque siguiente está tomado de documentos fuente de los proveedores, no probado en tiempo de ejecución. Kunavo no ha ejecutado una sesión de Hermes, un codex exec ni un opencode run contra su endpoint, y una guía de configuración publicada es una referencia de configuración, no una prueba de compatibilidad. Mantén disponible una ruta operativa mientras pruebas estas opciones.
# Surface 1: Hermes' own turns.
providers:
kunavo:
api: https://api.kunavo.com/v1 # aliases: base_url, url
key_env: KUNAVO_API_KEY
transport: chat_completions # set it explicitly; auto-detection is only a fallback
model:
default: claude-sonnet-4-6
provider: custom:kunavotransport es toda la historia para los turnos propios de Hermes. Kunavo sirve /v1/chat/completions, /v1/messages y /v1/responses, por lo que cada uno de los tres valores de transporte de Hermes tiene un endpoint correspondiente: una coincidencia a nivel de documentación, no una prueba realizada. La documentación de proveedores de Hermes indica que la autodetección basada en URL solo ocurre como alternativa cuando el campo está vacío, así que establécelo. Cambia durante la sesión con /model custom:kunavo:<model-id>.
# Surface 2: the delegated Codex CLI. Keep this OUTSIDE Hermes' managed block.
model = "claude-sonnet-4-6"
model_provider = "kunavo"
[model_providers.kunavo]
name = "Kunavo"
base_url = "https://api.kunavo.com/v1"
env_key = "KUNAVO_API_KEY" # the NAME of the variable, not the key itself
# wire_api defaults to "responses", and "responses" is the only value that parses.
# Leave requires_openai_auth unset: true sends Codex to auth.json instead of env_key.La parte de Codex es un requisito estricto, y conviene comprobarla en el nivel de origen en lugar de aceptarla sin más. En codex-rs/model-provider-info/src/lib.rs, consultado el 19 de septiembre de 2026, el enum del protocolo de conexión tiene exactamente una variante: Responses. Establecer wire_api = "chat" ahora es un error de configuración estricto cuyo mensaje indica que debes establecer responses en su lugar. Una puerta de enlace que solo hable Chat Completions no puede ser un proveedor de Codex. La referencia de claves actual se encuentra en learn.chatgpt.com; cualquier referencia que todavía cite developers.openai.com/codex/… es una redirección 308, algo que confirmamos ese mismo día.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"kunavo": {
"npm": "@ai-sdk/openai-compatible",
"name": "Kunavo",
"options": {
"baseURL": "https://api.kunavo.com/v1",
"apiKey": "{env:KUNAVO_API_KEY}"
},
"models": { "claude-sonnet-4-6": { "name": "Claude Sonnet 4.6" } }
}
}
}En OpenCode, el paquete npm selecciona el formato de conexión: @ai-sdk/openai-compatible llama a /chat/completions, mientras que @ai-sdk/openai llama a /responses. Nombra el que corresponda a la ruta que realmente sirve tu endpoint; la documentación no describe el modo de fallo de nombrar el otro, y no lo probamos. Que las habilidades incluidas respeten un proveedor personalizado configurado de esta forma es una inferencia a partir de la documentación de la sub-CLI: las habilidades son simples llamadas shell a subprocesos, así que deberían respetarlo; pero ningún documento de Hermes lo afirma y no lo ejecutamos.
Una estimación ilustrativa con los tres medidores
Esto es aritmética ilustrativa de tokens, no costes de tareas medidos ni un límite máximo de facturación. Supongamos un día intenso: el orquestador y sus ranuras auxiliares reciben 1,500,000 tokens de entrada sin caché y 80,000 tokens de salida, y cada trabajador de programación delegado recibe 2,000,000 tokens de entrada y 120,000 tokens de salida. Esas proporciones son supuestos ilustrativos. Las tarifas son los precios actuales del catálogo de Kunavo por millón de tokens.
| Rol | Entrada / salida supuestas | En Claude Sonnet 4.6 | En Claude Haiku 4.5 |
|---|---|---|---|
| Turnos del orquestador Hermes y sus ranuras auxiliares | 1.5 M / 80 K | $3.99 | $1.33 |
| Trabajador de Codex delegado | 2.0 M / 120 K | $5.46 | $1.82 |
| Trabajador de OpenCode delegado | 2.0 M / 120 K | $5.46 | $1.82 |
Según estos supuestos, ejecutar los tres roles en modelos Claude Sonnet 4.6 cuesta $14.91 al día, mientras que poner el orquestador y su tráfico auxiliar en Claude Haiku 4.5 y dejar ambos trabajadores de programación en modelos Claude Sonnet 4.6 cuesta $12.25. Esa diferencia es el argumento a favor de elegir el modelo por rol, y también explica por qué importa el mapa de credenciales anterior: si los trabajadores de programación usan cuentas separadas, esta aritmética debe hacerse tres veces, con tres medidores, en lugar de una sola vez.
El importe del catálogo de Kunavo es un mínimo de facturación, no un límite máximo: cuando el proveedor ascendente informa de su cargo, la factura es el mayor de estos dos importes: el coste del catálogo y el coste del proveedor ascendente multiplicado por el margen aplicable. Los cargos de caché y las herramientas externas quedan fuera de este ejemplo. La recarga mínima es de $10 en crédito prepago, lo que constituye un mínimo de financiación, no una tarifa por tarea ni una suscripción; consulta los detalles de facturación.
Qué ruta de financiación gana en cada caso
| Ruta | Cuándo gana | A qué renuncias |
|---|---|---|
| La suscripción de ChatGPT impulsa Codex | La programación es la carga de trabajo principal, tu uso encaja en la asignación del plan y quieres los complementos nativos y el sandbox del entorno de ejecución app-server | El turno del orquestador tiene alcance de OpenAI en ese entorno de ejecución, y cuatro herramientas de Hermes más las ranuras auxiliares pasan a la suscripción |
| Una puerta de enlace en el entorno de ejecución predeterminado de Hermes | Importa más tener un único saldo prepago para los turnos de Hermes y ambos trabajadores de programación que una tarifa plana, y quieres un modelo diferente por rol | Codex requiere específicamente un endpoint real de Responses; nosotros no probamos nada de esto en tiempo de ejecución |
| Claves directas de cada proveedor en cada herramienta | Quieres aislar el radio de impacto por herramienta y tener una factura separada de cada proveedor | Tres saldos y tres medidores que supervisar, y un segundo proveedor implica una segunda cuenta |
| OpenCode Zen | Solo te interesa el trabajador de OpenCode y quieres un catálogo seleccionado con un saldo que se recargue automáticamente | Zen es en sí una puerta de enlace, así que compáralo con otras puertas de enlace en lugar de tratar sus tarifas como «lo que cuesta OpenCode»; la CLI tiene licencia MIT y es gratuita |
| Modelos locales mediante el proveedor personalizado de Hermes | Coste marginal cero y datos que nunca salen del equipo | Fiabilidad de las llamadas a herramientas, de la que dependen estos tres agentes; la propia documentación de Hermes enumera indicadores por servidor solo para hacer funcionar las llamadas a herramientas |
Primero, dos correcciones a las formulaciones habituales. «Codex cuesta 20 $ al mes» y «Codex se paga por token» son incorrectas por el mismo motivo: learn.chatgpt.com (consultado el 19 de septiembre de 2026) describe dos opciones: planes de ChatGPT llamados Free, Go, Plus, Pro, Business y Enterprise & Edu cuyas asignaciones cubren el uso de Codex, o una clave de API facturada con las tarifas estándar de la API, sin necesidad de suscripción. Solo la segunda opción permite sustituir el endpoint por uno de terceros. Deliberadamente no mostramos las asignaciones de mensajes por plan: esa página indica que el número depende del modelo y del tamaño de tus tareas, y nuestra consulta se realizó mediante un resumidor, no mediante HTML renderizado. Comprueba tu propia cuenta. Por otro lado, OpenCode Zen afirma que es «completamente opcional y no necesitas usarlo para usar OpenCode», cobra por solicitud con cargo a un saldo de crédito y, de forma predeterminada, recarga 20 $ cuando el saldo cae por debajo de 5 $; una diferencia real de control de costes frente a un saldo prepago que recargas tú mismo.
Configúralo y, después, lee los tres medidores
Empieza por la superficie que realmente necesitas. Kunavo publica referencias de configuración para ambos trabajadores de programación: Codex CLI cubre el bloque de proveedor exclusivo de Responses, y OpenCode cubre la elección del paquete npm que determina el formato de conexión. Ejecuta una delegación limitada y, después, consulta el cargo que registró cada cuenta —/usage, opencode stats --days 7 y la propia cuenta del trabajador de Codex— antes de asumir que cualquiera de los tres números incluye a los demás. Crea una cuenta de Kunavo cuando estés listo para financiar una clave.
¿Comparas los dos trabajadores de programación en lugar de conectarlos entre sí? OpenCode vs Codex aborda directamente esa cuestión, y OpenAI-compatible API explica qué significan en la práctica los dos formatos de conexión.
Preguntas frecuentes
¿Hermes Agent tiene una integración con Codex?
Sí, y hay dos independientes. Hermes incluye una skill llamada codex, versión 1.0.1, con licencia MIT, cuya descripción es "Delegate coding to OpenAI Codex CLI (features, PRs)." Ejecuta `codex exec` mediante las herramientas de terminal y procesos de Hermes, por lo que la CLI de Codex realiza la programación y Hermes lee su salida. Por separado, Hermes tiene un runtime de servidor de aplicaciones de Codex opcional que entrega los turnos propios de Hermes para openai/*, openai-codex/* y proveedores personalizados con nombre al servidor de aplicaciones de la CLI de Codex, de modo que el runtime de Codex ejecuta el bucle de herramientas y Hermes se convierte en la envoltura que lo rodea. La skill está activada de forma predeterminada; el runtime está desactivado salvo que actives una opción. Ambos datos se obtuvieron el 19-09-2026 del repositorio de Hermes Agent.
¿Cómo uso OpenCode con Hermes Agent?
Instala la CLI con `npm i -g opencode-ai@latest` o `brew install anomalyco/tap/opencode`, autentícate con `opencode auth login` y confirma con `opencode auth list`, que debería mostrar al menos un proveedor. A continuación, la skill opencode incluida en Hermes (versión 1.2.0, MIT) delega una tarea acotada con `opencode run 'Add retry logic to API calls and update tests'` desde el directorio del proyecto, con la opción de fijar un modelo mediante `--model provider/model`. Supervisa una ejecución en segundo plano con las acciones poll y log de la herramienta de procesos, responde a las solicitudes con submit y sal con Ctrl+C o kill. No envíes /exit: la skill indica que no es un comando válido de OpenCode y abre en su lugar un cuadro de diálogo de selección de agente. Información obtenida del archivo de la skill y de opencode.ai el 19-09-2026.
¿Qué cuenta paga cuando Hermes delega una tarea de programación a Codex u OpenCode?
La cuenta propia de la sub-CLI, no la que controla Hermes. Ambas skills lanzan la herramienta como un subproceso, y cada subproceso se autentica desde su propio almacén de credenciales: ~/.codex/auth.json o OPENAI_API_KEY para Codex, y ~/.local/share/opencode/auth.json o las variables de entorno del proveedor para OpenCode. Hermes documenta su propio OAuth de Codex en un archivo diferente, ~/.hermes/auth.json, y afirma que deliberadamente no comparte el estado OAuth con la CLI de Codex para evitar sobrescribir la actualización del token. Por tanto, existen tres medidores y se consultan de tres formas: /usage propio de Hermes para el orquestador, `opencode stats` para el trabajador de OpenCode y la cuenta de ChatGPT o de la API de OpenAI para el trabajador de Codex.
¿Puede la CLI de Codex delegada apuntar a una API de terceros en lugar de OpenAI?
Solo si ese endpoint sirve la Responses API. En el código fuente de Codex consultado el 19-09-2026, la enumeración del protocolo de comunicación tiene exactamente una variante, Responses, y `wire_api = "chat"` ahora se deserializa como un error grave que indica establecer `wire_api = "responses"`. Por tanto, un endpoint que implemente únicamente /v1/chat/completions no puede ser un proveedor de Codex con ninguna configuración. Define el proveedor en [model_providers.<id>] dentro de ~/.codex/config.toml con base_url y env_key, elige un id distinto de openai, ollama o lmstudio porque están reservados, y deja requires_openai_auth sin establecer para que la clave proceda de la variable de entorno en lugar de auth.json.
¿La skill codex de Hermes es lo mismo que el transporte codex_responses?
No, y hay tres claves de configuración diferentes que contienen la palabra codex. La skill es un destino de delegación: Hermes ejecuta la CLI de Codex para realizar el trabajo de programación. codex_responses es un valor de transporte para una entrada de proveedor personalizado en ~/.hermes/config.yaml, junto con chat_completions y anthropic_messages, que describe qué protocolo de comunicación utiliza Hermes con ese endpoint. codex_app_server es un valor de runtime para model.openai_runtime, que determina si Hermes ejecuta su propio bucle de herramientas o entrega el turno al servidor de aplicaciones de la CLI de Codex. Cambiar uno no cambia los demás.
¿SST sigue manteniendo opencode?
El proyecto sigue activo, pero cambió el nombre del propietario. La API de GitHub resuelve sst/opencode a anomalyco/opencode, que el 19-09-2026 devolvió archived false, una licencia MIT, un push ese mismo día y la página de inicio opencode.ai; la versión más reciente es v1.18.31 del 14-09-2026. La propia organización sst ahora muestra la descripción "We've moved to https://github.com/anomalyco". Ten en cuenta la trampa: el nombre del paquete npm sigue siendo opencode-ai y está actualizado, mientras que la organización de GitHub llamada opencode-ai contiene el proyecto predecesor archivado, cuyo último push fue el 18-09-2025. La misma cadena, dos cosas diferentes.
Comprobado el 19 de septiembre de 2026: los archivos de habilidades de Hermes Agent para codex y opencode, y los documentos del entorno de ejecución app-server y de proveedores de Codex en ese repositorio; codex-rs/model-provider-info/src/lib.rs en openai/codex; las referencias de precios y configuración de learn.chatgpt.com, incluidas las redirecciones 308 desde developers.openai.com; las páginas de proveedores y Zen de opencode.ai; y el estado de los repositorios de los cuatro proyectos mediante la API REST de GitHub. No comprobado: la ejecución de nada de esto. No se ejecutó ninguna sesión de Hermes, ningún codex exec, ninguna ejecución de opencode ni ninguna solicitud de estas herramientas contra el endpoint de Kunavo; las asignaciones de mensajes por plan y las tarifas de modelos de Zen se omiten deliberadamente porque consultamos esas dos páginas mediante un resumidor. Las tarifas de tokens de Kunavo proceden del catálogo actual; todas las cifras en dólares son aritmética ilustrativa de tokens.