hermes@agent:~/.hermes$ cat hermes.md

Hermes Agent: referencia para profesionales (2026)

# Una referencia práctica sobre Hermes Agent, el agente de IA de código abierto y mejora continua de Nous Research: autenticación con proveedores, archivos de configuración, sistema de habilidades y uso como puerta de enlace de mensajería multiplataforma.

author: words: 57252 read_time: 263m updated: 2026-09-25 12:54
$ less hermes.md

TL;DR: Hermes Agent es un agente de IA de código abierto y mejora continua creado por Nous Research. Funciona como una CLI y como un gateway de mensajería multiplataforma, almacena en disco una identidad duradera y memoria persistente, reúne skills que mejoran con el uso y es compatible con cualquier proveedor de LLM compatible con OpenAI: Nous Portal, OpenRouter, Anthropic, GitHub Copilot, z.ai, Kimi, MiniMax, DeepSeek, Qwen Cloud, Hugging Face, Google, xAI/SuperGrok o tu propio endpoint autoalojado.1219 La versión actual es la v0.21.5 (etiqueta v2026.9.24, 24 de septiembre de 2026), un parche acumulativo de la línea v0.21; Novedades de la versión v0.21.5 explica qué cambió, y las secciones de versiones posteriores están ordenadas de la más reciente a la más antigua.52 Para la mayoría de los usuarios nuevos, la parte más difícil es la autenticación con proveedores: Hermes incluye 39 proveedores en su lista estática de selección en la etiqueta v2026.9.24 y amplía automáticamente esa lista mediante 38 plugins de proveedores incluidos, además de endpoints personalizados y tres rutas de autenticación distintas (clave de API en .env, OAuth mediante hermes model o un endpoint personalizado en config.yaml).53 El modelo de autenticación es lo primero que debes aprender: todo lo demás depende del proveedor que se resuelva.

Hermes Agent funciona como un entorno de ejecución de agentes completo, no como una capa de chat. Lee tu sistema de archivos, ejecuta comandos en backends aislados, extrae contenido de la web, crea subagentes, ejecuta tareas cron programadas, se comunica con Telegram/Discord/Slack/WhatsApp/Signal/Email desde un único proceso de gateway y crea sus propios skills a partir de la experiencia.1 La CLI es una interfaz de terminal construida sobre un bucle de conversación en run_agent.py; el gateway es un proceso de larga duración que canaliza los mensajes de las plataformas de mensajería a través del mismo bucle de conversación.3

La diferencia entre un uso ocasional y uno experto de Hermes se reduce a cinco sistemas. Domínalos y Hermes se convertirá en un multiplicador de capacidades:

  1. Resolución de proveedores: cómo se asignan los flujos de autenticación a las llamadas de API
  2. Jerarquía de configuración: config.yaml + .env + auth.json + SOUL.md + AGENTS.md
  3. Sistema de herramientas y toolsets: qué puede hacer el agente, con permisos específicos para cada plataforma
  4. Sistema de skills: memoria procedimental que el agente crea y perfecciona
  5. Gateway + cron + profiles: ejecutar Hermes donde desarrollas tu actividad, no solo donde te encuentras

Puntos clave

  • La autenticación con proveedores tiene tres rutas, no una. Clave de API en .env, OAuth mediante hermes model/hermes auth o un endpoint personalizado en config.yaml. Elige la ruta adecuada para tu proveedor, no la que te resulte más familiar.
  • Cambiar de proveedor requiere un solo comando. hermes model te guía de forma interactiva por todos los proveedores compatibles, incluidos los inicios de sesión con OAuth, mientras que /model provider:model permite cambiar durante una sesión sin perder el historial.2
  • Dos archivos conforman la superficie de configuración que puede editar el usuario. ~/.hermes/config.yaml contiene la configuración y ~/.hermes/.env, los secretos. Hermes administra directamente auth.json, SOUL.md, MEMORY.md y skills/: puedes editar SOUL.md manualmente, pero el propio agente modifica los demás.4
  • Hermes es el sucesor de OpenClaw. Si estás migrando, hermes claw migrate importa automáticamente más de 30 categorías de estado.5
  • De forma predeterminada, las tareas auxiliares utilizan tu modelo principal. La visión, la clasificación de aprobaciones, la compresión y los títulos de sesión se ejecutan como llamadas «auxiliares» independientes de LLM, y en esta etiqueta auto dirige todas ellas a tu modelo de chat principal: no hay nada que configurar, pero, con modelos de razonamiento costosos, estas tareas secundarias aumentan el costo de manera considerable. Cuando esto sea importante, asigna modelos rápidos y económicos a cada espacio auxiliary.<task>.434

Todas las secciones siguientes se basan en la documentación original disponible en hermes-agent.nousresearch.com/docs y en el árbol de código fuente de github.com/NousResearch/hermes-agent. Cada afirmación factual incluye una nota al pie que remite a la página original específica de la que procede.

Elige tu ruta

Lo que necesitas Ve aquí
Instalar Hermes Instalación: instalador de una sola línea o pasos manuales
Iniciar sesión con un proveedor Autenticación y proveedores: la sección que viniste a consultar
Cambiar de modelo durante una sesión El comando hermes auth y Endpoints personalizados y autoalojados para consultar la sintaxis de /model
Ejecutar una LLM local Endpoints personalizados y autoalojados: Ollama, vLLM, SGLang, llama.cpp, LM Studio
Conectar plataformas de mensajería Gateway de mensajería: Telegram, Discord, Slack, WhatsApp, Signal, Google Chat, LINE, SimpleX Chat, ntfy, Buzz (28 en la tabla comparativa de la documentación)
Crear o instalar un skill Sistema de skills: divulgación progresiva + centro de skills
Referencia detallada de todos los comandos de la CLI Sigue leyendo y accede directamente a Comandos de la CLI

Cómo funciona Hermes: el modelo mental

Hermes está estructurado en torno a un único ciclo de conversación que puede invocarse desde cualquier punto de entrada. Los puntos de entrada son la CLI (cli.py), el gateway de mensajería (gateway/run.py), el adaptador ACP para la integración con editores, el ejecutor por lotes y un servidor API.3 En última instancia, todos llaman a AIAgent.run_conversation() en run_agent.py, que:

  1. Construye el prompt del sistema a partir de SOUL.md, MEMORY.md, USER.md, las skills, los archivos de contexto y las instrucciones para las herramientas mediante agent/prompt_builder.py (la reorganización de septiembre de 2026 lo trasladó al nuevo paquete agent/)3
  2. Resuelve el proveedor en tiempo de ejecución mediante runtime_provider.py; en este paso se seleccionan la autenticación, la URL base y el modo API3
  3. Llama al proveedor mediante uno de tres modos API: chat_completions, codex_responses o anthropic_messages3
  4. Procesa las llamadas a herramientas devueltas mediante model_tools.py y el registro central de herramientas (tools/registry.py)3
  5. Repite el ciclo hasta que el modelo produce una respuesta final y, después, guarda la sesión en SQLite con FTS53

Entender este ciclo es importante porque todas las funciones —personalidades, memoria, skills, compresión y mecanismos de respaldo— se conectan a una de estas etapas. Cuando leas una clave de configuración y te preguntes qué hace, la respuesta suele ser: «es un ajuste de las etapas 1, 2, 3 o 4 del ciclo anterior».

Núcleo independiente de la plataforma. Una sola clase AIAgent sirve a la CLI, el gateway, ACP, el procesamiento por lotes y el servidor API. Las diferencias entre plataformas se encuentran en el punto de entrada, no en el agente.3 Por eso, los mismos comandos con barra funcionan tanto en la terminal como en Telegram: se procesan desde un COMMAND_REGISTRY compartido en hermes_cli/commands.py.6

La estructura de directorios es el sistema. Hermes almacena todo en ~/.hermes/ (o en $HERMES_HOME para los profiles que no sean el predeterminado):4

~/.hermes/
├── config.yaml        # Settings (model, terminal, TTS, compression, etc.)
├── .env               # API keys and secrets
├── auth.json          # OAuth provider credentials (Nous Portal, Codex, Anthropic)
├── SOUL.md            # Primary agent identity (slot #1 in system prompt)
├── memories/          # Persistent memory (MEMORY.md, USER.md)
├── skills/            # Bundled + agent-created + hub-installed skills
├── cron/              # Scheduled jobs
├── sessions/          # Gateway session state
└── logs/              # agent.log, gateway.log, errors.log (secrets auto-redacted)

Cada archivo anterior tiene una función específica; ninguno se superpone con otro. Si quieres saber «dónde almacena Hermes X», la respuesta está entre estos archivos.


Novedades de v0.21.5 (el paquete acumulativo del 24 de septiembre)

Hermes Agent v0.21.5 (etiqueta v2026.9.24, 24 de septiembre de 2026) es la versión actual y el tercer paquete acumulativo menor de la línea v0.21.x: «Esta etiqueta reúne en una versión estable las cerca de 460 solicitudes de cambio incorporadas desde v0.21.4 para los consumidores posteriores». Las notas seleccionadas vuelven a posponerse hasta v0.22.0. Estos son los cambios relevantes para quienes operan el sistema, verificados en el código fuente correspondiente a la etiqueta:5253

  • La memoria Hindsight sale del árbol principal. El proveedor Hindsight incluido y el complemento de pip hermes-agent[hindsight] se eliminaron; Hindsight ahora se instala desde el catálogo de plugins y su mantenimiento está a cargo de Vectorize; las notas de la versión no lo mencionan. Si tu configuración establece memory.provider: hindsight, hermes update instala el plugin del catálogo en el directorio de inicio de cada profile que lo especifique. Si aún falta, también se instala al iniciar el agente por primera vez, salvo que security.allow_lazy_installs sea false (en ese caso, ejecuta hermes plugins install hindsight). La configuración, las claves de .env y los datos de memoria no se modifican. Consulta Proveedores de memoria externos.
  • gateway.multiplex_profiles: false deja de estar disponible. El gateway lo cambia directamente a true y muestra una sola vez un aviso enmarcado. Si un profile con nombre debe conservar su propio gateway, establece gateway.standalone: true en su propio config.yaml; para desconectar uno de los profiles atendidos, hermes -p <name> gateway stop ahora lo pone en espera sin detener el host. Consulta Gateway de mensajería.
  • Nuevos modelos en los selectores de Nous y OpenRouter: GPT-6 Sol y GPT-6 Luna (cada uno con una variante -pro), además de Claude Opus 5.5.
  • La compatibilidad de los plugins no cambia: plugins.allow_deprecated_imports: true sigue funcionando.

Para actualizar: hermes update o el comando de instalación de una sola línea; las imágenes de Docker y Hermes Cloud se generan a partir de nousresearch/hermes-agent:v2026.9.24.52

Novedades de v0.21.4 (El segundo parche acumulativo)

Hermes Agent v0.21.4 (etiqueta v2026.9.21, 21 de septiembre de 2026) es la segunda versión acumulativa deliberadamente acotada de la línea v0.21.x. Según su propia descripción: «Versión de parche. Esta etiqueta reúne los cerca de 1.800 PR fusionados desde v0.21.3 en una versión estable con etiqueta para consumidores posteriores (imágenes de Docker, Hermes Cloud e implementaciones alojadas)». El periodo desde v0.21.3 abarca «5.071 commits sin fusiones» en «5.169 archivos modificados», «1.812 PR fusionados» y «2.116 incidencias cerradas». Por cantidad de commits, es el segundo mayor intervalo entre etiquetas en la historia del proyecto, solo por detrás de los 5.139 de v0.21.1; por cantidad de PR fusionados, es el mayor. La narración seleccionada vuelve a aplazarse, textualmente: «Las notas completas y seleccionadas de esta versión se publicarán con v0.22.0 y documentarán todo a partir de v0.21.0» y «No se omite nada de este periodo». La nota sí enumera lo que deja sin documentar, y cada elemento incluido a continuación se verificó en el código fuente de la etiqueta; cuando uno modifica una sección permanente de esta guía, el enlace aparece en la misma línea.5051

  • Un gateway por host, y Desktop se conecta en lugar de crear otra instancia. La regla es un hermes serve y un hermes gateway run por host y por usuario del sistema operativo, cada uno multiplexando todos los profile. Esto se aplica mediante una nueva capa singleton que abarca todo el host: un bloqueo del host que se mantiene durante toda la vida del proceso que lo obtiene, además de un registro de encuentro que contiene (pid, createTime), de modo que una segunda invocación puede comprobar que el propietario es el mismo proceso activo y conectarse a él en lugar de enlazar un segundo puerto. La obsolescencia se demuestra, nunca se presupone, y la aplicación Desktop aplica la misma idea desde su lado, conectándose al backend activo del host en vez de iniciar otro. Gateway de mensajería explica el funcionamiento.51
  • Los conectores se convierten en una única operación controlada por el backend, con una sola tarjeta de configuración. Una llamada a la herramienta manage_connections controla en el backend una máquina de estados de conexión basada únicamente en datos, y Desktop, TUI y CLI la representan mediante la misma tarjeta de configuración: un campo por cada credencial faltante, cuyo verbo permanece deshabilitado hasta que todos los campos obligatorios contienen texto. Consulta la subsección del nivel gratuito de Nous.51
  • --format stream-json: ejecuciones únicas legibles por máquinas. hermes chat -q ... --format stream-json emite un objeto JSON por cada línea de stdout para ejecutores de CI y orquestadores: un evento system/init, seguido de incrementos de text y eventos tool_use / tool_result, y finalmente un sobre result terminal que contiene el código de salida, el texto final y las estadísticas de tokens. Los diagnósticos y el ID de sesión permanecen en stderr, la salida de las herramientas se limita a 5.000 caracteres por evento, la opción implica --quiet, requiere -q o --query-file (termina con el código 2 si no se proporciona ninguno) y no puede combinarse con --tui. La tabla de opciones de hermes chat incluye esta opción.51
  • skills.auto_load fija skills en todas las sesiones. Los nombres incluidos en skills.auto_load dentro de config.yaml se cargan por completo en cada sesión nueva —tanto en CLI como en TUI, gateway, cron y API— y se resuelven una sola vez cuando se construye el prompt por primera vez. Sistema de skills incorpora una subsección sobre skills fijados.51
  • Una opción decline para mensajes directos no autorizados. unauthorized_dm_behavior incorpora un tercer valor junto a pair e ignore: decline envía una negativa cortés y después permanece en silencio ante ese remitente durante 24 horas. Consulta Autorización y vinculación de usuarios.51
  • mcp.discovery_concurrency limita las conexiones de detección de MCP. El valor predeterminado es 4 y 0 significa ilimitadas; todos los servidores configurados siguen conectándose, pero ya no lo hacen simultáneamente. Consulta Integración con MCP.51
  • session_search incorpora límites temporales y un nuevo intento para mejorar la recuperación. La forma de detección admite límites after/before (en formato ISO o como duraciones relativas, por ejemplo 7d), y una consulta de varias palabras sin resultados vuelve a intentarse buscando CUALQUIER término, en lugar del AND implícito entre todos los términos de FTS5. Consulta Búsqueda de sesiones.51
  • hermes sessions set-journal-mode delete|wal: el conversor sin conexión del journal. Es la vía de autoservicio para un state.db atascado en el modo incorrecto del journal de SQLite, algo que antes exigía ejecutar manualmente PRAGMA journal_mode=DELETE. Primero, detén el gateway, el dashboard y todas las instancias de CLI: el comando se niega a continuar mientras algún proceso externo mantenga abierta la base de datos, cambia el modo sin esperar a que se cierren otros procesos y después verifica los bytes del encabezado de SQLite. Windows no permite detectar qué procesos mantienen abierto el archivo, por lo que allí se negará a continuar hasta que uses --force, después de detener manualmente todos los procesos de Hermes. Ahora hermes doctor indica que debes usar este comando. La fila de hermes sessions en Comandos de nivel superior lo incluye.51
  • Desktop: configuración de fuente, actualizaciones del motor con un clic y desinstalación de plugins. Configuración incorpora un campo de familia tipográfica que se conserva por profile en desktop.font_family: sustituye la fuente sans del tema en el chat y la interfaz, la lista de sugerencias comienza con fuentes de accesibilidad (OpenDyslexic, Atkinson Hyperlegible y Lexend), y dejarlo vacío permite que el tema decida. El entorno administrado de ejecución de modelos locales muestra un botón «Actualizar motor» cuando hay una actualización disponible; si falla, el botón permanece visible para volver a intentarlo directamente. Además, el centro de Plugins permite desinstalar un plugin mediante un cuadro de confirmación.51
  • Catálogos de video: LTX 2.5 y Kling O3. El plugin de video de FAL incorpora ltx-2.5 (el modelo de audio y video de código abierto de Lightricks: audio nativo, conversión de imagen a video de hasta 20 s / 4K, preajustes de movimiento de cámara y nivel económico; fal rechaza clips de más de 10 s a 1440p/2160p) y kling-o3 (la familia de vanguardia de Kuaishou, de nivel premium: narración nativa con varias tomas, audio opcional y duración de 3 a 15 s).51
  • El catálogo de plugins se convierte en un directorio incluido y en un sitio web. El directorio plugin-catalog/ del repositorio creció de 9 entradas en v2026.9.14 a 228 en esta etiqueta: un YAML revisado por plugin, fijado a un SHA de commit exacto. Además, el sitio de documentación ahora genera una página por plugin y otra por autor, cada una de las cuales muestra el README del plugin desde el commit fijado. Los diez plugins de la comunidad mencionados en la versión aparecen como entradas del catálogo en esta etiqueta. Sistema de plugins contiene los detalles.51
  • Y una gran serie de correcciones en el aislamiento de profile y multiplexación, cron, kanban, Desktop y state.db, que la versión solo menciona como categoría; corresponderá a v0.22.0 redactar el registro seleccionado de esas correcciones.50

La reversión de compatibilidad de plugins todavía no se incorporó en este periodo. COMPAT_MANIFEST.md, compat_manifest.json y las capas de compatibilidad están presentes en v2026.9.21; los únicos cambios realizados en hermes_cli/plugin_compat.py durante este periodo son una caché de análisis para todo el proceso (un gateway multiplexado detecta los plugins una vez por cada profile atendido, y volver a analizar el código fuente de cada plugin costaba cerca de 0,4 s por profile durante el arranque) y rutas de coincidencia con formato POSIX en Windows (#112576). La restricción por fecha y la vía de escape mediante un booleano literal no cambiaron, por lo que plugins.allow_deprecated_imports: true todavía permite cargar los plugins afectados. El recuadro de compatibilidad de Sistema de plugins muestra el estado actual.42

El proceso de actualización no cambia: hermes update (para instalaciones mediante git) o el instalador de shell para instalaciones nuevas; las imágenes de Docker y Hermes Cloud se generan a partir de esta etiqueta (nousresearch/hermes-agent:v2026.9.21).50

Novedades de v0.21.3 (El parche del 14 de septiembre)

Hermes Agent v0.21.3 (etiqueta v2026.9.14, 14 de septiembre de 2026) reúne tres días más de main en una nota de dos puntos, publicada porque los agentes de Cloud se actualizan automáticamente a la etiqueta de versión más reciente y las correcciones de inicio de sesión del gateway remoto debían llegar hasta ellos. (1) Las sesiones remotas del dashboard ya no se revocan debido a ráfagas de actualización: ambas rutas de actualización del gateway (la protección mediante cookies y la ruta bearer nativa de Desktop) ahora agrupan las solicitudes simultáneas que contienen el mismo token de actualización rotatorio en una sola operación, por lo que una ráfaga producida al reactivarse Desktop ya no puede reproducir ante la detección de reutilización de Portal un token que ya había rotado y revocar toda la sesión. Además, la actualización se ejecuta fuera del bucle de eventos, por lo que un proveedor de identidad lento ya no bloquea /api/status. (2) Los procesos de larga duración dejan de crear identificadores de escritura duplicados para state.db: los lectores del gateway, del backend de dashboard/desktop, de ACP y de CLI se conectan en modo de solo lectura, mientras que los escritores del mismo proceso comparten el identificador del registro. Estadísticas del periodo: «1.036 commits sin fusiones» en «2.642 archivos modificados» y «338 PR fusionados». Todo lo demás se aplaza intencionalmente: la versión enumera lo que no documenta (selectores del nivel de razonamiento en cada selector de modelos, PKCE de OAuth de OpenRouter, decodificación HEIF/HEIC/AVIF, una oleada del catálogo de FAL, tablas pegadas en Slack y el API de Agent Sessions, el rechazo del modo WAL de state.db en sistemas de archivos entre máquinas virtuales y más) y se compromete con el registro seleccionado, textualmente: «Las notas completas y seleccionadas de esta versión se publicarán con v0.22.0 y documentarán todo a partir de v0.21.0» y «No se omite nada de este periodo».49

Y el plazo de compatibilidad de plugins llegó según lo previsto. La eliminación del 14 de septiembre de 2026 anunciada en v0.21.1 entró en vigor como una restricción por fecha dentro del código distribuido, no como una reversión del código: en la etiqueta v2026.9.14, hermes_cli/plugin_compat.py contiene COMPAT_REMOVAL_DATE = 2026-09-14, y removal_in_effect() devuelve true desde esa fecha (o en cuanto desaparece el archivo de manifiesto), por lo que un plugin externo afectado queda deshabilitado durante la carga y muestra el aviso rojo. Lo que todavía NO ocurrió es la reversión que elimina realmente las rutas de importación antiguas. COMPAT_MANIFEST.md, compat_manifest.json y las capas de compatibilidad siguen presentes en la etiqueta —y también en v2026.9.21 y en main al 22 de septiembre—, razón por la cual plugins.allow_deprecated_imports: true todavía funciona como vía de escape: las rutas antiguas siguen resolviéndose una vez que se permite continuar al cargador. Hay dos detalles importantes: la clave debe ser un booleano YAML literal (el código solo acepta el booleano True; una cadena entre comillas como "true" o "false" se trata como si no estuviera configurada, según el comentario del código «Solo booleanos literales»), y la vía de escape deja de funcionar en cuanto se incorpore la reversión, porque las propias rutas desaparecerán. El recuadro de compatibilidad de Sistema de plugins muestra el estado actual.4249

Novedades de v0.21.2 (la versión de parche para state.db)

Hermes Agent v0.21.2 (etiqueta v2026.9.11, 11 de septiembre de 2026) existe, ante todo, para corregir lo que v0.21.0 rompió. La versión lo dice claramente: «v0.21.0 incluyó una amplia reescritura de la gestión de conexiones del almacén de sesiones y, en algunas instalaciones, volvió frágil a state.db: los escritores secundarios cancelaban mutuamente sus bloqueos, las bases de datos en buen estado se marcaban como dañadas y una sola fila defectuosa hacía fallar sessions list. Esta versión soluciona esa clase de problemas e incorpora todo lo demás que llegó a main durante los cuatro días posteriores a v0.21.1». A diferencia de la nota deliberadamente escueta de v0.21.1, esta versión documenta sus propios aspectos destacados; las estadísticas del periodo son «947 commits sin fusión» en «1.869 archivos modificados» y «312 PR fusionados» de «140 colaboradores», mientras que el registro seleccionado de todo el ciclo v0.21.x sigue siendo responsabilidad de v0.22.0.48

  • La campaña de confiabilidad de state.db: seis PR y 44 problemas cerrados. Las recomendaciones para operadores aparecen primero en las notas de la versión, y también deberían ser tu punto de partida: si tu state.db se dañó con 0.21.0 o 0.21.1, ejecuta hermes doctor; ahora distingue entre daños estructurales y daños en el índice de búsqueda de texto completo, en lugar de llamar a todo «daño de escritura en FTS», y te dirige a hermes sessions recover --inspect-only (sin conexión, no destructivo y vinculado al profile; informa si se pueden leer las tablas canónicas sin crear una base de datos de salida) cuando una reconstrucción no basta. El trabajo sobre la causa raíz elimina todos los escritores secundarios del almacén: los gateways de los profiles escribían el estado de las salas alojadas en el state.db raíz cada 5 segundos, y esa coordinación ahora reside en un archivo shared-state.db dedicado, de modo que los gateways de los profiles nunca abren el almacén maestro de sesiones con permisos de escritura; el panel lo abre primero en modo de solo lectura; la protección del ciclo de vida de cron pasa por el registro de conexiones supervisadas en vez de usar un open() directo sobre una base de datos activa (lo que cancela los bloqueos POSIX del gateway: la receta clásica para dañar SQLite); y doctor --fix rechaza cualquier checkpoint cuya seguridad no pueda demostrar. Más allá de los escritores: los daños en el índice FTS ahora degradan la búsqueda y hacen que el índice se reconstruya posteriormente, en vez de cerrar con error todo el turno; una fila dañada ya no hace fallar sessions list, la exportación ni las estadísticas (las filas defectuosas se muestran como ?, junto con una advertencia que identifica la sesión); las sesiones nunca se vinculan con la base de datos de otro profile ni la consultan; y abrir en modo de solo lectura ya no adquiere el bloqueo de escritura, por lo que una ejecución puntual de hermes detrás de un gateway ocupado pasó de bloquearse y fallar tras 4-20 s a tardar 0,01 s.48
  • Refuerzo del aislamiento entre múltiples profiles. Desde v0.19.0, esta guía ha reiterado la afirmación del proyecto de que el enrutamiento por profile proporciona a cada uno «configuración, skills, memoria y secretos completamente aislados». En v0.21.2, esa promesa tenía brechas que ahora se han cerrado: los bots de profiles secundarios heredaban las listas de permitidos del profile predeterminado, los adaptadores podían enviar credenciales al host del profile predeterminado, los servidores stdio MCP recibían los secretos de la bóveda del profile predeterminado, la entrega mediante MEDIA: podía adjuntar el .env/auth.json/state.db de otro profile, los callbacks de webhooks y Feishu podían desviarse del profile al que habían sido dirigidos, y los profiles secundarios podían obtener el token de portador de Nous de otro profile mediante memorias por proceso (#107609-#107630). Si ejecutas varios profiles bajo un único gateway multiplexado, esta es la versión en la que la promesa de aislamiento realmente se cumple.48
  • La bóveda de credenciales que oculta las contraseñas. El agente ahora puede iniciar sesión, pagar y completar direcciones en el navegador mediante 1Password, Bitwarden o la bóveda local de Hermes sin ver jamás ningún secreto; además, los códigos de autenticación de dos factores provienen de una clave de autenticación guardada (TOTP: una semilla base32 o un URI otpauth://totp; se rechaza el HOTP basado en contador) o se solicitan en tu interfaz. Cada backend entrega al agente la misma estructura: metadatos de inicio de sesión y un identificador opaco con espacio de nombres (vault_ para la bóveda local, op:, bw:), mientras que la contraseña solo se obtiene al momento de completar el campo; los gestores externos permanecen bloqueados hasta que los desbloqueas durante la sesión, y la contraseña maestra «nunca se proporciona como argumento de una herramienta, nunca aparece en argv y nunca se conserva». Esto amplía el trabajo de SecretSource realizado en v0.19.0, que eliminó las claves API de proveedores del archivo .env de texto sin formato; ahora la bóveda hace lo mismo con las credenciales de navegación del agente.48
  • Un catálogo seleccionado de plugins fijados mediante SHA. hermes plugins browse muestra «todas las entradas del catálogo seleccionado de plugins», hermes plugins search consulta el catálogo y hermes plugins install admite nombres del catálogo, además de URL de Git y referencias owner/repo. hermes plugins pack completa el conjunto con «colecciones declarativas y compartibles de plugins»: un archivo hermes-pack.yaml que fija un conjunto de plugins a commits SHA exactos, pack install que distribuye la tarea entre instalaciones fijadas normales mientras el consentimiento de capacidades se mantiene por plugin, pack export que genera un pack de la instalación actual y pack show que funciona como simulación. El bloque de comandos de Sistema de plugins incluye los nuevos subcomandos.48
  • Nivel gratuito de Nous y primer inicio guiado. Las instalaciones nuevas incluyen inferencia y conectores gratuitos desde el primer momento, con un solo comando para iniciar sesión; /login funciona desde un chat y las herramientas de los conectores (Gmail, Linear, Notion y las demás) se pueden buscar mediante tool_search. El primer inicio guiado de la aplicación de escritorio se controla con HERMES_GUEST_ONBOARDING=1, y solo el valor literal 1 lo habilita: la propia prueba de la aplicación verifica que 'true', '0' y un valor vacío lo mantengan desactivado, y la decisión de inicio se registra en el entorno del backend generado para impedir que se filtre un valor heredado. Consulta Nous Tool Gateway.48
  • Se acabaron las avalanchas de creación de backends en la aplicación de escritorio. Bot Mode solía crear un backend o conectarse a uno por cada profile al iniciar y en cada actualización de la lista; pasar el cursor sobre la lista de Bots generaba un backend por fila, y cambiar de profile podía crear un backend principal duplicado. Todo esto se corrigió en esta versión.48

El proceso de actualización no ha cambiado: ejecuta hermes update desde una instalación existente o usa el instalador de shell para una instalación nueva.48

Novedades de v0.21.1 (el parche acumulativo)

Hermes Agent v0.21.1 (etiqueta v2026.9.7, 7 de septiembre de 2026) es deliberadamente escueta: una «versión de parche» que «agrupa el estado actual de main desde v0.21.0 para las implementaciones etiquetadas y los consumidores posteriores». El texto presenta las estadísticas del periodo —«5.139 confirmaciones sin fusión en 4.364 archivos modificados (+601.014 / -768.419)» y «632 PR fusionados»— y luego aplaza el relato: «Las notas de la versión completas y seleccionadas para este periodo se publicarán con v0.22.0». Esto convierte al periodo entre etiquetas en el mayor de la historia del proyecto (ningún periodo anterior entre etiquetas adyacentes supera las 2.790 confirmaciones sin fusión de v2026.7.20..v2026.7.30), publicado con las notas de versión más breves. Hasta que v0.22.0 presente el registro seleccionado, los seis grupos siguientes recogen los cambios que afectan la forma en que utilizas Hermes con esta etiqueta, cada uno verificado en el código fuente.41

  • La base de código se descompuso y el plazo de compatibilidad de los plugins vence el 14 de septiembre. La descomposición de septiembre de 2026 (PR #102117) dividió los grandes módulos del repositorio en archivos específicos: un nuevo paquete agent/ contiene los componentes internos del bucle de conversación (214 módulos de nivel superior más siete subpaquetes; prompt_builder.py ahora se encuentra en agent/prompt_builder.py, mientras que run_agent.py sigue albergando AIAgent), los analizadores de subcomandos de la CLI se trasladaron a un paquete hermes_cli/subcommands/ (61 módulos), la lista estática CANONICAL_PROVIDERS pasó de hermes_cli/models.py a hermes_cli/models_catalog_static.py (la lista no cambió: 39 entradas estáticas, que siguen ampliándose automáticamente a partir de 39 directorios de plugins de proveedores incluidos) y delegate_task se dividió entre aproximadamente una docena de módulos tools/delegate_tool_*. Las rutas de importación internas no son una API estable, por lo que un nuevo COMPAT_MANIFEST.md en la raíz del repositorio reexporta 1.148 nombres públicos «moved-lazy» desde sus antiguas rutas de módulo; cada uno emite una HermesPluginCompatWarning una vez por nombre y proceso cuando se resuelve. La capa de compatibilidad era temporal y su eliminación entró en vigor según lo previsto el 2026-09-14, seis días después de la etiqueta: no mediante una reversión del código, sino a través de una condición de fecha ya incluida en el código publicado. Desde esa fecha, un plugin de terceros afectado no se carga: el aviso de la CLI, hermes doctor y hermes update muestran una notificación roja que identifica el plugin deshabilitado; la aplicación de escritorio muestra un cuadro de diálogo una sola vez; y hermes plugins list indica el motivo. Si utilizas plugins externos, revísalos: hermes plugins compat <path> muestra cada file:line con la ruta antigua -> ruta nueva y devuelve el código de salida 1 mientras quede alguna referencia (--json genera una salida procesable por máquinas; ejecútalo sin argumentos para analizar todo el conjunto instalado). La solución temporal para un plugin cuyo autor aún no se haya puesto al día es plugins.allow_deprecated_imports: true en config.yaml, y sigue funcionando: la reversión que elimina realmente las rutas de importación antiguas aún no se había incorporado al 22 de septiembre (verificado hasta la etiqueta v2026.9.21 y en main), por lo que las rutas antiguas todavía se resuelven cuando se permite que el cargador continúe. Los detalles posteriores se encuentran en Novedades de v0.21.2, más arriba; la sección Sistema de plugins contiene el recuadro con el estado actual.42
  • Las conversaciones del gateway ya no rotan por temporizadores, en absoluto. La documentación del ciclo de vida de las sesiones ahora establece el contrato de forma explícita: «La inactividad y el tiempo transcurrido nunca provocan la rotación de una conversación. /new y /reset crean un límite explícito; la compresión de contexto sigue gestionando los historiales extensos. La configuración heredada de temporizadores se ignora. El tipo de datos SessionResetPolicy existente constituye información inerte de compatibilidad, no una política de ejecución». Los límites son explícitos y los establece el usuario; si conservaste temporizadores de reinicio de sesión de la época de OpenClaw mediante hermes claw migrate, ahora son datos inertes. Consulta Gateway de mensajería.43
  • La autorización de MCP incorpora un flujo de código de dispositivo. hermes mcp login <name> incorpora --flow {browser,device}: browser es el flujo PKCE existente, device es un inicio de sesión mediante código de dispositivo conforme a RFC 8628 para computadoras donde una devolución de llamada del navegador resulta poco práctica, y la opción prevalece sobre la configuración oauth.flow del servidor. Durante este periodo también se reforzó el resto de la superficie de autenticación de MCP: la propiedad del profile se aplica en todas las sesiones de OAuth, las cachés de metadatos de OAuth con formato incorrecto se ignoran en vez de bloquear un servidor, y la aplicación de escritorio retransmite el OAuth de MCP mediante devoluciones de llamada locales del cliente. Otro cambio relacionado: -t/--toolsets ahora también filtra qué servidores de MCP configurados llegan a iniciarse, por lo que una ejecución puntual de hermes -z -t <toolsets> evita el arranque en frío de los servidores que no necesita. El bloque de comandos de Integración de MCP ahora incluye login y reauth [--all]; ambos son anteriores a este periodo, pero todavía no se habían documentado aquí.44
  • La delegación ahora refleja con transparencia el trabajo en segundo plano. Se incorporaron seis mejoras de fiabilidad en delegate_task, todas comprobadas en el código fuente de la herramienta de delegación correspondiente a esta etiqueta. (1) De forma predeterminada, un lote en segundo plano devuelve UNA sola finalización; al activar delegation.independent_completions, la llamada se divide en unidades de finalización: las tareas que comparten un valor group se agrupan y notifican juntas, mientras que cada tarea sin grupo se notifica por separado al terminar. El comportamiento predeterminado es deliberado: el código señala que una avalancha de finalizaciones por tarea «fragmentaba a los orquestadores que no estaban preparados para ello». (2) Los procesos en segundo plano de un hijo se terminan al desmontarlo, salvo que este los entregue al padre mediante process_manage(action="handoff"); los procesos restantes que no se hayan entregado aparecen identificados en el resultado como orphaned_processes, mientras que los procesos hijo que terminaron sin que nadie llegara a leerlos aparecen como unread_completions junto con la parte final de su salida. Según el docstring del código fuente, el criterio de diseño es que el padre «debe enterarse por el entorno de ejecución», en lugar de confiar en que un hijo afirme que hay un «watcher running». (3) delegation.fallback_providers se convierte en una superficie de configuración real: null hace que los hijos no fijados hereden la cadena del padre, [] desactiva las alternativas y un hijo fijado por proveedor, endpoint o modelo no dispone de ninguna alternativa salvo que esta configuración declare una. (4) La cadena de alternativas del hijo se resuelve mediante el normalizador canónico, de modo que las entradas con formato incorrecto se descartan en vez de impedir la creación de un proceso. (5) Un fallo en mitad de una unidad ya no hace que se pierdan los hijos terminados: cada hijo completado de una unidad con varios hijos queda registrado de forma duradera en la propia fila de la unidad y se conserva como resultado parcial al recuperarla. (6) Los subagentes nunca heredan el nivel de caché de prompts de 1 hora: un hijo delegado se reduce al nivel de 5 minutos, porque el nivel de 1h tiene un precio pensado para una persona que se ausenta, no para una ráfaga de hijos paralelos.45
  • Proveedores y modelos. Los catálogos incorporan GPT-6 Astra y Astra Pro de OpenAI con variantes de nivel de velocidad -fast/-flex («precio 2x, nivel prioritario» / «precio 0,5x, nivel flexible») en los catálogos de Nous Portal y OpenRouter. En la ruta de OAuth de ChatGPT/Codex, Astra está restringido según la cuenta (solo el descubrimiento activo dentro del ámbito de la cuenta puede anunciarlo) e incorpora una variante opcional -900k en el selector, que eleva la ventana anunciada de 272K a aproximadamente 900K, verificados en vivo; el sufijo nunca se envía por la red. También se añaden anthropic/claude-fable-5.1, google/gemini-3.7-flash y gemini-3.8-flash, qwen/qwen3.8-max-0902 y qwen3.8-flash, además de la familia Muse Spark 1.3 de Meta (contexto de 1M, incluidas las variantes para colaboradores) y un plugin de proveedor de generación de imágenes muse-image de Meta. Tavily se incorpora como backend de búsqueda y extracción web (TAVILY_API_KEY; puede funcionar sin clave cuando Tavily se selecciona mediante hermes tools). Un entorno de ejecución administrado de llama.cpp convierte los modelos locales en una opción de primera clase (binarios oficiales, un único llama-server supervisado e instalación con un clic desde la aplicación de escritorio), mientras que los proveedores de procesos externos ajenos al repositorio disponen de su propia rama de resolución. En términos operativos, los catálogos remotos del selector ahora se actualizan cada 20 minutos (model_catalog.ttl_minutes, valor predeterminado de 20; la clave heredada ttl_hours solo se respeta cuando el usuario la ha configurado expresamente).46
  • Aplicación de escritorio: anota la página y controla la sesión. El navegador integrado incorpora un modo de comentarios: haz clic en Annotate y después en cualquier elemento de la página activa (o arrastra para dibujar un recuadro) y escribe una nota; los comentarios guardados permanecen como marcadores numerados y nunca envían un turno por sí solos. Cuando termines, «Add N comments» transfiere el lote al editor con una captura recortada por cada marcador; además, cada comentario sobre un elemento incluye su selector CSS, su marcado y los estilos calculados pertinentes para el diseño, de modo que el agente encuentre el elemento en tu código fuente en vez de deducirlo a partir de una imagen (las contraseñas, los valores ocultos y los atributos con aspecto de clave se ocultan antes de que el marcado salga de la página). Los lotes más grandes llegan agrupados por región de la página, por lo que una veintena de comentarios se convierte en un puñado de tareas que suelen afectar archivos separados, lo que permite distribuirlas de forma segura entre trabajadores paralelos. A su alrededor se incorporan controles de sesión estructurados y controles de automatización de sesiones, la creación de sesiones mediante arrastre, una vista de importación de sesiones para transcripciones de otros agentes de programación, display.resume_last_session (valor predeterminado true: un inicio en frío vuelve a abrir el último chat o página), un aviso de consentimiento en la primera apertura que ofrece browser.use_real_profile cuando se abre un panel Browser con esa opción desactivada, un catálogo integrado de skills opcionales en Capabilities -> Skills con instalación mediante un clic y una nueva configuración regional en ruso para la interfaz de escritorio (los 17 catálogos de configuraciones regionales de la CLI no cambiaron).47

La actualización no cambia: utiliza hermes update desde una instalación existente o el instalador de shell para una instalación nueva. Corresponde a v0.22.0 presentar el registro seleccionado de este periodo; los grupos anteriores recogen lo que cambia en esta etiqueta.41

Novedades de v0.21.0 (The Pantheon Release)

Hermes Agent v0.21.0 (etiqueta v2026.8.31, 31 de agosto de 2026) es la versión actual con nuevas funciones y constituye el registro depurado al que se había remitido todo el ciclo acumulativo de v0.20.x: «Esta versión reúne todo lo incluido en las etiquetas de parches de infraestructura v0.20.1-v0.20.6; esos periodos están documentados aquí en su totalidad». El planteamiento continúa lo iniciado en Herald: «v0.20.0 convirtió a Hermes en el heraldo: habló y llevó la palabra a otros agentes. En v0.21.0, los dioses se reúnen». La línea de estadísticas, textualmente: «Desde v0.20.0: ~5.800 commits · ~2.475 PRs fusionadas · ~5.680 archivos modificados · ~869.000 inserciones · ~135.000 eliminaciones · ~2.100 incidencias cerradas · más de 760 colaboradores».35

La versión está organizada por áreas funcionales, al igual que este resumen. Cuando una función modifica una sección permanente de esta guía, se incluye el enlace correspondiente.

  • Bot Mode: tus agentes se convierten en una sociedad integrada. Bot Mode deja de ser el plugin hermes-bots incluido en el periodo de v0.20.3 y pasa a formar parte de la aplicación de escritorio, activado de forma predeterminada. Cada profile de agente recibe un nombre, un rostro de avatar determinista con controles para aleatorizarlo o bloquearlo y un lugar en una lista compartida; puedes crear chats grupales al estilo de Discord donde varios bots y tú conversan en una misma sala, mencionar con @ a cualquier bot desde el editor y asignar nombres e imágenes a las salas. El subcatálogo incluye tarjetas de mensajes entre agentes con atribución, avisos de entrega para el remitente, hidratación con renderizado anticipado para reactivaciones instantáneas, un panel de rutinas y una reconstrucción basada en el sistema de diseño de la aplicación. En palabras de la propia versión: «Antes, “multi-agent” significaba infraestructura; ahora parece una aplicación de chat llena de compañeros de trabajo».35
  • hermes peer: mensajes directos entre bots de tus agentes. Cualquier agente de Hermes puede enviar mensajes a cualquier otro mediante su identificador, entre distintos profiles y gateways, desde la CLI o desde una conversación: pídele a tu bot de investigación que entregue sus hallazgos a tu bot de programación y lee la respuesta donde ya te encuentras. «Las respuestas llegan al Bot Chat canónico de cada agente, por lo que las conversaciones entre agentes son duraderas e inspeccionables, no simples mensajes que se envían y se olvidan». El comando hermes peer (agregar, enumerar o eliminar peers, y dm) aparece en la tabla de comandos de nivel superior.35
  • Trabajos cron que recuerdan. Los trabajos programados dejan de tener memoria de pez: los agentes cron cargan y actualizan la memoria persistente como cualquier otro agente; continuity=true incorpora la salida de cada ejecución en la siguiente para que un monitor pueda evitar duplicar lo que ya informó; cada trabajo recibe un bloc de notas duradero; los trabajos en modo monitor omiten por completo la LLM cuando nada ha cambiado; el esfuerzo de razonamiento puede fijarse para cada trabajo; y la salida de cron puede llegar al Bot Chat canónico de un bot, donde este realmente responde. La sección Tareas programadas (Cron) ahora documenta el funcionamiento de las etiquetas at en cada caso.3537
  • Orquestación de subagentes en tiempo real. delegate_task incorpora acciones de control: enumerar los agentes secundarios en ejecución, redirigir uno sobre la marcha mediante una corrección de rumbo o detenerlo antes de tiempo y conservar el resultado parcial. Las salidas de los agentes secundarios pueden validarse con un esquema JSON, los resultados muestran el costo de cada delegación y los valores predeterminados aumentan a 250 iteraciones por subagente y 10 agentes secundarios simultáneos (los límites unificados que sustituyeron a max_async_children en v0.19.0).3538
  • El centro de control de MCP. Los servidores MCP y el catálogo se combinan en una sola página de escritorio con una función de importación mediante arrastrar y soltar que permite «pegar cualquier cosa», comprobaciones de estado en segundo plano que te avisan para que vuelvas a autenticarte antes de que falle una llamada a una herramienta, una capa de costos y uso de toda la flota (estimaciones de tokens del esquema y uso de 30 días por servidor) y enlaces profundos hermes:// que instalan un servidor MCP con confirmación explícita. Consulta Integración con MCP.35
  • Una oleada de potencia para la CLI. Ctrl+P abre una paleta de comandos con búsqueda aproximada (también accesible mediante /palette), el selector de /model filtra a medida que escribes, /status muestra el modo de razonamiento, las aprobaciones pendientes y el uso del contexto, y la barra de estado puede mostrar en tiempo real el porcentaje de aciertos de caché, la latencia y los tokens por segundo, con controles independientes para cada campo. También se incorporan una detención de emergencia global, la opción de fijar o desfijar sesiones, textos de ejemplo rotativos en el editor y mascotas para la terminal. Una observación sobre el nombre: la versión presenta un comprobador de aprobaciones de prueba como hermes approval-check; en esa etiqueta, la interfaz disponible es hermes approvals test, ya que no existe ningún subcomando approval-check.3540
  • El agente controla el navegador de la aplicación de escritorio. El navegador integrado deja de ser una ventana que el agente solo puede observar: Hermes puede navegar, hacer clic y leer directamente, mientras que las páginas pueden abrirse por separado en el navegador del sistema con menús contextuales completos para los enlaces.35
  • Seis proveedores nuevos y una oleada de novedades en el catálogo de modelos. Meta Model API (Muse Spark), CommandCode, Tencent TokenPlan, Nebius Token Factory, Ramp Router y Actual Computer. Tres de ellos (Meta AI, CommandCode y Actual Computer) se incorporaron durante periodos acumulativos anteriores y ya figuraban en la matriz de proveedores; ahora la matriz añade Tencent TokenPlan, Nebius Token Factory y Ramp Router, además del nuevo SKU Alibaba Token Plan de la documentación. Los catálogos incorporan GLM-5.3-Flash, qwen3.8-max/flash, Gemini 3.7 Flash, MiniMax M3 free, Nemotron 3.5 Lightning y Muse Spark 1.2. También llegan dos cambios estructurales: model_overrides en config.yaml te permite modificar la ventana de contexto o los precios de cualquier modelo sin esperar una nueva versión, y ahora los proveedores pueden distribuirse como paquetes instalados mediante pip que se detectan a través de puntos de entrada; además, un registro unificado de protecciones de selección muestra advertencias en todas las interfaces de selección cuando un modelo se entrena con tus datos.3536
  • Refuerzo general de la seguridad. Las escrituras en archivos protegidos de instrucciones del agente (AGENTS.md, skills y almacenes de memoria) ahora siempre requieren aprobación, de modo que un agente afectado por una inyección de instrucciones no pueda reescribir discretamente sus propias órdenes permanentes; una revisión exhaustiva de la censura de datos corrige filtraciones de secretos en errores de terminal, lecturas de .env, checkpoints y registros de ACP; el sistema de aprobación aprende a reconocer los comandos destructivos de Windows; los permisos concedidos en macOS sobreviven a las actualizaciones gracias a una identidad estable de firma de TCC (hermes desktop --setup-tcc-identity); y la entrada de Blender en el catálogo de MCP, junto con su skill, se eliminó tras un incidente de seguridad en el proyecto de origen. Consulta Refuerzo de la seguridad para conocer los detalles correspondientes a esta etiqueta.3539
  • Maduración del gateway. Slack incorpora tarjetas dinámicas nativas (respuestas transmitidas en tiempo real, además de tarjetas opcionales de planes y tareas) y la supresión de vistas previas de enlaces salientes; Telegram añade un selector integrado que permite buscar cualquier comando y skill mediante @botname, eludiendo el límite del menú de comandos de Telegram; el canal de retransmisión madura (inicialización nativa de plugins, operaciones de tarjetas dinámicas con transmisión de borradores, segmentación por intervalos de sesión y restauración de la conversión de notas de voz a texto); un socket de control del gateway permite que los consumidores de la flota consulten el gateway y que los procesos de actualización lo pausen de forma ordenada en lugar de finalizar todo el árbol de procesos; además, el recolector de turnos captura las pilas de los procesos de trabajo atascados cuando se activa el mecanismo de vigilancia.35
  • Una oleada de skills. Ocho skills de productividad recuperados (document-to-action-items, meeting-action-items, email-inbox-triage, github-issue-to-pr, weekly-review-planning, competitor-news-monitor, product-price-monitor y social-media-content-calendar), clientes API derivados de HAR («observa un sitio web una vez y luego llama directamente a su API oculta sin navegador»), publish-site, session-librarian, blocked-page-recovery, merge-reconciler, plan-interrogation y un analizador consultivo de SKILL.md durante la creación.35

Revertido durante este periodo (no se incluye): tanto el modo Model Council (/council) como el context engine DCP se incorporaron y luego se revirtieron; el servidor de gateway exclusivo para WS (#94245) se fusionó y después se revirtió (#96118), por lo que FastAPI permanece en la ruta de arranque de la aplicación de escritorio. No obstante, la reproducción de eventos con marcas de secuencia (#94219) y la reconexión sin pérdidas de la aplicación de escritorio mediante WebSocket sí se incluyeron. Electron volvió a la versión 40.10.2. Si la cobertura de la comunidad sobre los periodos de v0.20.x mencionó alguna de estas funciones, no forman parte de esta versión.35

El proceso de actualización no cambia: hermes update desde una instalación existente o el instalador de shell para instalaciones nuevas. La subsección acumulativa que aparece más adelante, bajo la versión Herald, sigue siendo el registro por etiqueta de lo que se incorporó en cada periodo.35

Novedades de v0.20.0 (la versión Herald)

Hermes Agent v0.20.0 (etiqueta v2026.8.3, 3 de agosto de 2026) fue la versión con nuevas funciones antes de que v0.21.0 consolidara todo el conjunto; v0.20.1 (13 de agosto) y v0.20.2 (16 de agosto) son etiquetas de estabilización creadas sobre esta versión, y v0.20.3 (etiqueta v2026.8.16.2, publicada el 17 de agosto), v0.20.4 (etiqueta v2026.8.18, 18 de agosto), v0.20.5 (etiqueta v2026.8.19, publicada el 21 de agosto) y v0.20.6 (etiqueta v2026.8.27, 27 de agosto) mantienen en marcha la serie de consolidaciones, cada una con su propio conjunto de funciones — consulta la subsección siguiente. El periodo transcurrido desde v0.19.0 abarca aproximadamente 3.650 commits, 1.400 PR fusionadas y 1.200 incidencias cerradas, con la participación de más de 650 colaboradores.55

Tres cambios contradicen las instrucciones que ofrecían las versiones anteriores de esta guía. Léelos antes que cualquier otra cosa:

  • Ahora se requiere Node 26. El instalador fija NODE_VERSION="26" y rechaza entornos de ejecución anteriores con el mensaje “Node.js … is too old (Hermes requires Node >=26).” Tanto los instaladores como heal y upgrade hacen cumplir este requisito. Ten en cuenta que la página de instalación del sitio de documentación todavía indica Node v22; el script del instalador y las notas de la versión son las fuentes más recientes y autorizadas.55
  • pip y Homebrew se retiraron, no están simplemente obsoletos. Textualmente: “brew + pip/PyPI wheel channels retired (shell installer / Docker / Nix are the supported channels).” Si todavía utilizas una instalación mediante pip o brew, esa vía ya no recibe nuevas versiones.55
  • El límite predeterminado de iteraciones para llamadas a herramientas aumentó de 90 a 500. Las ejecuciones autónomas prolongadas dejaron de toparse con un límite artificial, y todos los umbrales de presión presupuestaria que aparecen más adelante se calculan respecto del nuevo límite máximo. read_file también utiliza ahora 2.000 líneas de forma predeterminada, en lugar de 500.55

El resto de la versión:

  • Voz conversacional. TTS por streaming con interrupción de voz y palabras de activación procesadas en el dispositivo.55
  • A2A v1.0. Un plugin de protocolo entre agentes que resuelve la solicitud de larga data de la incidencia #514.55
  • Webhooks salientes firmados. Antes, hermes webhook solo admitía comunicaciones entrantes; v0.20.0 agrega webhooks salientes del ciclo de vida, firmados con HMAC, para eventos de sesión, turno y herramientas.55
  • Citas fundamentadas. Un nuevo skill con un modo de verificación de datos.55
  • Oleada de mejoras para usuarios avanzados de CLI. !command ejecuta un comando de shell al instante sin consumir un turno del modelo; /init analiza el proyecto y crea o actualiza un AGENTS.md; /diff muestra los cambios preparados, todos los cambios o los de la sesión desde cualquier interfaz; /context desglosa qué está ocupando la ventana de contexto; /focus ofrece una vista con menos información y permite recuperar las líneas ocultas; Ctrl+S guarda temporalmente una instrucción escrita a medias. hermes import-agent migra una configuración de Claude Code o Codex CLI con un solo comando.55
  • Nuevas funciones para gestionar secretos. Una fuente de secretos basada en un comando auxiliar que se combina con cualquier bóveda, rotación de tokens mediante un solo comando con errores de inicio que indican cómo proceder, una caché cifrada opcional de emergencia para Bitwarden, claves inyectadas desde la bóveda con alcance limitado al directorio principal de cada profile y compatibilidad uniforme con SecretRef ${env:VAR} entre config.yaml y la configuración de MCP. El modelo de autenticación de tres vías descrito más adelante no cambia.55
  • Inicio en caliente más rápido. El arranque en frío de hermes -w pasó de unos 14 s a 1,8 s.55
  • La aplicación de escritorio se convirtió en una plataforma. Artefactos con tarjetas versionadas y vista previa interactiva en un entorno aislado, un Plugin SDK con Kanban como plugin fundacional para escritorio, un atajo de teclado global para ingreso rápido, varias ventanas de la interfaz gráfica, modo de backend remoto SSH e inicio de sesión nativo conforme a RFC 8252.55

Las consolidaciones v0.20.3, v0.20.4, v0.20.5 y v0.20.6 (17-27 de agosto)

Después de v0.20.0, el proyecto adoptó una cadencia de consolidaciones etiquetadas de alta frecuencia, y estas fueron más que simples versiones de estabilización. Las cuatro pospusieron sus notas seleccionadas de la misma manera: cada una indicó que “full curated release notes for this window will ship with v0.21.0”; v0.21.0 ya las ha publicado: Novedades de v0.21.0, más arriba, es el registro seleccionado de todo este periodo (la versión confirma que estos intervalos “are fully documented here”). Los bloques siguientes se conservan como el registro contemporáneo de cada etiqueta: permiten identificar qué incorporó cada una, algo que las notas seleccionadas presentan de forma conjunta.54233035

v0.20.3 (aprox. 250 commits y 125 PR desde v0.20.2):

  • Migración a MCP 2.x SDK, con compatibilidad con el protocolo sin estado del 28 de julio de 2026. Hermes adopta la generación actual de MCP SDK y se comunica mediante la revisión sin estado del protocolo.54
  • Bot Mode se distribuye como un plugin incluido (hermes-bots) que incorpora el protocolo principal para compañeros de equipo.54
  • Un plugin del proveedor CommandCode se incorpora al catálogo de proveedores.54
  • Contratos de entorno de ejecución de Cua Driver 0.20 para el uso de computadoras, además del refuerzo del control del entorno de ejecución de Python en subprocesos (aislamiento de PYTHONHOME/PYTHONPATH).54
  • Confiabilidad: autorreparación del programador de cron (recuperación de EMFILE, conciliación de asignaciones obsoletas y reactivación de tareas bloqueadas), correcciones para evitar la pérdida de datos durante la transferencia de sesiones, autorreparación de la conexión de la aplicación de escritorio con el gateway remoto y una oleada de incorporaciones del ecosistema (análisis de seguridad al instalar plugins, /worktree, preservación de ediciones manuales con /rollback y lectura de archivos UTF-16).54

v0.20.4 (aprox. 146 commits y 74 PR desde v0.20.3):

  • La superficie de vidrio de la aplicación de escritorio: mejoras de vidrio mate y translucidez, con un selector de escarcha y preselección de macOS.54
  • Una barra lateral con pestañas SESSIONS|BOTS, con opciones para ocultar o mostrar cada bot, además de correcciones para los chats grupales de Bot Mode (turnos prolongados de los miembros, representación de Markdown y enrutamiento entre computadoras).54
  • Análisis preventivo de nivel 1 con NVIDIA SkillEvaluator al instalar skills: las verificaciones de licencia y seguridad se ejecutan cuando instalas un skill.54
  • Refuerzo del envío de contenido multimedia mediante cron (tiempo de espera configurable, archivos adjuntos en ejecuciones manuales y visualización de activaciones omitidas), correcciones de SessionDB relacionadas con el hilo del bucle de eventos y la contención, mensajes transparentes de hermes update para ramas en espera y notificaciones nativas del sistema operativo para Kanban.54

v0.20.5 (aprox. 746 commits y 323 PR desde v0.20.4):

  • La capa web sin claves: la búsqueda web funciona en instalaciones nuevas sin ninguna clave de API, mediante una rotación gratuita de 5 proveedores con conmutación por error en anillo.23
  • Una oleada de mejoras para CLI: selector difuso de /model, una paleta de comandos con Ctrl+P y un /status más completo.23
  • Bot Mode madura: hilos en salas grupales, resúmenes de conversaciones contraíbles, avatares con rostros abstractos y archivos adjuntos PDF o de otros tipos mediante arrastrar y soltar.23
  • Herramientas para flotas y worktrees: comprobantes de hermes update, hermes update --plan (las notas de la versión lo denominan “fleet --plan verification”; la opción pertenece a hermes update, no a un comando fleet, y la ayuda de su analizador indica que permite “Show the update plan and exit without changing anything”) y hermes worktree list/prune.2327
  • Las tareas cron incorporan memoria persistente y nivel de razonamiento por tarea, además de medidas de disciplina de ejecución y protecciones contra bloqueos del entorno de ejecución impulsadas por los hallazgos de evaluación de Composio, aclaración mediante varias preguntas, el proveedor sin autenticación y sin opencode, y mejoras de rendimiento para la aplicación de escritorio (hidratación de Bot Mode priorizando el primer renderizado y React Compiler en ambos renderizadores).23

v0.20.6 (etiqueta v2026.8.27, 27 de agosto; aprox. 1.313 commits y 525 PR desde v0.20.5):

La versión se describe explícitamente como una “Patch release. This tag rolls up the ~525 PRs merged since v0.20.5 into a stable tagged release for downstream consumers”, y su propia descripción cifra el periodo en unos 1.313 commits distribuidos en aproximadamente 1.557 archivos (+177.113 / −21.682), con cerca de 525 PR fusionadas.30 Estos son los elementos principales de esa descripción:

  • Navegación con perfiles reales sujeta a consentimiento: la navegación local puede utilizar tu profile predeterminado de Chromium, con un flujo de cierre sujeto a aprobación en Windows.30
  • El navegador de la aplicación de escritorio obtiene su propia ventana del sistema operativo, además de un motor administrado de actualizaciones remotas SSH y una barra de profiles de flota.30
  • Ampliación del catálogo remoto de MCP: más de 50 servidores alojados por proveedores y verificados en funcionamiento, incluidos Cloudflare, Grafana Cloud, Better Stack y Railway.30
  • Cifrado opcional mediante el llavero del sistema operativo para los secretos almacenados: se eliminan las solicitudes del Llavero de macOS en cada inicio.30
  • Nuevos modelos en los selectores: GLM-5.3-Flash, MiniMax M3 gratuito y MiniMax H3 Max para video.30
  • Almacenamiento en caché de resultados con TTL para web_search/web_extract y tool_search con varias consultas y derivación morfológica.30
  • La compresión de cola reducida es ahora la opción predeterminada: la sección Compresión de contexto que aparece más adelante documenta la configuración correspondiente a esta etiqueta.3031
  • Los backends de terminal ahora son modulares: consulta Backends de terminal.3032
  • Transparencia del actualizador y las flotas: los actualizadores pausan los gateways a través del socket de control, en lugar de finalizar sus árboles de procesos, y las instalaciones administradas mediante imágenes o paquetes rechazan las actualizaciones locales que no sean seguras.30
  • Confirmaciones duraderas de incidentes de cron con errores más claros ante diferencias de código, controles para las vistas previas de enlaces en Slack e identidades compartidas de contenedores Docker.30

El proceso de actualización no cambia: hermes update desde una instalación existente o el instalador de shell para instalaciones nuevas.542330

Novedades de v0.19.0 (la versión Quicksilver)

Hermes Agent v0.19.0 (etiqueta v2026.7.20, 20 de julio de 2026) recibe su nombre por la velocidad propia del dios mensajero: el eje central de esta versión es la capacidad de respuesta pura, con una reducción de aproximadamente un 80 % en el tiempo hasta el primer token del primer turno en todas las plataformas. Alrededor de ese eje se incorporan la gestión de facturación desde la terminal, fuentes de secretos provenientes de gestores de contraseñas, aprobaciones inteligentes de forma predeterminada, subagentes observables y una entrega de respuestas resistente a fallos. El periodo transcurrido desde v0.18.0 es el más activo del proyecto hasta ahora: aproximadamente 2.245 commits, 1.065 PR fusionados, 3.300 incidencias cerradas y más de 450 colaboradores de la comunidad.56

  • Aproximadamente un 80 % menos de tiempo hasta el primer token, en todas partes. El intervalo entre el envío en frío y el despacho bajó de unos 4,3 s a 0,9 s tanto en la CLI como en el gateway, la TUI, la aplicación de escritorio y cron: la detección de capacidades de Discord salió de la ruta crítica, la comprobación de Ollama se omite para proveedores que se sabe que no son Ollama y se eliminaron las operaciones bloqueantes de la inicialización del agente. La latencia percibida también recibió atención específica: ahora, los modelos de razonamiento transmiten sus pensamientos en vivo de forma predeterminada (display.show_reasoning está activado), y el cuadro de respuesta se actualiza por token en lugar de por línea.56
  • Oleada de mejoras de renderizado en la aplicación de escritorio y la TUI. La aplicación de escritorio recibió una optimización de velocidad de unos 20 PR: una reducción de 14× en el uso de CPU del separador de Markdown transmitido mediante análisis léxico incremental por bloques, diferencias virtualizadas en el panel de revisión, cambios ágiles entre sesiones con transcripciones extensas y el fin de los nuevos renderizados de la barra lateral y las filas de herramientas por cada token. Ahora, la TUI renderiza el Markdown transmitido de forma incremental por bloques.56
  • Las instalaciones mediante pip y Homebrew están obsoletas. Ambas vías se marcaron como instalaciones «heredadas no compatibles», con una eliminación prevista. Esa eliminación ya se produjo en v0.20.0: se retiraron los canales de brew y los paquetes wheel de pip/PyPI, por lo que el instalador de shell, Docker y Nix quedan como los canales compatibles.5655
  • Los secretos pueden provenir de tu gestor de contraseñas. Una nueva interfaz conectable SecretSource obtiene secretos de Bitwarden y 1Password (referencias op://) durante la carga, permite usar varios vaults simultáneamente y ofrece precedencia determinista, advertencias de conflictos y procedencia por variable; las claves de API ya no tienen que residir en un archivo .env de texto sin formato. Los futuros proveedores de vaults podrán añadirse como plugins.56
  • Las aprobaciones inteligentes ahora son la opción predeterminada. Cuando Hermes quiere ejecutar un comando marcado, un revisor LLM independiente lo evalúa en lugar de pedirte confirmación para cada uno, y cada veredicto solo abarca ese comando exacto. Las reglas de denegación definidas por el usuario bloquean los comandos coincidentes incluso en modo YOLO, /deny <reason> transmite el motivo de tu rechazo para que el agente corrija el rumbo, y la acción de aprobación pre_tool_call del plugin (reincorporada con claves de reglas) deriva una llamada a una herramienta a una aprobación humana.56
  • Facturación desde la terminal: /subscription y /topup. Administra tu plan de Nous Portal sin salir de la terminal: consulta tu plan y la asignación restante, revisa exactamente cuánto cuesta una mejora o cuándo entra en vigor un cambio a un plan inferior, y aplícalo con opción de deshacer. La aplicación de escritorio incorpora una pestaña equivalente de configuración de facturación.56
  • Observa cómo trabajan los subagentes y no vuelvas a perder una respuesta terminada. Los despachos de delegate_task devuelven archivos de transcripción en vivo que puedes consultar con tail -f desde el momento en que se inician los subagentes: cada llamada a una herramienta, cada resultado y cada respuesta transmitida quedan en un registro legible para humanos por cada hijo. Las finalizaciones de delegaciones en segundo plano persisten entre reinicios, mientras que las respuestas finales del gateway se registran en un libro mayor de obligaciones de entrega dentro de state.db y vuelven a entregarse en el siguiente arranque si el gateway falla durante el envío. La opción de configuración max_async_children está obsoleta en favor de límites unificados de concurrencia para las delegaciones.56
  • Un gateway, muchos profiles. Un único gateway multiplexado que comparte un token de bot puede dirigir guilds, canales o hilos específicos a distintos profiles, cada uno con configuración, skills, memoria y secretos completamente aislados, mediante una anulación GATEWAY_MULTIPLEX_PROFILES. El índice de enrutamiento se trasladó a state.db; ahora sessions.json es una réplica heredada opcional.56
  • Oleada de proveedores y modelos. Fireworks AI obtiene compatibilidad de primer nivel (estimación de costos y segundo puesto en el selector de proveedores), junto con DeepInfra y Upstage Solar. Los catálogos añaden GPT-5.6 (Sol/Terra/Luna + Pro, integrado de extremo a extremo), grok-4.5 (GA), kimi-k3 (kimi-k2.x retirado) y Claude Sonnet 5 con integración completa. Una opción enabled: false por proveedor y la configuración excluded_providers eliminan los proveedores que no se usan de los selectores y la resolución de /model.56
  • El esfuerzo de razonamiento se convierte en un control ajustable. Los nuevos niveles de esfuerzo max y ultra llegan a todas las interfaces, con anulaciones por modelo en la configuración, esfuerzo por slot en los ajustes predefinidos de MoA (los asesores razonan a fondo y el sintetizador se mantiene rápido), esfuerzo por tarea para los modelos auxiliares y un /reasoning limitado a la sesión en la CLI.56
  • Superficie de CLI y MCP. hermes sessions export genera formatos Markdown, Quarto, HTML, solo prompts y trazas de Hugging Face, con una depuración opcional mediante --redact; /model --once permite anular el modelo durante un turno; las invocaciones de slash-skills pueden encadenarse (/skill-a /skill-b do XYZ); --safe-mode facilita la solución de problemas; hermes config get/unset completan la gestión de la configuración; hermes serve se convierte en un verdadero backend sin interfaz gráfica; y las herramientas de MCP adoptan la convención de nombres mcp__server__tool.56

Si actualizas desde v0.18.x, hay dos cambios que merecen atención antes que cualquier otro: las instalaciones mediante pip o Homebrew ahora muestran una advertencia que las identifica como heredadas y no compatibles (migra al instalador de una sola línea), y max_async_children está obsoleto en favor de los límites unificados de concurrencia para las delegaciones. Todo lo demás es adicional: los principales motivos para actualizar son la reducción de aproximadamente un 80 % en la latencia del primer turno, las aprobaciones inteligentes y el libro mayor de entregas, que protege las respuestas terminadas frente a fallos.


Novedades de v0.18.0 (la versión Judgment)

Hermes Agent v0.18.0 (etiqueta v2026.7.1, 1 de julio de 2026) recibe su nombre por el juicio: el agente verifica su propio trabajo en lugar de afirmar que tuvo éxito, y ofrece un razonamiento conjunto que realmente puedes inspeccionar. También resuelve todo el trabajo pendiente P0/P1: aproximadamente 692 elementos de máxima prioridad solucionados en doce días.22

  • Mixture-of-Agents como modelo de primer nivel. Ahora puedes seleccionar MoA como cualquier otro modelo en todas las interfaces, y el razonamiento conjunto es visible: la salida completa de cada modelo de referencia se muestra en su propio bloque etiquetado, con transmisión de respuestas en vivo. Puedes observar cómo razona el conjunto en lugar de recibir una respuesta combinada opaca.22
  • Contratos de finalización para /goal. Antes de informar que un objetivo está completo, el agente verifica su propio trabajo ejecutando las comprobaciones del proyecto en lugar de limitarse a afirmar que tuvo éxito: aplica el juicio sobre sí mismo.22
  • /learn: convierte cualquier descripción en una skill. Convierte un flujo de trabajo en una skill reutilizable con solo describirlo; las skills generadas cumplen automáticamente las convenciones de CONTRIBUTING.md del repositorio.22
  • Cronología de /journey. Un historial visual de la memoria y las skills a lo largo del tiempo, con funciones de edición, además de un gráfico de memoria en la aplicación de escritorio.22
  • Expansión de subagentes en segundo plano. Delega varias tareas que se ejecutan de manera simultánea sin bloquear la conversación: el único subagente en segundo plano de v0.17.0 se convierte en toda una flota.22
  • Projects en la aplicación de escritorio. Projects de programación de primer nivel, con un modelo organizativo basado en proyecto/repositorio/lane.22
  • Gateway con reducción a cero. Los gateways pueden quedar inactivos cuando no se usan y coordinar el vaciado de tareas para facilitar implementaciones sin interrupciones, algo relevante para cualquiera que ejecute Hermes como un servicio siempre activo.22
  • Compatibilidad con Google Vertex AI. Acceso a Gemini mediante cuentas de servicio de GCP, con renovación automática de tokens de OAuth2, que se incorpora al catálogo de proveedores.22
  • Comando de edición /prompt. Abre $EDITOR para redactar prompts de varias líneas sin tener que lidiar con la línea de entrada.22

Si actualizas desde v0.17.x, nada de esto rompe la CLI. Los principales motivos para actualizar son los contratos de finalización (objetivos que se verifican a sí mismos), MoA como función de primer nivel con conjuntos inspeccionables y /learn para capturar skills.


Novedades de v0.17.0 (la versión Reach)

Hermes Agent v0.17.0 (etiqueta v2026.6.19, 19 de junio de 2026) recibe su nombre por el alcance que ahora tiene el agente: nuevos canales de mensajería, nuevos proveedores de modelos y un control más profundo del escritorio y del panel. Amplía v0.16.x; la interfaz de CLI no cambia.21

  • Nuevos canales de mensajería. iMessage ahora funciona sin un repetidor Mac mediante Photon Spectrum (OAuth con código de dispositivo, hermes photon login); la API de WhatsApp Business Cloud es un adaptador oficial de Meta que elimina la necesidad de un proceso puente; SimpleX incorpora grupos, archivos adjuntos nativos, agrupación de texto y aceptación automática; y Raft se suma como plugin de plataforma incluido, con un diseño de canal de activación cuya privacidad está garantizada por contrato.21
  • Nuevos modelos y proveedores. El catálogo incorpora z-ai/glm-5.2 (contexto de 1 millón), anthropic/claude-fable-5, laguna-m.1, nemotron-3-ultra y grok-composer-2.5-fast (el modelo de Cursor mediante OAuth de xAI, con un contexto de 200.000). El modelo predeterminado de xAI cambió a grok-build-0.1, y los modelos adaptativos de Anthropic ahora siguen el contrato moderno de razonamiento (nunca envían un campo reasoning).21
  • Escritorio y panel. La aplicación de escritorio incorpora subagentes en segundo plano con «ventanas de seguimiento» que transmiten en vivo la actividad delegada (delegate_task(background=true)), un selector de modelos en Composer, atajos de teclado reasignables, notificaciones nativas del sistema operativo, borradores de Composer por hilo, temas de VS Code Marketplace e interfaz en japonés y chino tradicional. El panel incorpora un generador completo de profiles (modelos, skills y MCPs sin editar config.yaml), un selector global de profile, un Skills Hub rediseñado con análisis de seguridad, Automation Blueprints (plantillas parametrizadas disponibles mediante formulario, comando slash, conversación y documentación) y un inicio de sesión seguro que devuelve 401 detrás de la barrera de OAuth.21
  • Skills y herramientas. image_generate ahora puede editar y transformar una imagen de origen, no solo crear una desde cero, con todos los proveedores de imágenes compatibles; la herramienta memory incorpora un arreglo operations para agregar, reemplazar o eliminar elementos en lotes atómicos mediante una sola llamada; una nueva skill simplify-code ejecuta en paralelo una revisión y limpieza a cargo de tres agentes, sujeta a un nivel de riesgo basado en el principio de la cerca de Chesterton; y el booleano write_approval reemplaza al write_mode de tres estados.21
  • Arquitectura. Los subagentes en segundo plano devuelven de inmediato un identificador y reintroducen su resultado como un nuevo turno; un controlador de obtención de datos de MCP permite solicitar confirmación durante una llamada a una herramienta, y las herramientas de MCP que se conectan tarde quedan disponibles entre turnos (sin invalidar la caché); cron se convierte en un CronScheduler conectable con Chronos como proveedor de cron administrado; y un nuevo ámbito Managed (/etc/hermes) permite que un administrador fije una configuración que los usuarios no pueden modificar, además de un repetidor entre gateways para topologías con varios gateways.21
  • Nuevos comandos. /version, /billing (facturación interactiva desde la terminal), hermes photon login (autenticación de iMessage) y hermes curator run --consolidate; ahora debes activar expresamente la consolidación, por lo que la curación rutinaria en segundo plano no consume tokens.21
  • Seguridad. v0.17.0 corrige una evasión de la lista de denegación para escapes del shell, bloquea las operaciones cuando faltan módulos de aprobación o adaptadores del gateway con políticas propias, depura el entorno de los subprocesos que ejecutan scripts de tareas cron, oculta secretos en los volcados de depuración de solicitudes, examina las configuraciones stdio de MCP en busca de patrones de exfiltración y actualiza urllib3 y PyJWT para corregir CVE.21

Si actualizas desde v0.16.x, nada de esto rompe la CLI; son nuevos canales, modelos e interfaces alrededor del mismo agente. iMessage sin repetidor, los adaptadores oficiales de WhatsApp y el ámbito Managed para administradores son los principales motivos para actualizar.


Novedades de v0.16.0 (la versión Surface)

Hermes Agent v0.16.0 (etiqueta v2026.6.5, 5 de junio de 2026) recibe su nombre por las nuevas interfaces que ofrece para el agente centrado en la CLI. La gran novedad es que Hermes ya no está limitado a la terminal.20

  • Aplicación de escritorio nativa. Hermes Desktop es una nueva aplicación Electron para macOS, Linux y Windows, con instalación mediante un clic y actualización automática desde la propia aplicación. Incluye una ventana de chat con transmisión en tiempo real, archivos mediante arrastrar y soltar, pegado de imágenes desde el portapapeles, una paleta Cmd+K, una lista de sesiones con funciones de archivo y búsqueda, y un selector de modelos en la barra de estado. Puede conectarse a un gateway remoto de Hermes mediante una WebSocket segura y autenticarse con OAuth o nombre de usuario y contraseña; admite hosts remotos específicos para cada profile y sesiones simultáneas en varios profiles, vinculadas mediante referencias @session entre profiles. La interfaz de escritorio también incluye una traducción completa al chino simplificado (简体中文) mediante una capa de i18n tipada (display.language; el inglés sigue siendo el idioma predeterminado).20
  • Panel de administración en el navegador. El panel web local evolucionó de una vista de estado a un panel de administración completo: un catálogo de MCP con controles para activar o desactivar elementos, gestión de credenciales, creación de webhooks y hooks, configuración de memoria, controles del gateway y una página de sistema que comprueba las actualizaciones antes de instalarlas y permite crear un Debug Share con un clic. Una nueva página de canales permite configurar desde el navegador todas las plataformas de mensajería del gateway (Telegram, Discord, Slack y las demás). Ahora la autenticación es conectable: inicio de sesión con nombre de usuario y contraseña, un proveedor OIDC genérico autoalojado, hermes dashboard register para un cliente de OAuth autoalojado y rotación de sesiones mediante tokens de actualización.20
  • Nuevos comandos de CLI y comandos slash. /undo [N] retrocede los últimos N turnos del usuario con contenido precargado y eliminación lógica, y funciona en la CLI, la TUI y las plataformas de mensajería. Se incorpora una interfaz predeterminada configurable (cli o tui) con la opción --cli para sobrescribirla; la TUI recibe un comando /model unificado y una vista superpuesta de sesiones. hermes portal es un alias legible del flujo de incorporación de Nous Portal, con nuevas rutas de primer uso Quick Setup y Full Setup, además de dos comandos de diagnóstico: hermes prompt-size y hermes sessions optimize.20
  • Nuevos modelos y proveedores. El selector incorpora deepseek-v4-flash, MiniMax-M3 (contexto de 1 millón y proveedores nativos de MiniMax), qwen3.7-plus (Nous + OpenRouter) y gemini-3.5-flash (OAuth de Gemini + clave de API). Un proveedor propio de OAuth para xAI Grok se suma al iniciador de escritorio; el selector de modelos ahora admite búsqueda aproximada en todas las interfaces, los proveedores con varios endpoints se agrupan en una sola fila y la actualización del catálogo pasa de diaria a cada hora.20 (Desde entonces, v0.21.1 volvió a cambiar la frecuencia: los catálogos remotos del selector se actualizan cada 20 minutos, model_catalog.ttl_minutes.46)
  • Skills más ligeras y divulgación progresiva. El conjunto predeterminado de skills eliminó las redundantes y obsoletas (Spotify pasó a ser un plugin nativo, Linear se trasladó a hermes mcp install linear y se eliminaron varias entradas desactualizadas), convirtió más skills en opcionales e incorporó en el frontmatter un filtro de relevancia environments: (kanban/docker/s6) que mantiene las skills específicas de cada contexto fuera del índice hasta que se solicitan. NVIDIA/skills ahora es una fuente confiable predeterminada de Skills Hub junto con OpenAI, Anthropic y HuggingFace. Las herramientas de MCP y de plugins incorporan divulgación progresiva (acotada), y se corrigió un error de MCP que informaba falsamente que la autenticación mediante OAuth había sido exitosa cuando no se obtenía ningún token.20
  • Seguridad. v0.16.0 fija una versión corregida de Starlette (≥1.0.1) para CVE-2026-48710 (BadHost), traslada fuera del bucle de eventos las comprobaciones de URL contra SSRF en las rutas asíncronas, elimina del entorno de los subprocesos el token de portador para inferencias de Bedrock, agrega bws_cache.json a la protección de lectura para la seguridad de archivos, incorpora docker restart/stop/kill a la lista de patrones peligrosos y depura los caracteres Unicode invisibles del contenido verificado de las skills. La versión corrigió 2 problemas P0 y 62 P1, de los cuales 16 estaban etiquetados como problemas de seguridad.20

Si actualizas desde v0.15.x, nada de esto supone un cambio incompatible en la propia CLI; son interfaces y proveedores adicionales alrededor del mismo agente. La aplicación de escritorio y el panel de administración son los motivos para actualizar si quieres ofrecer Hermes a usuarios que no trabajan desde la terminal o administrar un gateway remoto desde el navegador.

Novedades de v0.14.0 (la versión Foundation)

v0.14.0 no gira tanto en torno a una única función destacada, sino a reducir las dificultades de configuración y ampliar los entornos donde puede ejecutarse Hermes.19 Los principales cambios operativos son:

  • La instalación y el inicio son más ligeros. pip install hermes-agent funciona desde PyPI, los adaptadores pesados se instalan bajo demanda la primera vez que se usan y la ruta de inicio aplaza suficiente trabajo como para reducir el arranque en frío unos 19 segundos. (Desde entonces, v0.19.0 marcó como obsoletas las instalaciones mediante pip; consulta Instalación.)
  • Las suscripciones pueden convertirse en endpoints locales de API. hermes proxy convierte proveedores respaldados por OAuth, como Claude Pro, ChatGPT Pro y SuperGrok, en un endpoint local compatible con OpenAI para herramientas como Codex, Aider, Cline y Continue.
  • Se amplía el alcance del gateway. LINE y SimpleX Chat se incorporan al gateway (la tabla comparativa de plataformas de la documentación enumera 28 plataformas en la etiqueta v2026.8.31; la sección Gateway de mensajería explica qué incluye esa cifra), Microsoft Teams queda integrado de extremo a extremo, la recuperación del historial de Discord está activada de forma predeterminada y las solicitudes clarify de Telegram y Discord ahora usan botones nativos.
  • Mejora la verificación al escribir. Después de realizar modificaciones, Hermes puede mostrar resúmenes por turno de los cambios en archivos y diagnósticos semánticos del servidor de lenguaje antes del siguiente turno, lo que lo acerca a un trabajo agéntico basado en evidencia.
  • Se amplían las herramientas de escritorio y contenido multimedia. computer_use funciona mediante cua-driver para proveedores distintos de Anthropic, video_generate se unifica detrás de backends conectables y vision_analyze envía los píxeles sin procesar a modelos que realmente pueden ver.

Instalación

El instalador de una sola línea es el método de instalación compatible. Se encarga de Python, uv, Node.js, ripgrep, ffmpeg, la clonación del repositorio, el entorno virtual y el comando global hermes.7

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

Las instalaciones mediante pip y Homebrew están obsoletas desde la versión v0.19.0. El paquete de PyPI que se introdujo en la versión v0.14.0 (pip install hermes-agent) y la fórmula de Homebrew ahora están marcados como instalaciones «heredadas no compatibles»: cada interfaz muestra una advertencia (sin bloquear la ejecución) cuando Hermes detecta alguna de ellas, y está previsto dejar de publicar en PyPI y Homebrew. Si realizaste la instalación mediante pip o brew, migra al instalador anterior.56

Funciona en Linux, macOS, WSL2 y Android/Termux (el instalador detecta Termux automáticamente y cambia a un paquete para Android que ha sido probado).7 Windows nativo ahora es una plataforma de nivel 1, en lugar de la versión beta inicial incluida en v0.14.0; instálalo con iex (irm https://hermes-agent.nousresearch.com/install.ps1). La documentación señala explícitamente una salvedad: en macOS, solo se admite Apple Silicon; las Mac con Intel no son compatibles.55 Históricamente, v0.14.0 incorporó compatibilidad con Windows nativo en una versión beta inicial mediante un instalador de PowerShell, pero WSL2 sigue siendo la recomendación más segura para entornos de producción hasta que la opción para Windows alcance mayor madurez.19

Cuando termine:

source ~/.bashrc    # or ~/.zshrc
hermes              # Start chatting

El único requisito previo es git. El instalador aprovisiona automáticamente Python 3.11 mediante uv (sin necesidad de sudo), Node.js 26 (para la automatización del navegador y el puente de WhatsApp), ripgrep y ffmpeg. Desde v0.20.0, Node 26 es el requisito mínimo obligatorio: el instalador rechaza cualquier versión anterior e instala en su lugar una versión de Node administrada por Hermes.557

Verifica la instalación

hermes --version    # Check version (global flag; there is no `version` subcommand)
hermes doctor       # Diagnose config/dependency issues
hermes status       # Show current configuration + auth state
hermes dump         # Copy-pasteable setup summary for debugging

hermes doctor te indica exactamente qué falta y cómo solucionarlo.7 hermes dump es el comando de diagnóstico que debes pegar en un reporte de GitHub o en un hilo de Discord cuando solicites ayuda; genera un resumen en texto sin formato de toda tu configuración, con los datos secretos ocultos.8

Instalación manual

Si necesitas control total —una versión personalizada de Python, componentes adicionales específicos o integración con Nix/NixOS—, el proceso manual está documentado paso a paso en la guía de instalación oficial.7 Estos son los principales componentes adicionales opcionales que puedes combinar con uv pip install -e ".[<extras>]":

Componente adicional Qué agrega
all Todo lo que aparece a continuación
messaging gateway para Telegram y Discord
cron Análisis de expresiones cron
cli Interfaz de menú en la terminal para el asistente de configuración
modal Backend de ejecución en la nube de Modal
voice Entrada de micrófono de CLI y reproducción de audio
tts-premium Voces prémium de ElevenLabs
honcho Memoria nativa para IA (integración con Honcho)
mcp Compatibilidad con Model Context Protocol
homeassistant Integración con Home Assistant
acp Compatibilidad con la integración de editores ACP
slack Mensajería mediante Slack
pty Compatibilidad con terminal PTY (herramientas interactivas de CLI)
dev pytest y utilidades de prueba
termux Paquete para Android probado (incluye cron, cli, pty, mcp, honcho, acp)

El comando de instalación para Termux es diferente: usa pip con un archivo de restricciones, no uv pip:

python -m pip install -e ".[termux]" -c constraints-termux.txt

Esto se debe a que .[all] en Android instala faster-whisper mediante el componente adicional voice, que depende de paquetes wheel de ctranslate2 que no se publican para Android.7


Autenticación y proveedores

En la etiqueta v2026.9.7, hermes_cli/models_catalog_static.py contiene 39 entradas estáticas de CANONICAL_PROVIDERS en la línea 311 (la reorganización de septiembre de 2026 trasladó la lista fuera de hermes_cli/models.py; las entradas no cambiaron e incluyen tencent-tokenplan de v0.21.0) y amplía automáticamente esa lista desde plugins/model-providers/ (39 directorios incluidos; nueve de ellos —actual, alibaba-coding-plan, commandcode, deepinfra, meta-ai, nebius-token-factory, opencode-free, router, upstage— no tienen una entrada estática y se incorporan mediante la ampliación automática porque utilizan el tipo de autenticación predeterminado api_key). La página de documentación sobre proveedores incluye tablas con 45 proveedores en la nube y por suscripción, además de una fila para endpoints personalizados, y explica por separado los servidores locales y autoalojados (Ollama, vLLM, SGLang, llama.cpp, LM Studio, LiteLLM, ClawRouter y cualquier endpoint compatible con OpenAI).26 En la etiqueta v2026.9.24, la lista estática todavía contiene 39 entradas, pero plugins/model-providers/ contiene 38 directorios: el proveedor sin clave opencode-free se eliminó el 18 de septiembre porque el nivel gratuito de OpenCode ahora rechaza el tráfico anónimo procedente de clientes distintos al suyo.53 A esto se suman los endpoints personalizados y tres rutas de autenticación diferentes. A continuación se presenta toda la superficie de autenticación, organizada por ruta para que puedas encontrar la que corresponda a lo que tienes.

Las tres rutas de autenticación

Todos los proveedores de Hermes siguen uno de estos tres patrones de autenticación:

Ruta 1 — Clave de API en .env. Coloca tu clave en ~/.hermes/.env y Hermes la leerá al iniciarse. La utilizan OpenRouter, AI Gateway, z.ai/GLM, Kimi/Moonshot, MiniMax (y MiniMax China), Alibaba Cloud/DashScope, Kilo Code, OpenCode Zen, OpenCode Go, DeepSeek, Hugging Face, Google/Gemini y la mayoría de los proveedores externos.2 Desde v0.19.0, la clave ya no tiene que almacenarse en un archivo de texto sin formato: una interfaz conectable SecretSource puede obtener secretos de Bitwarden o 1Password (referencias op://) durante la carga, con varios vaults habilitados simultáneamente, precedencia determinista, advertencias de conflictos y procedencia por variable; .env permanece como alternativa. (Esto es distinto del token de arranque de Bitwarden Secrets Manager de v0.15.0, que consolidaba las claves de los proveedores detrás de un solo token; SecretSource sustituye el propio archivo de texto sin formato y permite incorporar futuros proveedores de vaults como plugins).56

Ruta 2 — OAuth mediante hermes model o hermes auth. Inicia un flujo de código de dispositivo, abre un navegador, almacena las credenciales en ~/.hermes/auth.json (y puede importar credenciales existentes de herramientas como Claude Code o Codex CLI). La utilizan Nous Portal, OpenAI Codex (cuenta de ChatGPT), GitHub Copilot y Anthropic (Claude Pro/Max).2

Ruta 3 — Endpoint personalizado en config.yaml. Para cualquier API compatible con OpenAI: Ollama, vLLM, SGLang, llama.cpp, LM Studio, proxy LiteLLM, Together AI, Groq, Azure OpenAI o tu propio servidor autoalojado. Se configura una vez mediante hermes model → Custom endpoint y luego se guarda en config.yaml.2

Matriz completa de proveedores

Esta matriz abarca los proveedores incluidos en las tablas de la página de documentación, con el flujo de configuración exacto para cada uno; el selector de la etiqueta enumera más proveedores que la documentación (consulta el recuento anterior) y cualquier opción compatible con OpenAI puede configurarse mediante la fila de endpoint personalizado.226

Proveedor Ruta de autenticación Configuración
Nous Portal OAuth hermes model (inicio de sesión con OAuth, basado en suscripción)
OpenAI Codex OAuth hermes model (código de dispositivo de ChatGPT, utiliza modelos Codex)
GitHub Copilot OAuth o token hermes model (código de dispositivo de OAuth), o COPILOT_GITHUB_TOKEN / GH_TOKEN / gh auth token
GitHub Copilot ACP Subproceso local hermes model (requiere copilot CLI en PATH + copilot login)
Anthropic OAuth o clave de API hermes model (prioriza las credenciales de Claude Code), o ANTHROPIC_API_KEY, o token de configuración ANTHROPIC_TOKEN
OpenRouter Clave de API OPENROUTER_API_KEY en ~/.hermes/.env
AI Gateway (Vercel) Clave de API AI_GATEWAY_API_KEY en ~/.hermes/.env (proveedor: ai-gateway)
z.ai / GLM (ZhipuAI) Clave de API GLM_API_KEY en ~/.hermes/.env (proveedor: zai)
Kimi / Moonshot Clave de API KIMI_API_KEY en ~/.hermes/.env (proveedor: kimi-coding). v0.19.0 incorpora kimi-k3 a los catálogos (kimi-k2.x se retiró).56
MiniMax (global) Clave de API MINIMAX_API_KEY en ~/.hermes/.env (proveedor: minimax)
MiniMax China Clave de API MINIMAX_CN_API_KEY en ~/.hermes/.env (proveedor: minimax-cn)
Alibaba Cloud (Qwen) Clave de API DASHSCOPE_API_KEY en ~/.hermes/.env (proveedor: alibaba, alias: dashscope, qwen)
Kilo Code Clave de API KILOCODE_API_KEY en ~/.hermes/.env (proveedor: kilocode)
OpenCode Zen Clave de API OPENCODE_ZEN_API_KEY en ~/.hermes/.env (proveedor: opencode-zen)
OpenCode Go Clave de API OPENCODE_GO_API_KEY en ~/.hermes/.env (proveedor: opencode-go)
DeepSeek Clave de API DEEPSEEK_API_KEY en ~/.hermes/.env (proveedor: deepseek)
Hugging Face Clave de API HF_TOKEN en ~/.hermes/.env (proveedor: huggingface, alias: hf)
Google / Gemini Clave de API GOOGLE_API_KEY o GEMINI_API_KEY en ~/.hermes/.env (proveedor: gemini)
Fireworks AI Clave de API Proveedor de primera clase con estimación de costos y columnas de precios almacenados en caché en el selector de modelos; ascendido al puesto n.º 2 en los selectores de proveedores. Nuevo en v0.19.0.56
DeepInfra Clave de API Proveedor de primera clase con una integración reforzada. Nuevo en v0.19.0.56
Upstage Solar Clave de API Proveedor de primera clase. Nuevo en v0.19.0.56
xAI (Grok) Proveedor nativo / OAuth de SuperGrok Proveedor de primera clase con acceso directo a API y catálogo de modelos (v0.9.0+). v0.14.0 incorpora OAuth de SuperGrok y amplía grok-4.3 a una ventana de contexto de 1M para las cuentas con acceso.21619 v0.17.0 incorpora grok-composer-2.5-fast (el modelo de Cursor mediante OAuth de xAI, contexto de 200k) y cambia el modelo predeterminado de xAI a grok-build-0.1.21 v0.19.0 lleva grok-4.5 a disponibilidad general en el catálogo.56
Voces personalizadas de xAI Clave de API Proveedor de TTS con clonación de voz. Nuevo en v0.13.0; configúralo en tts: dentro de config.yaml y proporciona la clave de xAI en .env.18
Xiaomi MiMo Proveedor nativo Proveedor de primera clase con asistente de configuración y catálogo de modelos. MiMo v2 Pro gratuito en Nous Portal para tareas auxiliares (v0.9.0+).1615
Google AI Studio Clave de API GOOGLE_API_KEY o GEMINI_API_KEY en ~/.hermes/.env. Acceso directo a Gemini con longitudes de contexto detectadas automáticamente mediante el registro models.dev (v0.8.0+).15
Qwen OAuth (Portal) OAuth hermes model → “Qwen OAuth (Portal)” (proveedor: qwen-oauth; inicio de sesión PKCE en el navegador que reutiliza una sesión local de Qwen CLI). Proveedor de OAuth compatible con solicitudes al portal (v0.8.0+). La ruta de DashScope mediante clave de API indicada anteriormente cambió de nombre de Alibaba Cloud a Qwen Cloud en v0.14.0; las claves de configuración existentes siguen funcionando.151926
OpenCode Free (eliminado) Sin clave Se eliminó el 18 de septiembre de 2026 y no aparece en las etiquetas v2026.9.21 ni v2026.9.24. Una configuración que todavía especifique opencode-free, free u opencode_free mostrará un error que indica su eliminación; cambia a opencode-zen (pago por uso, OPENCODE_ZEN_API_KEY) o opencode-go (suscripción, OPENCODE_GO_API_KEY) mediante hermes model. El proveedor se había incorporado durante el ciclo de v0.20.5 como «el proveedor opencode-free sin autenticación».2353
OpenAI API (directo) Clave de API OPENAI_API_KEY en ~/.hermes/.env (proveedor: openai-api, OPENAI_BASE_URL opcional)26
Google Vertex AI OAuth2 / ADC hermes model → “Google Vertex AI” (proveedor: vertex; OAuth2 mediante JSON de una cuenta de servicio o Application Default Credentials, facturado a tu proyecto de GCP)26
Azure AI Foundry Endpoint + clave hermes model → “Azure AI Foundry” (proveedor: azure-foundry; utiliza tu endpoint y clave de Azure OpenAI / Foundry; el selector lo describe como «endpoint con estilo de OpenAI o de Anthropic»)26
AWS Bedrock Credenciales de AWS hermes model → “AWS Bedrock” (proveedor: bedrock; cadena estándar de credenciales de AWS mediante boto3, IAM o clave de API; Claude, Nova, Llama, DeepSeek)26
NVIDIA NIM / Build Clave de API NVIDIA_API_KEY en ~/.hermes/.env (proveedor: nvidia; Nemotron y otros modelos alojados en NIM en build.nvidia.com, o un endpoint local de NIM mediante la sustitución de la URL base)26
Ollama Cloud OAuth o clave de API hermes model → “Ollama Cloud” (proveedor: ollama-cloud; pega OLLAMA_API_KEY y elige entre los modelos descubiertos alojados en la nube)26
StepFun Step Plan Clave de API STEPFUN_API_KEY en ~/.hermes/.env (proveedor: stepfun; modelos para agentes y programación mediante la API de Step Plan)26
MiniMax (OAuth) OAuth hermes model → “MiniMax (OAuth)” (proveedor: minimax-oauth; inicio de sesión PKCE en el navegador para Coding Plan, en la región global o CN)26
Meta AI Clave de API MODEL_API_KEY en ~/.hermes/.env (proveedor: meta-ai; API de Meta Model, familia Muse Spark)26
NovitaAI Clave API NOVITA_API_KEY en ~/.hermes/.env (proveedor: novita; más de 200 modelos, Model API, Agent Sandbox, GPU Cloud)26
Arcee AI Clave API ARCEEAI_API_KEY en ~/.hermes/.env (proveedor: arcee; alias: arcee-ai, arceeai; modelos Trinity)26
GMI Cloud Clave API GMI_API_KEY en ~/.hermes/.env (proveedor: gmi; alias: gmi-cloud, gmicloud). Usa el ID de modelo exacto que devuelve el endpoint /v1/models de GMI26
Actual Computer Clave API o daemon local ACTUAL_API_KEY en ~/.hermes/.env para el relay alojado, o ACTUAL_BASE_URL=http://127.0.0.1:8080 para el daemon local sin clave en loopback (proveedor: actual; alias: actual-computer, actualcomputer, aci)26
Tencent TokenHub Clave API TOKENHUB_API_KEY en ~/.hermes/.env (proveedor: tencent-tokenhub; alias: tencent, tokenhub, tencentmaas; Hy3 Preview)26
CommandCode Clave API COMMANDCODE_API_KEY en ~/.hermes/.env (proveedor: commandcode, alias commandcode-chat; modelos Claude mediante commandcode-anthropic, alias commandcode-claude). Funciona con los planes GOAT/Pro/Max/Provider, pero no con el plan Go de $1, que no ofrece acceso a API. El plugin se incorporó durante el ciclo de v0.20.3.5426
Alibaba Cloud (Coding Plan) Clave API DASHSCOPE_API_KEY (proveedor: alibaba-coding-plan, alias alibaba_coding); una SKU de facturación independiente en un endpoint distinto al del proveedor alibaba de DashScope26
Tencent TokenPlan Clave API TOKENPLAN_API_KEY en ~/.hermes/.env (proveedor: tencent-tokenplan, alias: tokenplan, tencent-lkeap; versión preliminar de Hy4 mediante el endpoint Messages de Anthropic en api.lkeap.cloud.tencent.com). Nuevo en v0.21.0; el selector agrupa TokenHub y TokenPlan en una sola fila de presentación llamada “Tencent Hy”3536
Nebius Token Factory Clave API NEBIUS_API_KEY en ~/.hermes/.env (proveedor: nebius-token-factory; alias: nebius, nebius-tf, tokenfactory). Nuevo en v0.21.03536
Ramp Router Clave API RAMP_ROUTER_API_KEY en ~/.hermes/.env (proveedor: router; alias: ramp-router, ramp, router.com). El gateway LLM nativo de OpenAI Responses de Ramp en api.router.com cuenta con un catálogo activo vinculado a la cuenta: los ID de modelo válidos son los que devuelve /v1/models para tu clave, por lo que el selector los obtiene dinámicamente en lugar de codificarlos de forma fija. Nuevo en v0.21.03536
Alibaba Cloud (Token Plan) Clave API ALIBABA_TOKEN_PLAN_API_KEY en ~/.hermes/.env (proveedor: alibaba-token-plan; endpoint para China continental: alibaba-token-plan-cn): el nivel de tokens con tarifa fija de Model Studio, una tercera SKU de Alibaba junto con alibaba y alibaba-coding-plan36
Endpoint personalizado config.yaml hermes model → “Endpoint personalizado” (guardado en config.yaml). La lista de servicios compatibles con OpenAI que aparece en la documentación incluye Together AI, Groq, Cerebras (https://api.cerebras.ai/v1), Mistral, Azure OpenAI, LocalAI y Jan26
Desde v0.19.0, también puedes ocultar los proveedores que no utilizas: una marca enabled: false por proveedor y una clave de configuración excluded_providers los eliminan de los selectores de /model y de la resolución integrada de proveedores.56

Anthropic: tres métodos de autenticación

Anthropic tiene su propia sección porque Hermes admite tres vías distintas para acceder a Claude, y es importante elegir la adecuada. Según la documentación original:2

# Method 1: API key (pay-per-token)
export ANTHROPIC_API_KEY=***
hermes chat --provider anthropic --model claude-sonnet-4-6

# Method 2: OAuth through hermes model (preferred)
# Uses Claude Code's credential store when available
hermes model

# Method 3: Manual setup-token (fallback/legacy)
export ANTHROPIC_TOKEN=***
hermes chat --provider anthropic

# Auto-detect Claude Code credentials
hermes chat --provider anthropic   # reads Claude Code files automatically

Cuando eliges Anthropic OAuth mediante hermes model, Hermes da prioridad al almacén de credenciales propio de Claude Code en lugar de copiar el token en ~/.hermes/.env. Así, las credenciales actualizables de Claude conservan esa capacidad.2 Si ya utilizas Claude Code en la misma computadora, esta es la opción más sencilla.

Para fijar Anthropic de forma permanente en config.yaml:

model:
  provider: "anthropic"
  default: "claude-sonnet-4-6"

--provider claude y --provider claude-code también funcionan como formas abreviadas de --provider anthropic.2

GitHub Copilot: dos modos

Copilot admite dos modos: la API directa de Copilot (recomendado) y Copilot ACP (que ejecuta la CLI local de Copilot como subproceso).2

# Direct Copilot API
hermes chat --provider copilot --model gpt-5.4

# Copilot ACP (requires the Copilot CLI in PATH + an existing copilot login)
hermes chat --provider copilot-acp --model copilot-acp

Según la documentación original, la autenticación se comprueba en este orden:2 1. Variable de entorno COPILOT_GITHUB_TOKEN 2. Variable de entorno GH_TOKEN 3. Variable de entorno GITHUB_TOKEN 4. Alternativa mediante la CLI gh auth token 5. Inicio de sesión con código de dispositivo de OAuth mediante hermes model

El tipo de token importa. La API de Copilot no admite tokens clásicos de acceso personal (ghp_*). Los tipos compatibles son los tokens de OAuth (gho_*), los PAT con permisos específicos (github_pat_* con el permiso Copilot Requests) y los tokens de aplicaciones de GitHub (ghu_*). Si gh auth token devuelve un token ghp_*, utiliza hermes model para autenticarte mediante OAuth.2

Proveedores chinos de AI (compatibilidad de primera clase)

Hermes ofrece compatibilidad integrada con z.ai/GLM, Kimi/Moonshot, MiniMax (endpoints globales y de China) y Alibaba Cloud mediante ID de proveedor específicos.2

# z.ai / ZhipuAI GLM
hermes chat --provider zai --model glm-5                 # Requires: GLM_API_KEY

# Kimi / Moonshot AI
hermes chat --provider kimi-coding --model kimi-for-coding   # Requires: KIMI_API_KEY

# MiniMax (global)
hermes chat --provider minimax --model MiniMax-M2.7          # Requires: MINIMAX_API_KEY

# MiniMax (China)
hermes chat --provider minimax-cn --model MiniMax-M2.7       # Requires: MINIMAX_CN_API_KEY

# Alibaba Cloud / DashScope (Qwen)
hermes chat --provider alibaba --model qwen3.5-plus          # Requires: DASHSCOPE_API_KEY

Las URL base pueden sustituirse mediante las variables de entorno GLM_BASE_URL, KIMI_BASE_URL, MINIMAX_BASE_URL, MINIMAX_CN_BASE_URL o DASHSCOPE_BASE_URL.2

Z.AI detecta automáticamente el endpoint. Al utilizar el proveedor z.ai/GLM, Hermes prueba varios endpoints (globales, de China y variantes para programación) hasta encontrar uno que acepte tu clave API. El endpoint funcional se almacena en caché automáticamente, por lo que la mayoría de los usuarios no necesita configurar GLM_BASE_URL.2

xAI (Grok) activa automáticamente el almacenamiento en caché de prompts. Cuando la URL base contiene x.ai, Hermes envía el encabezado x-grok-conv-id con cada solicitud para dirigirla al mismo servidor durante una sesión de conversación, reutilizando los prompts del sistema y el historial almacenados en caché.2 Es automático y no requiere configuración.

El comando hermes auth

hermes auth es el comando para administrar pools de credenciales y credenciales de OAuth.6

hermes auth                              # Interactive wizard
hermes auth list                         # Show all credential pools
hermes auth list openrouter              # Show one provider's pool
hermes auth add openrouter --api-key sk-or-v1-xxx
hermes auth add anthropic --type oauth
hermes auth remove openrouter 2          # Remove by index
hermes auth reset openrouter             # Clear cooldowns

Los pools de credenciales permiten rotar varias claves API o tokens de OAuth para un mismo proveedor. Esto resulta útil para distribuir los límites de solicitudes entre varias claves sin modificar el código.6 Los comandos heredados hermes login y hermes logout se eliminaron; utiliza hermes auth en su lugar.6

Endpoints personalizados y autoalojados

Hermes funciona con cualquier endpoint API compatible con OpenAI. Si un servidor implementa /v1/chat/completions, puedes hacer que Hermes lo utilice.2

Configuración interactiva (recomendada):

hermes model
# Select "Custom endpoint (self-hosted / VLLM / etc.)"
# Enter: API base URL, API key, Model name

Configuración manual de config.yaml:

model:
  default: your-model-name
  provider: custom
  base_url: http://localhost:8000/v1
  api_key: your-key-or-leave-empty-for-local

Ambos métodos guardan los datos en config.yaml, la única fuente de verdad para el modelo principal, el proveedor y la URL base.2 Las variables de entorno heredadas OPENAI_BASE_URL y LLM_MODEL ya no se leen para configurar el modelo principal; utiliza hermes model o edita config.yaml directamente.2 (OPENAI_BASE_URL + OPENAI_API_KEY aún se aceptan como alternativa para la ruta auxiliar provider: "main", así que no las elimines sin comprobar si las utilizas allí.)4

Cambio de endpoints personalizados durante una sesión:

/model custom:qwen-2.5             # Custom endpoint with explicit model
/model custom                      # Auto-detect the model from the endpoint
/model custom:local:qwen-2.5       # Named custom provider "local"
/model custom:work:llama3          # Named custom provider "work"
/model openrouter:claude-sonnet-4  # Back to a cloud provider

/model custom (sin especificar el nombre del modelo) consulta /v1/models de tu endpoint API y selecciona automáticamente el modelo si solo hay uno cargado; esto resulta útil para servidores locales que ejecutan un único modelo.2

Servidores LLM locales (plantillas de configuración)

La documentación oficial incluye guías completas de configuración para Ollama, vLLM, SGLang, llama.cpp y LM Studio. Estos son los comandos clave que realmente ejecutarás. Cada uno está diseñado para generar un endpoint funcional al que Hermes pueda conectarse.2

Ollama — la opción local más sencilla, sin configuración:

ollama pull qwen2.5-coder:32b
OLLAMA_CONTEXT_LENGTH=32768 ollama serve   # Raise from 4k default
hermes model   # Custom endpoint → http://localhost:11434/v1 → qwen2.5-coder:32b

Problema crítico de Ollama: Ollama utiliza de forma predeterminada longitudes de contexto muy bajas (4.096 tokens con menos de 24 GB de VRAM). Debes aumentarla mediante OLLAMA_CONTEXT_LENGTH o un Modelfile; la API compatible con OpenAI no acepta la longitud del contexto desde el cliente, por lo que Hermes no puede establecerla por ti.2 Para usarlo como agente, configúrala en al menos 16k–32k.

vLLM — servicio de inferencia GPU de alto rendimiento:

pip install vllm
vllm serve meta-llama/Llama-3.1-70B-Instruct \
  --port 8000 \
  --max-model-len 65536 \
  --tensor-parallel-size 2 \
  --enable-auto-tool-choice \
  --tool-call-parser hermes

Las llamadas a herramientas requieren --enable-auto-tool-choice y --tool-call-parser <name>. Analizadores compatibles: hermes (Qwen 2.5, Hermes 2/3), llama3_json, mistral, deepseek_v3, deepseek_v31, xlam, pythonic. Sin estas opciones, las llamadas a herramientas se devolverán como texto sin formato.2

SGLang — servicio rápido con RadixAttention para reutilizar la caché KV:

pip install "sglang[all]"
python -m sglang.launch_server \
  --model meta-llama/Llama-3.1-70B-Instruct \
  --port 30000 \
  --context-length 65536 \
  --tp 2 \
  --tool-call-parser qwen

Problema de SGLang: El valor predeterminado de max_tokens es 128. Configura --default-max-tokens en el servidor o model.max_tokens en config.yaml si las respuestas quedan truncadas.2

llama.cpp / llama-server — CPU y Metal de Apple Silicon:

./build/bin/llama-server \
  --jinja -fa \
  -c 32768 \
  -ngl 99 \
  -m models/qwen2.5-coder-32b-instruct-Q4_K_M.gguf \
  --port 8080 --host 0.0.0.0

--jinja es obligatorio para llamar a herramientas. Sin esta opción, llama-server ignora por completo el parámetro tools y el modelo intenta llamar a las herramientas escribiendo JSON en el texto de su respuesta, algo que Hermes no puede interpretar como llamadas reales a herramientas.2

LM Studio — aplicación de escritorio con interfaz gráfica:

Inicia el servidor desde la aplicación LM Studio (pestaña Developer → Start Server) o mediante CLI: lms server start (se inicia en el puerto 1234) y lms load qwen2.5-coder --context-length 32768.2 Luego, configura hermes model para que apunte a http://localhost:1234/v1.

Problema crítico de LM Studio: LM Studio obtiene la longitud del contexto de los metadatos del modelo, pero muchos modelos GGUF indican valores predeterminados de 2048 o 4096. Establece siempre la longitud del contexto de forma explícita en la configuración del modelo de LM Studio: haz clic en el ícono de engranaje junto al selector de modelos, establece “Context Length” en al menos 16384 (preferiblemente 32768) y vuelve a cargar el modelo.2

Proveedores personalizados con nombre

Si trabajas con varios endpoints personalizados (por ejemplo, un servidor local de desarrollo y un servidor GPU remoto), defínelos como proveedores personalizados con nombre en config.yaml:2

custom_providers:
  - name: local
    base_url: http://localhost:8080/v1
    # api_key omitted — Hermes uses "no-key-required" for keyless local servers
  - name: work
    base_url: https://gpu-server.internal.corp/v1
    api_key: corp-api-key
    api_mode: chat_completions      # optional, auto-detected from URL
  - name: anthropic-proxy
    base_url: https://proxy.example.com/anthropic
    api_key: proxy-key
    api_mode: anthropic_messages    # for Anthropic-compatible proxies

Luego, alterna entre ellos durante la sesión con la sintaxis triple:

/model custom:local:qwen-2.5
/model custom:work:llama3-70b
/model custom:anthropic-proxy:claude-sonnet-4

También puedes seleccionar proveedores personalizados con nombre desde el menú interactivo de hermes model.2

Arquitectura de proveedores conectables (v0.13.0+)

La versión v0.13.0 incorpora una ABC ProviderProfile, además de un directorio plugins/model-providers/, para que los proveedores de inferencia externos puedan integrarse sin modificar el núcleo.18 Si un proveedor admite un modo de API compatible con OpenAI, Anthropic o Codex, puedes implementar una subclase de ProviderProfile que declare la ruta de autenticación, la URL base, el catálogo de modelos y los encabezados de caché; Hermes la resuelve mediante la misma ruta runtime_provider.py que utilizan los proveedores integrados. Este es el cambio arquitectónico detrás de la ampliación de proveedores en la versión v0.13.0: en lugar de editar el código del núcleo para agregar un proveedor, distribuyes un plugin.

Proxy local compatible con OpenAI (v0.14.0+)

hermes proxy expone un endpoint local compatible con OpenAI, respaldado por el proveedor OAuth en el que Hermes ya inició sesión: Claude Pro, ChatGPT Pro, SuperGrok u otro proveedor compatible configurado.19 Esto significa que las herramientas que esperan una API al estilo de OpenAI, como Codex CLI, Aider, Cline, Continue o scripts personalizados, pueden reutilizar la autenticación de Hermes respaldada por tu suscripción sin necesidad de una clave API independiente. Trata el proxy como infraestructura local de desarrollo: vincúlalo de forma deliberada, no lo expongas ampliamente y ten presentes las condiciones específicas del proveedor.

Detección de la longitud del contexto

Según la documentación oficial, hay dos parámetros que se confunden constantemente:2

  • context_length — la ventana de contexto total (el presupuesto combinado de tokens de entrada y salida; por ejemplo, 1.000.000 para Claude Opus 4.7 o 200.000 para Sonnet 4.6). Hermes la utiliza para decidir cuándo comprimir el historial.
  • model.max_tokens — el límite de salida (la cantidad máxima de tokens que el modelo puede generar en una sola respuesta). No está relacionado con la longitud del historial.

Establece context_length cuando la detección automática calcule incorrectamente el tamaño de la ventana:

model:
  default: "qwen3.5:9b"
  base_url: "http://localhost:8080/v1"
  context_length: 131072      # tokens

Hermes utiliza una cadena de resolución con varias fuentes para detectar las ventanas de contexto: valor definido en la configuración → configuración por modelo del proveedor personalizado → caché persistente → endpoint /models → Anthropic /v1/models → API de OpenRouter → Nous Portal → models.dev (registro mantenido por la comunidad con más de 3.800 modelos) → valores predeterminados de respaldo (128K).2 El sistema tiene en cuenta al proveedor, por lo que un mismo modelo puede tener límites de contexto diferentes según quién lo sirva (por ejemplo, claude-opus-4.6 admite 1M directamente en Anthropic, pero 128K en GitHub Copilot).2

Enrutamiento inteligente de modelos: rotación de proveedores y respaldo

Hermes no te limita a un solo modelo de un único proveedor. El enrutamiento inteligente de modelos es el conjunto de mecanismos que decide qué proveedor y modelo atienden realmente una solicitud determinada: los grupos de credenciales distribuyen la carga entre las claves, un respaldo configurado toma el control cuando falla el proveedor principal y las ranuras auxiliares que aparecen a continuación enrutan las tareas secundarias a modelos más económicos de forma independiente de tu modelo principal.26 Configura estas tres opciones en conjunto: marcan la diferencia entre un agente que se detiene al alcanzar un límite de solicitudes y otro que continúa trabajando.

Grupos de credenciales. Cuando tengas varias claves API para el mismo proveedor, configura una estrategia de rotación mediante hermes auth. Así puedes distribuir los límites de solicitudes entre varias claves.6

Modelo de respaldo. Configura un provider:model de respaldo al que Hermes cambie automáticamente cuando falle tu modelo principal (por límites de solicitudes, errores del servidor o fallas de autenticación):2

fallback_model:
  provider: openrouter            # required
  model: anthropic/claude-sonnet-4  # required
  # base_url: http://localhost:8000/v1    # optional, for custom endpoints
  # api_key_env: MY_CUSTOM_KEY           # optional, env var name

El respaldo cambia el modelo y el proveedor durante la sesión sin perder la conversación. Se activa como máximo una vez por sesión.2 Proveedores compatibles con el respaldo: openrouter, nous, openai-codex, copilot, copilot-acp, anthropic, huggingface, zai, kimi-coding, minimax, minimax-cn, deepseek, ai-gateway, opencode-zen, opencode-go, kilocode, alibaba, custom.2

Modelos auxiliares

Hermes utiliza modelos “auxiliares” para tareas secundarias: análisis de imágenes (visión), clasificación para aprobar comandos peligrosos, compresión del contexto, generación de títulos de sesiones, inserción de etiquetas de audio TTS, correspondencia de skills, despacho de herramientas MCP y la familia de especificadores/descomponedores de Kanban.434 De forma predeterminada (auxiliary.*.provider: "auto"), todas las tareas auxiliares se ejecutan en tu modelo de chat principal, es decir, el mismo proveedor/modelo que seleccionaste en hermes model. La documentación deja claro que esto sustituyó la antigua detección automática de proveedores económicos: “Las versiones anteriores asignaban a los usuarios de agregadores (OpenRouter, Nous Portal) una opción predeterminada económica del lado del proveedor. Eso resultaba inesperado… Ahora, auto usa el modelo principal para todos y las configuraciones específicas de cada tarea en config.yaml siguen teniendo prioridad”.34 No necesitas configurar nada para comenzar; la contrapartida es el costo: en modelos de razonamiento costosos, las tareas auxiliares generan un gasto considerable, por lo que conviene asignar cada tarea a modelos rápidos y económicos cuando esto sea importante. Dos tareas auxiliares anteriores ya no usan ningún LLM: la extracción web (“web_extract y las capturas del navegador truncan el contenido extenso de forma determinista y almacenan el texto completo para paginarlo con read_file; no interviene ningún LLM”) y la búsqueda de sesiones (la herramienta con formato único devuelve directamente el contenido de la base de datos). Sus antiguos bloques auxiliary.web_extract.* y auxiliary.session_search.* ya no aparecen en la configuración predeterminada —los valores que queden en un config.yaml existente son “restos inofensivos que se ignoran”— y el espacio flush_memories tampoco figura en la configuración predeterminada de esa etiqueta.34

Puedes configurar qué modelo y proveedor usa cada tarea auxiliar. Todos los espacios auxiliares utilizan las mismas opciones: provider, model, base_url (además de api_key, timeout, extra_body y un valor de reasoning_effort específico para cada tarea).434

auxiliary:
  vision:                          # vision_analyze + browser screenshots
    provider: "auto"               # "auto" (= main model), "openrouter", "nous", "main", etc.
    model: ""                      # e.g. "openai/gpt-4o", "google/gemini-2.5-flash"
    base_url: ""                   # Custom OpenAI-compatible endpoint
    api_key: ""                    # Falls back to OPENAI_API_KEY
    timeout: 120
    download_timeout: 30
  approval:                        # dangerous-command approval classifier
    provider: "auto"
    model: ""
    timeout: 30
  compression:                     # summarizer -- legacy compression.summary_* keys migrate here (config v17)
    provider: "auto"
    model: ""
    base_url: ""
    timeout: 120
  title_generation:                # auto-generated session titles after the first exchange
    enabled: true                  # set false to disable auto-titles
    provider: "auto"
    model: ""
    language: ""                   # empty follows the conversation; e.g. "English" pins titles to one language
  tts_audio_tags:    { provider: "auto", model: "" }  # Gemini 3.1 TTS hidden audio-tag insertion
  skills_hub:        { provider: "auto", model: "" }  # skill matching and search
  mcp:               { provider: "auto", model: "" }  # MCP tool dispatch
  triage_specifier:  { provider: "auto", model: "" }  # hermes kanban specify: rough one-liner into a concrete spec, promoted to todo
  kanban_decomposer: { provider: "auto", model: "" }  # hermes kanban decompose: triage task into a graph of child tasks routed to specialist profiles
  profile_describer: { provider: "auto", model: "" }  # hermes profile describe --auto: 1-2 sentence profile descriptions

Otros espacios especializados siguen la misma estructura: goal_judge (determina si se cumplió el contrato de /goal), curator (la bifurcación que revisa el uso de skills), background_review (la bifurcación de mejora automática posterior al turno), review (el subagente revisor de /review), moa_reference y moa_aggregator (Mixture-of-Agents), memory_query_rewrite y monitor. Además, no necesitas editar YAML manualmente: ejecuta hermes model y selecciona “Configure auxiliary models” para acceder a un selector interactivo por tarea.34

La opción de proveedor "main" significa “usar el mismo proveedor que usa mi agente principal” y es válida únicamente dentro de auxiliary:, compression: y las entradas principales de respaldo (fallback_providers: o la opción heredada fallback_model:). No es válida para la configuración de nivel superior model.provider. Si usas un endpoint personalizado compatible con OpenAI como modelo principal, establece provider: custom en la sección model:.4

Por qué esto importa: dado que auto ya utiliza tu modelo principal, desapareció el antiguo problema de “configurar OpenRouter o dejar que las tareas auxiliares se degraden silenciosamente”; ahora, el costo es el factor que debes sopesar. Si tu modelo principal es un costoso modelo de razonamiento, dirige las tareas secundarias más conversacionales a uno económico y rápido:

auxiliary:
  vision:
    provider: "openrouter"
    model: "google/gemini-2.5-flash"
  compression:
    provider: "openrouter"
    model: "google/gemini-2.5-flash"

Sistema de configuración

Hermes tiene un sistema de configuración por capas. Comprender el orden de prioridad es esencial porque las capas superiores prevalecen sobre las inferiores, y una de ellas es un registro global de proveedores que no puedes ver en config.yaml.

Estructura de los archivos de configuración

Según la documentación oficial, estos son los archivos que conforman una configuración de Hermes:4

~/.hermes/
├── config.yaml       # All settings (model, terminal, TTS, compression, memory, toolsets, ...)
├── .env              # Secrets (API keys, bot tokens, passwords)
├── auth.json         # OAuth provider credentials (Nous Portal, Codex, Anthropic)
├── SOUL.md           # Primary agent identity (slot #1 in system prompt)
├── memories/         # Persistent memory (MEMORY.md, USER.md)
├── skills/           # Bundled + agent-created + hub-installed skills
├── cron/             # Scheduled jobs
├── sessions/         # Gateway session state
└── logs/             # agent.log, gateway.log, errors.log (secrets auto-redacted)

config.yaml frente a .env: cuando una opción está definida en ambos, config.yaml prevalece para la configuración que no contiene secretos.4 La regla es: - Secretos (claves de API, tokens de bots, contraseñas) → .env - Todo lo demás (modelo, backend de terminal, configuración de compresión, límites de memoria, toolsets) → config.yaml

Puedes hacer referencia a secretos desde config.yaml mediante interpolación al estilo del shell:4

auxiliary:
  vision:
    api_key: ${GOOGLE_API_KEY}
    base_url: ${CUSTOM_VISION_URL}
  delegation:
    api_key: ${DELEGATION_KEY}

Administración de la configuración

hermes config                # View current configuration
hermes config show           # Same as above
hermes config edit           # Open config.yaml in your editor
hermes config set KEY VAL    # Set a specific value
hermes config get KEY        # Print a single value (v0.19.0+)
hermes config unset KEY      # Remove a key so the default applies again (v0.19.0+)
hermes config path           # Print the config file path
hermes config env-path       # Print the .env file path
hermes config check          # Check for missing options (after updates)
hermes config migrate        # Interactively add missing options

Ejemplos:4

hermes config set model anthropic/claude-opus-4
hermes config set terminal.backend docker
hermes config set OPENROUTER_API_KEY sk-or-...   # Saves to .env

hermes config check y hermes config migrate son los comandos que debes ejecutar después de cada hermes update: detectan las opciones de configuración recién incorporadas que aún no están en tu archivo.6

Orden de prioridad de la configuración

Hermes carga la configuración desde varias fuentes. Cuando varias fuentes establecen el mismo valor, prevalece la que tenga mayor prioridad:4

  1. Argumentos de CLI — hermes chat --model anthropic/claude-sonnet-4 (reemplazo para una ejecución específica)
  2. Variables de entorno — se aplican al iniciar el proceso
  3. config.yaml — el archivo principal de configuración
  4. .env — solo para secretos
  5. Valores predeterminados integrados — se aplican cuando ninguna otra fuente establece un valor

Las opciones de CLI siempre prevalecen durante esa ejecución específica. config.yaml es la fuente de verdad a largo plazo.

Localización (v0.13.0+)

La versión v0.13.0 incorporó 7 idiomas para los mensajes de CLI y gateway: chino simplificado, japonés, alemán, español, francés, ucraniano y turco.18 La versión v0.14.0 traduce todos los comandos de gateway y el panel web, incorpora 8 idiomas más y eleva el total a 16.19 En la etiqueta v2026.8.31, el árbol locales/ contiene 17 catálogos de mensajes: inglés y 16 traducciones (af, ar, de, es, fr, ga, hu, it, ja, ko, pt, ru, tr, uk, zh-hant, zh).33 Por el momento, la documentación solo está localizada en chino simplificado. El idioma se determina a partir de las variables de entorno LC_ALL / LANG o mediante una clave locale: explícita en config.yaml. El inglés sigue siendo el idioma predeterminado y la fuente de verdad para cualquier cadena que aún no esté incluida en una traducción.

Profiles: varias instancias aisladas de Hermes

Los profiles permiten tener varias instancias aisladas de Hermes, cada una con su propia configuración, sesiones, skills, memoria y PID de gateway. Así puedes ejecutar un «Hermes del trabajo» y un «Hermes personal» en paralelo sin que ninguno tenga acceso al estado del otro.6

hermes profile list
hermes profile create work --clone                  # Clone from current profile
hermes profile use work                             # Set sticky default
hermes profile alias work --name h-work             # Create wrapper script
hermes profile export work -o work-backup.tar.gz
hermes profile import work-backup.tar.gz --name restored
hermes -p work chat -q "Hello from work profile"    # One-off without switching

Cada profile obtiene su propio HERMES_HOME (~/.hermes-<name>/ de forma predeterminada), por lo que varios profiles pueden ejecutar el gateway simultáneamente sin interferir entre sí.63

El límite de aislamiento se aplica de manera más estricta desde la versión v0.21.2: un conjunto de correcciones solucionó filtraciones reales entre profiles en configuraciones con gateways multiplexados, donde los profiles secundarios podían heredar las listas de permitidos del profile predeterminado, enviar credenciales a su host, entregar los secretos de su bóveda a servidores MCP mediante stdio o adjuntar los archivos .env/auth.json/state.db de otro profile a entregas MEDIA: (#107609-#107630). Si multiplexas profiles, la etiqueta v0.21.2 es aquella en la que la afirmación sobre el aislamiento realmente se cumple; consulta Novedades de v0.21.2.48


Comandos de CLI

Esta sección es la referencia práctica de los comandos de nivel superior de CLI. Para consultar la referencia oficial derivada del código, consulta la Referencia de comandos de CLI.6

Opciones globales

hermes [global-options] <command> [subcommand/options]
Opción Descripción
--version, -V Muestra la versión y sale
--profile <name>, -p <name> Selecciona el profile de Hermes que se usará
--resume <session>, -r <session> Reanuda una sesión por ID o título
--continue [name], -c [name] Reanuda la sesión más reciente (o busca una coincidencia por título)
--worktree, -w Inicia en un worktree de git aislado
--in <dir> Cambia a DIR antes de iniciar o reanudar. Al combinarse con --resume latest o -c, se elige la sesión más reciente del workspace de DIR y la sesión permanece en DIR (se omite la restauración del directorio de trabajo registrado)27
--ignore-user-config Ignora ~/.hermes/config.yaml y utiliza la configuración predeterminada incorporada (las credenciales de .env se siguen cargando)27
--ignore-rules Omite la inyección automática de AGENTS.md, SOUL.md, .cursorrules, la memoria y los skills precargados27
--tui Inicia la TUI moderna en lugar del REPL clásico27
--cli Fuerza el REPL clásico de prompt_toolkit (anula display.interface=tui)27
--dev Con --tui: ejecuta las fuentes de TypeScript mediante tsx (omite la compilación de dist)27
--yolo Omite las solicitudes de aprobación de comandos peligrosos
--safe-mode Opción de solución de problemas: inicia Hermes en un modo seguro mínimo para aislar problemas de inicio (v0.19.0+)56
--pass-session-id Incluye el ID de la sesión en el prompt del sistema del agente

Comandos de nivel superior

Comando Propósito
hermes chat Chat interactivo o de una sola ejecución
hermes model Elige de forma interactiva el proveedor y el modelo predeterminados
hermes gateway Ejecuta o administra el gateway de mensajería
hermes setup Asistente de configuración interactivo
hermes auth Administra credenciales: agregar, listar, eliminar, restablecer y definir la estrategia
hermes status Muestra el estado del agente, la autenticación y las plataformas
hermes cron Inspecciona y activa el planificador cron
hermes webhook Administra suscripciones dinámicas a webhooks
hermes doctor Diagnostica problemas de configuración y dependencias
hermes dump Genera un resumen de la configuración que puedes copiar y pegar para recibir soporte o depurar
hermes logs Consulta, sigue y filtra los registros del agente, el gateway y los errores
hermes config Muestra, edita, migra y consulta la configuración
hermes pairing Aprueba o revoca códigos de vinculación de mensajería
hermes skills Explora, instala, publica y audita skills
hermes honcho Administra la memoria de Honcho entre sesiones. Depende del plugin: la documentación indica que «los subcomandos específicos de plugins (por ejemplo, hermes honcho) se registran automáticamente cuando su proveedor está activo», por lo que no aparece en hermes --help a menos que Honcho sea el proveedor de memoria activo6
hermes memory Configura un proveedor de memoria externo
hermes acp Ejecuta Hermes como servidor ACP (integración con editores)
hermes mcp Administra la configuración del servidor MCP; ejecuta Hermes como servidor MCP
hermes plugins Administra plugins
hermes tools Configura las herramientas habilitadas en cada plataforma
hermes sessions Explora, exporta, depura y elimina sesiones. La versión v0.19.0 amplía hermes sessions export para admitir los formatos Markdown, Quarto, HTML, solo prompt y trazas de Hugging Face, además de un proceso opcional de eliminación de secretos mediante --redact y filtros por antigüedad, workspace y plataforma56; hermes sessions recover reconstruye los datos canónicos de las sesiones desde un archivo state.db dañado en una base de datos NUEVA e independiente, sin conexión y de manera no destructiva, mientras que --inspect-only informa si las tablas canónicas pueden leerse sin crear una base de datos (la ruta de recuperación indicada en v0.21.2)48; hermes sessions set-journal-mode delete\|wal (incorporado alrededor de v0.21.4) convierte un almacén entre WAL y el diario de reversión sin conexión: se niega a continuar mientras un proceso externo mantenga abierta la base de datos o un archivo auxiliar, cambia el modo sin esperar a que esos procesos terminen, verifica después los bytes 18/19 del encabezado de SQLite y acepta --db para utilizar un almacén distinto al predeterminado. Detén primero el gateway, el dashboard y todos los procesos de CLI; en Windows, donde no se detectan los procesos que mantienen archivos abiertos, se niega a continuar hasta que uses --force después de detener personalmente todos los procesos de Hermes. La ejecución se realiza sin conexión deliberadamente para que el comando nunca abra el almacén que convierte, y hermes doctor ahora remite a este comando51
hermes insights Muestra estadísticas de tokens, costos y actividad
hermes claw Herramientas auxiliares para migrar desde OpenClaw
hermes profile Administra profiles (varias instancias aisladas)
hermes completion Imprime scripts de autocompletado para la shell (bash/zsh)
hermes whatsapp Configura y vincula el puente de WhatsApp
hermes --version (-V) Imprime información de la versión. Es una opción global, no un subcomando: en la etiqueta v2026.8.31, el conjunto _BUILTIN_SUBCOMMANDS no contiene ninguna entrada version y la ruta rápida de inicio solo reconoce --version / -V27
hermes update Descarga el código más reciente y reinstala las dependencias
hermes uninstall Elimina Hermes del sistema (--full también elimina la configuración y los datos)
hermes backup Copia de seguridad completa de la configuración, las sesiones, los skills y la memoria (v0.9.0+)16
hermes import Restaura desde un archivo de copia de seguridad para migrar entre computadoras o volver a un estado anterior (v0.9.0+)16
hermes dashboard Inicia el dashboard web local para administrar el agente desde el navegador (v0.9.0+)16
hermes serve Ejecuta sin interfaz gráfica el servidor API del backend; desde v0.19.0, ya no compila ni monta la interfaz web56
hermes debug share Sube un informe de depuración completo a un pastebin para compartirlo al solucionar problemas (v0.9.0+)16
hermes approvals Herramientas para solicitudes de aprobación: suggest analiza el historial de aprobaciones para generar propuestas de command_allowlist; test simula el veredicto de aprobación de un comando sin ejecutarlo («nunca lo ejecuta», con --backend y --json). Las notas de la versión v0.21.0 presentan esta simulación como hermes approval-check, pero no existe ningún subcomando approval-check en la etiqueta v2026.8.31: la interfaz disponible es hermes approvals test2740
hermes bundles Crea, lista y administra paquetes de skills (alias de varios skills agrupados bajo un único comando de barra /<name>)27
hermes checkpoints Inspecciona, depura o vacía ~/.hermes/checkpoints/, el almacén oculto que respalda /rollback; ejecútalo sin argumentos para obtener un resumen del estado27
hermes computer-use Administra el backend Computer Use (cua-driver) (macOS/Windows/Linux)27
hermes console Abre la consola segura de comandos de Hermes27
hermes curator Mantenimiento de skills en segundo plano (curator): estado, ejecución, pausa y fijación27
hermes egress Administra el firewall de inyección de credenciales de salida iron-proxy para sandboxes de terminal remotas (deshabilitado de forma predeterminada)27
hermes fallback Administra los proveedores alternativos que se prueban cuando falla el modelo principal27
hermes hooks Inspecciona y administra hooks de scripts de shell: list, test <event>, revoke y doctor (bit de ejecución, lista de permitidos, cambios de mtime, validez de JSON y duración de una ejecución simulada)27
hermes import-agent Importa una configuración de Claude Code (~/.claude) o de Codex CLI (~/.codex) en Hermes27
hermes desktop (alias gui) Compila e inicia la aplicación de escritorio nativa de Electron27
hermes kanban Tablero de colaboración entre múltiples profiles (tareas, enlaces y comentarios) con tableros, un gráfico de enjambre (swarm: trabajadores en paralelo → verificador → sintetizador) y un despachador27
hermes login / hermes logout Obsoletos. Usa hermes auth para administrar las credenciales, hermes model para seleccionar un proveedor o hermes setup para realizar la configuración completa27
hermes lsp Administración del protocolo Language Server Protocol: status, list, install <server>, install-all y restart (cierra los clientes LSP en ejecución; la siguiente edición vuelve a iniciarlos)27
hermes migrate Migra la configuración de modelos retirados u opciones obsoletas27
hermes moa Configura las posiciones de proveedores y modelos de Mixture of Agents (preajustes con nombre que pueden seleccionarse desde el selector de modelos)27
hermes journey (alias learning, memory-graph) Cronología de los skills aprendidos y los recuerdos a lo largo del tiempo27
hermes monitoring Inspecciona el monitoreo del gateway (exportación de estado y diagnósticos); status muestra la configuración, el estado de la exportación y las medidas de ocultación de datos27
hermes pause / hermes resume Detención de emergencia: pause detiene la ejecución de cron/kanban y los nuevos turnos del gateway; resume la reanuda27
hermes peer Mensajes directos de bot a bot entre computadoras: permite usar add, list y remove con gateways de Hermes pares, además de dm para enviar un mensaje a un agente e imprimir su respuesta27
hermes pets Explora, instala y selecciona mascotas animadas de petdex27
hermes portal Configura Nous Portal (inicio de sesión, selección de modelo y Tool Gateway): login (predeterminado), info, open, tools; consulta Nous Tool Gateway2728
hermes project Administra proyectos (workspaces con nombre y varias carpetas): crear, listar, mostrar, agregar o eliminar carpetas, cambiar el nombre, establecer el principal, usar, archivar, restaurar y vincular un tablero kanban27
hermes proxy Proxy local compatible con OpenAI para proveedores de OAuth: start, status, providers27
hermes prompt-size Muestra un desglose por bytes del prompt del sistema y los esquemas de herramientas; funciona sin conexión27
hermes send Envía un mensaje a una plataforma configurada sin bucle de agente ni LLM (scripts, tareas cron, CI)27
hermes skin Lista, cambia y ajusta temas visuales (list, use, set)27
hermes slack Herramientas auxiliares para la integración con Slack: manifest imprime o escribe un manifiesto de aplicación de Slack que registra cada comando del gateway como un comando de barra nativo27
hermes sync Skill Sync entre dispositivos y con tu equipo: status, pull, push, now, enable, disable, device, propose27
hermes whatsapp-cloud Configura la integración con API de WhatsApp Business Cloud (distinta del puente para cuentas personales basado en Baileys de hermes whatsapp)27
hermes worktree Audita y recupera los worktrees de git y las ramas fusionadas que se hayan acumulado. list (alias ls, audit; la opción predeterminada) clasifica cada árbol por antigüedad, tamaño, veredicto y motivo; prune elimina los árboles seguros y borra las ramas locales completamente fusionadas. Ambos aceptan --repo <root>; prune también admite --dry-run (muestra el plan sin cambiar nada), --trees-only y --branches-only. Nunca elimina cambios con seguimiento que no se hayan confirmado, commits únicos que no se hayan enviado ni árboles en uso; los archivos temporales sin seguimiento se archivan en ~/.hermes/archive/worktree-prune/ antes de eliminarlos27
hermes secrets Administra fuentes externas de secretos (Bitwarden, 1Password) para obtener claves de API al iniciar el proceso27
hermes security Auditoría de la cadena de suministro (OSV.dev) para el venv, los plugins y los servidores MCP (audit)27
hermes verify Detecta el procedimiento de ejecución de un proyecto y realiza una prueba básica27

hermes chat: el punto de entrada principal

hermes sin argumentos abre el chat interactivo. hermes chat es la forma explícita con opciones:6

hermes chat -q "Summarize the latest PRs" --oneshot # Answer and exit (without --oneshot, a TTY seeds an interactive session)
hermes chat --provider openrouter --model anthropic/claude-sonnet-4.6
hermes chat --toolsets web,terminal,skills          # Enable specific toolsets
hermes chat --quiet -q "Return only JSON"           # Programmatic mode
hermes chat --worktree -q "Review repo and open a PR"

Opciones principales:

Opción Descripción
-q, --query "..." Consulta que se ejecutará. Cambió en v0.21.0: en una TTY real, ahora inicia una sesión interactiva (se envía literalmente como el primer turno); al combinarse con --oneshot o -Q, o al ejecutarse fuera de una TTY, responde y sale, que era el comportamiento anterior de una sola ejecución40
--query-file PATH Lee la única consulta desde un archivo en lugar de la línea de comandos (- lee stdin). La shell no interpreta nada, por lo que las comillas, $(...) y los acentos graves llegan literalmente; no puede usarse junto con -q51
--oneshot Con -q/--query-file: responde la consulta y sale (comportamiento heredado de consulta única). Se activa de forma implícita cuando la entrada/salida estándar no es una TTY y al usar -Q/--quiet40
-m, --model <model> Sustituye el modelo para esta ejecución
-t, --toolsets <csv> Habilita un conjunto de toolsets separados por comas
--provider <provider> Fuerza el uso de un proveedor (consulta la lista completa)
-s, --skills <name> Precarga uno o más skills para esta sesión
-v, --verbose Salida detallada
-Q, --quiet Modo programático (sin encabezado, indicador de progreso ni vistas previas)
--format <fmt> Formato de salida para el modo de consulta única (-q o --query-file): text (predeterminado) imprime la respuesta final como texto sin formato; stream-json emite eventos JSON delimitados por saltos de línea (JSONL): un evento system/init, fragmentos de text, eventos tool_use/tool_result y, finalmente, un sobre terminal result con el código de salida, el texto final y las estadísticas de tokens. stream-json implica --quiet, requiere -q o --query-file (sale con el código 2 si no se proporciona ninguno) y no puede combinarse con --tui; los diagnósticos y el ID de sesión permanecen en stderr, y la salida de las herramientas se limita a 5.000 caracteres por evento (incorporado alrededor de v0.21.4)51
--resume <session> Reanuda una sesión directamente desde chat
--worktree Crea un worktree de git aislado
--checkpoints Habilita checkpoints del sistema de archivos antes de realizar cambios destructivos
--yolo Omite las solicitudes de aprobación
--source <tag> Etiqueta de origen de la sesión (predeterminada: cli; usa tool para integraciones)
--max-turns <N> Máximo de iteraciones de llamadas a herramientas por turno de conversación (valor predeterminado: 500 desde v0.20.0, o agent.max_turns en la configuración)40

hermes setup: asistente completo

Ejecuta el asistente de configuración completo o abre directamente una de sus secciones:6

hermes setup                 # Full wizard
hermes setup model           # Provider and model only
hermes setup terminal        # Terminal backend only
hermes setup gateway         # Messaging platforms only
hermes setup tools           # Tool enable/disable per platform
hermes setup agent           # Agent behavior only
hermes setup --non-interactive
hermes setup --reset         # Reset config to defaults before setup

hermes logs: consultas estructuradas de registros

hermes logs es más potente que tail -f aplicado a los archivos de registro, ya que permite filtrar simultáneamente por nivel, ID de sesión e intervalo de tiempo.6

hermes logs                          # Last 50 lines of agent.log
hermes logs -f                       # Follow in real time
hermes logs gateway -n 100           # Last 100 lines of gateway.log
hermes logs --level WARNING --since 1h   # Warnings from the last hour
hermes logs --session abc123         # Filter by session ID substring
hermes logs errors --since 30m -f    # Follow errors.log from 30m ago
hermes logs list                     # List all log files with sizes

Los archivos de registro se encuentran en ~/.hermes/logs/:6 - agent.log — toda la actividad del agente (llamadas de API, envío de tareas a herramientas, ciclo de vida de las sesiones, INFO+) - errors.log — solo advertencias y errores (un subconjunto filtrado de agent.log) - gateway.log — actividad del gateway de mensajería (conexiones con plataformas, envío de tareas, webhooks)

La rotación se realiza automáticamente mediante RotatingFileHandler de Python; busca archivos como agent.log.1, agent.log.2, etc.6

hermes doctor: diagnósticos

hermes doctor [--fix] es el primer comando que debes ejecutar cuando algo falla. Comprueba la validez de la configuración, la presencia de dependencias, la disponibilidad de claves de API y el estado de los servicios; además, puede intentar realizar reparaciones automáticas con --fix.6

Para compartir los diagnósticos con otra persona, usa hermes dump: genera un resumen compacto en texto sin formato con las claves de API ocultas, listo para pegarlo en una incidencia de GitHub o en un hilo de Discord.6


Comandos slash

Los comandos slash se ejecutan dentro de una sesión de chat activa (CLI o plataforma de mensajería). Se despachan desde un COMMAND_REGISTRY compartido en hermes_cli/commands.py, por lo que la mayoría funciona de manera idéntica en todas las interfaces.9

Control de la sesión

Comando Descripción
/new (alias /reset) Inicia una sesión nueva
/clear Limpia la pantalla e inicia una sesión nueva
/history Muestra el historial de la conversación
/save Guarda la conversación actual
/retry Reintenta el último mensaje
/undo Elimina el último intercambio entre el usuario y el asistente
/title <name> Asigna un título a la sesión actual
/compress Comprime manualmente el context de la conversación
/rollback [number] Enumera o restaura checkpoints del sistema de archivos
/stop Finaliza todos los procesos en segundo plano que estén en ejecución
/status Muestra información sobre la sesión, el modelo, los tokens y el context; desde la serie de versiones v0.20.5, también muestra el modo de razonamiento, las aprobaciones pendientes y el uso del context4035
/queue <prompt> Pone en cola un prompt para el turno siguiente. Advertencia: tanto /queue como /quit reclaman /q; prevalece el último registro y, en la práctica, /q se resuelve como /quit. Escribe siempre /queue de forma explícita.9
/resume [name] Reanuda una sesión a la que se le asignó un nombre previamente
/statusbar (alias /sb) Activa o desactiva la barra de estado del context y del modelo
/background <prompt> (alias /bg) Ejecuta un prompt en una sesión independiente en segundo plano
/btw <question> Pregunta secundaria efímera (sin herramientas y sin persistencia)
/plan [request] Carga el skill plan incluido para redactar un plan en lugar de ejecutarlo
/branch [name] (alias /fork) Crea una rama de la sesión actual
/goal <target> Fija el agente en un objetivo para que se mantenga enfocado entre turnos. Patrón de bucle Ralph convertido en una primitiva de primera clase. Presupuesto de turnos configurable. Incorporado en v0.13.0.18
/subgoal <criterion> Agrega criterios de éxito a un /goal activo sin reiniciar el bucle. Incorporado en v0.14.0.19
/handoff <target> Transfiere la sesión activa —mensajes, llamadas a herramientas y context— a otro modelo, personalidad o profile. Incorporado en v0.14.0.19
/worktree [new [name]\|list\|prune [--dry-run]] Inspecciona, crea o recupera worktrees aislados de git sin salir de la sesión. new crea un worktree dentro de .worktrees/ del repositorio y traslada la sesión a este; list los enumera; prune realiza la misma recuperación supervisada que hermes worktree prune y, según la documentación, «nunca modifica el árbol en el que se ejecuta la sesión»27

Configuración y modelo

Comando Descripción
/config Muestra la configuración actual
/model [model-name] Muestra o cambia el modelo actual
/provider Muestra los proveedores disponibles y el proveedor actual
/personality [name] Establece una capa de personalidad
/verbose Alterna entre las opciones de visualización del progreso de las herramientas
/reasoning Administra el nivel de esfuerzo de razonamiento y su visualización. v0.19.0 agrega los niveles de esfuerzo max y ultra, y limita /reasoning a la sesión, además de incorporar ajustes de esfuerzo por modelo y por ranura de MoA en la configuración56
/skin Muestra o cambia la apariencia o el tema visual
/voice [on\|off\|tts\|status] Activa o desactiva el modo de voz de CLI
/yolo Activa o desactiva el modo YOLO (omite las solicitudes de aprobación). Desde v0.19.0, las reglas de denegación definidas por el usuario siguen bloqueando los comandos coincidentes incluso en modo YOLO56
/fast Activa o desactiva el modo rápido, que ofrece procesamiento prioritario para los modelos de OpenAI y Anthropic (v0.9.0+)16
/debug Ejecuta diagnósticos rápidos en todas las plataformas (v0.9.0+)16
/subscription Administra tu plan de Nous Portal desde la terminal: consulta el plan y la asignación restante, previsualiza el costo de subir o bajar de categoría y aplica el cambio con opción de deshacerlo (v0.19.0+)56
/topup Agrega crédito a tu saldo de Nous Portal sin salir de la terminal (v0.19.0+)56

El comando /model es la herramienta principal para cambiar de proveedor durante una sesión:9

/model                              # Show current model and options
/model claude-sonnet-4              # Switch model (auto-detect provider)
/model zai:glm-5                    # Switch provider:model
/model custom:qwen-2.5              # Use model on custom endpoint
/model custom                       # Auto-detect model from custom endpoint
/model custom:local:qwen-2.5        # Named custom provider
/model openrouter:anthropic/claude-sonnet-4   # Back to cloud

v0.19.0 agrega /model --once, una sustitución del modelo durante un solo turno que vuelve automáticamente al modelo anterior después de la respuesta.56 Desde la serie de versiones v0.20.5, el selector de /model también admite búsqueda difusa: filtra los resultados a medida que escribes.2335

Herramientas, skills e información

Comando Descripción
/tools [list\|disable\|enable] [name...] Administra las herramientas de la sesión actual
/toolsets Enumera los toolsets disponibles
/browser [connect\|disconnect\|status] Administra la conexión CDP local de Chrome
/skills Busca, instala, inspecciona o administra skills
/cron Administra las tareas programadas
/reload-mcp Recarga los servidores MCP desde config.yaml
/plugins Enumera los complementos instalados
/help Muestra todos los comandos
/usage Muestra el uso de tokens, el costo y la duración
/insights Muestra análisis de uso (últimos 30 días)
/platforms Muestra el estado de las plataformas de mensajería
/profile Muestra el nombre y la ubicación principal del profile activo
/palette Abre la paleta de comandos con búsqueda difusa (también con Ctrl+P) para buscar cualquier comando y skill. Se incorporó en la serie de versiones v0.20.54035

Comandos slash dinámicos de los skills

Cada skill instalado se expone automáticamente como un comando slash:9

/gif-search funny cats
/axolotl help me fine-tune Llama 3 on my dataset
/github-pr-workflow create a PR for the auth refactor
/excalidraw       # Just the skill name loads it and lets the agent ask what you need

Desde v0.19.0, las invocaciones de skills mediante comandos slash se pueden acumular: /skill-a /skill-b do XYZ carga ambos skills en orden dentro de un solo turno, con autocompletado y texto predictivo para los nombres encadenados.56

También puedes definir comandos rápidos en config.yaml que vinculen un nombre corto con un prompt más largo:9

quick_commands:
  review: "Review my latest git diff and suggest improvements"
  deploy: "Run the deployment script at scripts/deploy.sh and verify the output"
  morning: "Check my calendar, unread emails, and summarize today's priorities"

Después, escribe /review, /deploy o /morning en CLI.

Coincidencia por prefijo

Los comandos admiten coincidencias por prefijo: al escribir /h, se resuelve como /help; /mod se resuelve como /model. Cuando un prefijo es ambiguo, prevalece el primer registro según el orden del registry. Los nombres completos de los comandos y los alias registrados siempre tienen prioridad sobre las coincidencias por prefijo.9

Comandos específicos de las plataformas de mensajería

Algunos comandos solo funcionan en plataformas de mensajería (Telegram, Discord, Slack, WhatsApp, Signal, correo electrónico y Home Assistant):9

  • /status — muestra información de la sesión (ya no es exclusivo de las plataformas de mensajería; consulta Control de la sesión)
  • /sethome (alias /set-home) — marca el chat actual como la ubicación principal de la plataforma
  • /approve [session|always] — aprueba un comando peligroso pendiente
  • /deny [reason] — rechaza un comando peligroso pendiente. Desde v0.19.0, /deny <reason> transmite al agente el motivo de tu rechazo para que corrija el rumbo en lugar de volver a intentarlo a ciegas56
  • /update — actualiza Hermes Agent a la versión más reciente
  • /commands [page] — explora todos los comandos y skills (con paginación)

Además, algunos son exclusivos de CLI: /skin, /tools, /toolsets, /browser, /config, /cron, /skills, /platforms, /paste, /statusbar, /plugins.9


Herramientas y toolsets

Hermes incluye un amplio registro de herramientas integradas que abarca búsquedas web, automatización del navegador, ejecución en terminal, edición de archivos, memoria, delegación, entrenamiento por RL, entrega de mensajes, integración con Home Assistant y mucho más.10 Las herramientas se organizan en toolsets lógicos que pueden habilitarse o deshabilitarse en cada plataforma.

Categorías de alto nivel

Categoría Ejemplos Descripción
Web web_search, web_extract Buscar en la web y extraer el contenido de páginas
Terminal y archivos terminal, process, read_file, patch Ejecutar comandos y manipular archivos
Navegador browser_navigate, browser_snapshot, browser_vision Automatización interactiva del navegador con texto y visión
Contenido multimedia vision_analyze, video_analyze, video_generate, image_generate, text_to_speech Análisis y generación multimodales. video_analyze prioriza Gemini y ofrece compatibilidad extensible con proveedores multimodales compatibles (v0.13.0+). v0.14.0 incorpora video_generate unificado con backends de proveedores intercambiables y envía los píxeles sin procesar mediante vision_analyze cuando el modelo activo admite visión.1819
Orquestación de agentes todo, clarify, execute_code, delegate_task Planificación, aclaraciones, ejecución de código y delegación a subagentes
Uso de la computadora computer_use Control del escritorio mediante el backend cua-driver; v0.14.0 permite usarlo con proveedores que no sean Anthropic y admitan visión.19
Memoria y recuperación memory, session_search Memoria persistente y búsqueda de sesiones
Automatización y entrega cronjob, send_message Tareas programadas y mensajería saliente
Integraciones ha_*, herramientas de MCP, rl_* Home Assistant, MCP y entrenamiento por RL

Entre los nombres habituales de toolsets se incluyen web, terminal, file, browser, vision, image_gen, moa, skills, tts, todo, memory, session_search, cronjob, code_execution, delegation, clarify, homeassistant y rl.10

Administración de herramientas

hermes chat --toolsets "web,terminal"       # Use specific toolsets
hermes tools                                # Interactive per-platform tool config
hermes tools --summary                      # Print enabled-tools summary

También puedes activar o desactivar herramientas durante una sesión mediante /tools disable <name> y /tools enable <name>. Esto reinicia la sesión para que el nuevo conjunto de herramientas entre en vigor.9

Backends de terminal

La herramienta de terminal incluye siete backends de ejecución integrados y, desde la versión v0.20.6, este conjunto puede ampliarse mediante plugins, al igual que el selector de proveedores (consulta más adelante):1024

Backend Caso de uso
local Ejecutar en tu computadora (opción predeterminada): desarrollo y tareas de confianza
docker Contenedores aislados: seguridad y reproducibilidad
ssh Servidor remoto: entorno aislado para mantener al agente alejado de su propio código
singularity Contenedores HPC: computación en clúster sin acceso root
modal Ejecución serverless en la nube
daytona Espacio de trabajo aislado en la nube: entorno de desarrollo remoto persistente
vercel_sandbox MicroVM de Vercel Sandbox en la nube: ejecución en la nube con persistencia del sistema de archivos respaldada por instantáneas. Instala hermes-agent[vercel], configura terminal.vercel_runtime (node24, node22 o python3.13) y autentícate con VERCEL_TOKEN, VERCEL_PROJECT_ID y VERCEL_TEAM_ID; la raíz predeterminada del espacio de trabajo remoto es /vercel/sandbox24

Cambia de backend con hermes config set terminal.backend <name> o en config.yaml:

terminal:
  backend: docker      # or: local, ssh, singularity, modal, daytona, vercel_sandbox
  cwd: "."             # Working directory
  timeout: 180         # Command timeout in seconds

Backends de plugins (v0.20.6+). Los proveedores externos de entornos aislados ya no necesitan incorporarse al repositorio principal: un plugin registra un TerminalEnvironmentProvider al cargarse mediante PluginContext.register_terminal_environment_provider, y el nombre registrado pasa a estar disponible en terminal.backend exactamente igual que uno integrado. Los nombres integrados están reservados: el registro rechaza cualquier proveedor cuyo nombre coincida con un backend incluido en el repositorio. Además, un backend registrado participa automáticamente en todas las superficies principales (el selector de backends de hermes setup, el estado de las comprobaciones del dashboard, las verificaciones de hermes doctor, la gestión de rutas y del directorio de trabajo actual en contenedores y la eliminación de secretos), porque el núcleo consulta el registro en cada punto de clasificación en lugar de utilizar una lista de nombres codificada de forma rígida.32

Backend SSH (recomendado por seguridad, ya que el agente no puede modificar su propio código):10

terminal:
  backend: ssh
# In ~/.hermes/.env
TERMINAL_SSH_HOST=my-server.example.com
TERMINAL_SSH_USER=myuser
TERMINAL_SSH_KEY=~/.ssh/id_rsa

Backend Docker:

terminal:
  backend: docker
  docker_image: python:3.11-slim

Recursos de contenedores (aplicable a docker, singularity, modal y daytona):10

terminal:
  container_cpu: 1
  container_memory: 5120          # MB (default 5GB)
  container_disk: 51200           # MB (default 50GB)
  container_persistent: true      # Persist filesystem across sessions

Con container_persistent: true, los paquetes instalados, los archivos y la configuración se conservan entre sesiones.10

Todos los backends de contenedores aplican medidas de seguridad reforzadas: sistema de archivos raíz de solo lectura (Docker), eliminación de todas las capacidades de Linux excepto DAC_OVERRIDE, CHOWN y FOWNER, prohibición de elevar privilegios, límites de PID (256 procesos), aislamiento completo de espacios de nombres y espacio de trabajo persistente mediante volúmenes.10

Procesos en segundo plano

La herramienta de terminal permite ejecutar procesos en segundo plano y administrarlos de forma explícita:10

terminal(command="pytest -v tests/", background=true)
# Returns: {"session_id": "proc_abc123", "pid": 12345}

process(action="list")                            # Show all running processes
process(action="poll", session_id="proc_abc123")  # Check status
process(action="wait", session_id="proc_abc123")  # Block until done
process(action="log", session_id="proc_abc123")   # Full output
process(action="kill", session_id="proc_abc123")  # Terminate
process(action="write", session_id="proc_abc123", data="y")  # Send input

El modo PTY (pty=true) permite usar herramientas interactivas CLI como Codex y Claude Code.10

Sudo

Si un comando necesita sudo, Hermes solicita tu contraseña y la conserva en caché durante la sesión. También puedes configurar SUDO_PASSWORD en ~/.hermes/.env.10


Kanban multiagente (v0.13.0+)

v0.13.0 convierte la colaboración multiagente en una capacidad fundamental: un tablero Kanban persistente que mantiene el seguimiento de las tareas, su estado y la identidad de los trabajadores entre agentes y reinicios.18 Este tablero permite que un enjambre de trabajadores de Hermes termine realmente el trabajo en lugar de quedar paralizado por traspasos fallidos.

Mecanismo Qué hace
Señales de actividad Cada trabajador emite señales mientras tiene asignada una tarea. Si falta una señal, el trabajador se marca como sospechoso y la tarea queda disponible para que otro la recupere.
Recuperación Otro trabajador puede retomar una tarea abandonada con todo su estado y los resultados parciales anteriores.
Detección de zombis Los trabajadores que finalizan sin marcar una tarea como terminada quedan bloqueados automáticamente y no pueden reclamar nuevas tareas, lo que evita que el enjambre acumule identidades inactivas.
Filtro de alucinaciones Si un resultado no supera el filtro, la tarea vuelve al tablero con el motivo indicado en lugar de marcarse como terminada.
max_retries por tarea Permite anular el límite predeterminado de reintentos para una tarea que sabes que es frágil.
Tableros multiproyecto Un solo directorio principal de Hermes puede alojar varios tableros independientes.

El tablero Kanban se combina de forma natural con /goal (el bucle Ralph con objetivo bloqueado) para gestionar el objetivo y con la herramienta delegate_task existente para definir la creación de agentes. El resultado es un patrón de enjambre en el que todos los agentes comparten una única fuente de verdad sobre qué hacer a continuación, quién está trabajando en cada tarea y qué está bloqueado.

¿Qué es un enjambre de Hermes?

Un enjambre está formado por varios trabajadores de Hermes que operan en paralelo sobre un mismo tablero Kanban compartido. No es un subsistema independiente que debas habilitar: es una posibilidad que ofrece el tablero. El tablero aporta lo único que los agentes paralelos no pueden proporcionarse por sí solos: una respuesta única y autoritativa a ¿qué debería retomar a continuación y alguien ya está trabajando en ello?

v0.15.0 convirtió este patrón en una topología compatible al incorporar una topología de enjambre para coordinar trabajadores en paralelo, la descomposición automática de un objetivo de alto nivel en subtareas, modelos alternativos por tarea, tareas programadas y administración de worktrees para que los trabajadores paralelos no entren en conflicto dentro del mismo checkout.59

Problema en una configuración multiagente básica Lo que hace el tablero en su lugar
Dos trabajadores toman la misma tarea Se reclama la propiedad de la tarea y se registra la identidad del trabajador
Un trabajador falla durante una tarea y el trabajo desaparece La señal de actividad vence y la tarea se recupera junto con los resultados parciales anteriores
Un trabajador que falló continúa «reteniendo» tareas indefinidamente La detección de zombis le impide reclamar nuevas tareas
Un mismo modelo costoso para todas las subtareas Modelos alternativos por tarea: modelos económicos para las subtareas mecánicas
Trabajadores paralelos que editan los mismos archivos La administración de worktrees aísla el checkout de cada trabajador

En la práctica, el proceso consiste en asignarle un objetivo al enjambre, dejar que la descomposición automática lo divida en tareas del tablero y permitir que los trabajadores las reclamen, ejecuten y devuelvan sus resultados. El límite de reintentos se define por tarea (max_retries), por lo que una subtarea frágil no consume la tolerancia de toda la ejecución. Como el tablero es persistente, el enjambre sobrevive a los reinicios: los trabajadores vuelven a conectarse y reanudan el trabajo a partir del mismo estado.

Un enjambre solo es tan bueno como su descomposición. El tablero coordina a los trabajadores, pero no convierte un objetivo mal dividido en uno bien planteado. Las tareas que compartan un estado oculto seguirán entrando en conflicto, con worktrees o sin ellos.


Sistema de skills

Las skills son documentos de conocimiento bajo demanda que el agente puede cargar cuando los necesita. Siguen un patrón de divulgación progresiva para minimizar el uso de tokens y son compatibles con el estándar abierto agentskills.io.11

Todas las skills se encuentran en ~/.hermes/skills/, el directorio principal y la fuente de referencia. En una instalación nueva, las skills incluidas se copian desde el repositorio. Las instaladas desde el Hub y las creadas por el agente también se guardan aquí.11

Divulgación progresiva

Level 0: skills_list()           → [{name, description, category}, ...]   (~3k tokens)
Level 1: skill_view(name)        → Full content + metadata                 (varies)
Level 2: skill_view(name, path)  → Specific reference file                 (varies)

El agente solo carga el contenido completo de una skill cuando realmente lo necesita.11

Formato de SKILL.md

---
name: my-skill
description: Brief description of what this skill does
version: 1.0.0
platforms: [macos, linux]      # Optional — restrict to OS platforms
metadata:
  hermes:
    tags: [python, automation]
    category: devops
    fallback_for_toolsets: [web]     # Conditional activation
    requires_toolsets: [terminal]    # Conditional activation
    config:                          # Config.yaml settings
      - key: my.setting
        description: "What this controls"
        default: "value"
        prompt: "Prompt for setup"
---

# Skill Title

## When to Use
Trigger conditions for this skill.

## Procedure
1. Step one
2. Step two

## Pitfalls
- Known failure modes and fixes

## Verification
How to confirm it worked.

Activación condicional

Las skills pueden mostrarse u ocultarse según las herramientas disponibles. Esto resulta especialmente útil para las skills de respaldo: alternativas gratuitas o locales que solo deberían aparecer cuando una herramienta prémium no está disponible:11

Campo Comportamiento
fallback_for_toolsets La skill se oculta cuando los toolsets indicados están disponibles
fallback_for_tools Igual, pero comprueba herramientas individuales
requires_toolsets La skill se oculta cuando los toolsets indicados no están disponibles
requires_tools Igual, pero comprueba herramientas individuales

Ejemplo: la skill integrada duckduckgo-search utiliza fallback_for_toolsets: [web]. Cuando tienes configurada FIRECRAWL_API_KEY, el toolset web está disponible y el agente utiliza web_search; por lo tanto, la skill de DuckDuckGo permanece oculta. Sin la clave de API, la skill de DuckDuckGo aparece automáticamente como alternativa.11

Skills administradas por el agente

El agente puede crear, actualizar y eliminar sus propias skills mediante la herramienta skill_manage. Esta es la memoria procedimental del agente: cuando descubre cómo realizar un flujo de trabajo complejo, guarda el procedimiento como una skill para reutilizarlo en el futuro.11

Cuándo crea skills el agente:11 - Después de completar correctamente una tarea compleja (5 o más llamadas a herramientas) - Cuando encontró errores o callejones sin salida y descubrió el camino correcto - Cuando el usuario corrigió su enfoque - Cuando descubrió un flujo de trabajo complejo

Acciones:11

Acción Se utiliza para
create Crear una skill desde cero
patch Realizar correcciones específicas (opción preferida, ya que utiliza menos tokens)
edit Hacer reestructuraciones importantes
delete Eliminar una skill por completo
write_file Agregar o actualizar archivos auxiliares
remove_file Eliminar un archivo auxiliar

Hub de skills

Explora, busca, instala y administra skills de registros en línea:611

hermes skills browse                          # Browse all hub skills
hermes skills browse --source official        # Browse official optional skills
hermes skills search kubernetes               # Search all sources
hermes skills search react --source skills-sh # Search skills.sh directory
hermes skills inspect openai/skills/k8s       # Preview before installing
hermes skills install openai/skills/k8s       # Install with security scan
hermes skills install skills-sh/anthropics/skills/pdf --force
hermes skills check                           # Check for upstream updates
hermes skills update                          # Reinstall changed hub skills
hermes skills audit                           # Re-scan installed hub skills
hermes skills uninstall k8s
hermes skills publish skills/my-skill --to github --repo owner/repo
hermes skills tap add myorg/skills-repo       # Add custom GitHub source

Fuentes integradas del Hub:11

Fuente Ejemplo Notas
official official/security/1password Skills opcionales distribuidas con Hermes (confianza integrada)
skills-sh skills-sh/vercel-labs/agent-skills/vercel-react-best-practices Directorio público de skills de Vercel
well-known well-known:https://mintlify.com/docs/.well-known/skills/mintlify Descubrimiento mediante URL en sitios que publican /.well-known/skills/index.json
github openai/skills/k8s Instalaciones directas desde un repositorio o una ruta de GitHub
clawhub — Mercado de skills de terceros
lobehub — Conversión del catálogo de agentes de LobeHub
browse-sh — Fuente de skills de Browserbase

Taps predeterminados de GitHub (pueden explorarse sin configuración): openai/skills, anthropics/skills, huggingface/skills, NVIDIA/skills, garrytan/gstack. La fuente claude-marketplace se eliminó en la versión 0.20.0; browse-sh la sustituyó en la lista de fuentes.1155

Análisis de seguridad

Todas las skills instaladas desde el Hub pasan por un analizador de seguridad que busca filtraciones de datos, inyección de prompts, comandos destructivos, señales de riesgos en la cadena de suministro y otras amenazas.11

Niveles de confianza:11

Nivel Fuente Política
builtin Se distribuye con Hermes Siempre es de confianza
official optional-skills/ en el repositorio Confianza integrada, sin advertencia de terceros
trusted Registros de confianza (openai/skills, anthropics/skills) Política más permisiva
community Todo lo demás Los hallazgos no peligrosos pueden anularse con --force; los veredictos dangerous permanecen bloqueados

--force puede anular los bloqueos de políticas no peligrosos para las skills de la comunidad. No anula un veredicto dangerous del análisis.11

Directorios externos de skills

Puedes indicarle a Hermes directorios adicionales de skills para que los examine junto con el directorio local:11

skills:
  external_dirs:
    - ~/.agents/skills
    - /home/shared/team-skills
    - ${SKILLS_REPO}/skills

Las rutas admiten la expansión de ~ y la sustitución de variables de entorno mediante ${VAR}. Los directorios externos son de solo lectura: cuando el agente crea o edita una skill, siempre escribe en ~/.hermes/skills/. Si existe una skill con el mismo nombre en ambos lugares, la versión local tiene prioridad.11

Skills fijadas: skills.auto_load (periodo de la versión 0.21.4)

Los nombres de skills incluidos en skills.auto_load dentro de config.yaml quedan fijados para cargarse por completo en cada sesión nueva, ya sea de CLI, TUI, gateway, cron o API:51

skills:
  auto_load:
    - team-conventions
    - deploy-checklist

La lista se resuelve una sola vez, cuando se crea por primera vez el prompt del agente. Si falta un nombre o está deshabilitado, se muestra una advertencia y se omite en lugar de provocar un error en la sesión. Además, HERMES_IGNORE_RULES (el mecanismo subyacente de --ignore-rules) suprime la lista, al igual que el resto del contexto insertado automáticamente. Esto complementa a -s/--skills con instrucciones permanentes, mientras que estas opciones solo precargan skills para una sesión.51


Memoria persistente

Hermes cuenta con una memoria limitada y seleccionada que persiste entre sesiones. La memoria del agente se compone de dos archivos, ambos almacenados en ~/.hermes/memories/:12

Archivo Propósito Límite de caracteres
MEMORY.md Notas personales del agente: datos del entorno, convenciones y aprendizajes 2.200 caracteres (~800 tokens)
USER.md Perfil del usuario: preferencias, estilo de comunicación y expectativas 1.375 caracteres (~500 tokens)

Ambos se incorporan al prompt del sistema como una instantánea inmutable al inicio de la sesión. El agente administra su propia memoria mediante la herramienta memory: add, replace o remove.12

Patrón de instantánea inmutable: la información incorporada al prompt del sistema se captura una sola vez al inicio de la sesión y nunca cambia durante esta. Esto es intencional, ya que conserva la caché del prefijo de LLM para mejorar el rendimiento. Los cambios realizados durante una sesión se guardan de inmediato en el disco, pero no aparecen en el prompt del sistema hasta la siguiente sesión.12

Qué guardar

Guarda lo siguiente (el agente lo hace de manera proactiva):12 - Preferencias del usuario: «Prefiero TypeScript en lugar de JavaScript» → user - Datos del entorno: «Este servidor ejecuta Debian 12 con PostgreSQL 16» → memory - Correcciones: «No uses sudo para los comandos de Docker; el usuario pertenece al grupo docker» → memory - Convenciones: «El proyecto usa tabulaciones, líneas de hasta 120 caracteres y docstrings al estilo de Google» → memory - Trabajo completado: «La base de datos se migró de MySQL a PostgreSQL el 15 de enero de 2026» → memory

Omite lo siguiente:12 - Información trivial u obvia - Datos que puedan volver a descubrirse fácilmente - Volcados de datos sin procesar (son demasiado grandes para la memoria) - Información efímera específica de una sesión - Información que ya se encuentre en los archivos de contexto

Búsqueda de sesiones

Además de MEMORY.md y USER.md, el agente puede buscar en sus conversaciones anteriores mediante la herramienta session_search. Todas las sesiones de CLI y mensajería se almacenan en SQLite (~/.hermes/state.db) con búsqueda de texto completo FTS5. Desde el rediseño de v0.15.0, la herramienta no utiliza LLM en absoluto: devuelve directamente el contenido almacenado de las conversaciones (en palabras de la fuente, la «herramienta con una única estructura devuelve directamente el contenido de la base de datos»), lo que la hizo 4.500 veces más rápida y eliminó su costo de API.125934

Función Memoria persistente Búsqueda de sesiones
Capacidad ~1.300 tokens en total Ilimitada (todas las sesiones)
Velocidad Instantánea (en el prompt del sistema) Una consulta FTS, sin llamada a LLM desde v0.15.0
Caso de uso Datos clave siempre disponibles Encontrar conversaciones anteriores específicas
Administración Seleccionada manualmente por el agente Automática: se almacenan todas las sesiones
Costo en tokens Fijo por sesión (~1.300 tokens) Bajo demanda

Dos incorporaciones del periodo de v0.21.4, ambas verificadas en la etiqueta v2026.9.21. Primero, límites temporales: la estructura de descubrimiento acepta after (un límite inferior inclusivo para la hora de inicio de la sesión) y before (un límite superior exclusivo), cada uno expresado como una fecha o fecha y hora ISO —un valor que solo contiene la fecha representa la medianoche UTC de ese día— o como una duración relativa (7d, 24h, 2w). Están pensados únicamente para consultas que indiquen de forma explícita un intervalo temporal; sort sigue siendo un sesgo de clasificación, no un límite. Segundo, un reintento de recuperación cuando no hay resultados: el AND implícito entre términos de FTS5 hace que una consulta reformulada con varias palabras pueda pasar por alto una oración almacenada si le falta siquiera uno de esos términos. Por eso, cuando la consulta exacta y todas las alternativas por subcadena no producen resultados, la búsqueda vuelve a consultar el índice haciendo coincidir CUALQUIER término y ordena primero las filas que abarcan más términos. Los resultados conservan la semántica de coincidencia exacta (el reintento solo se activa cuando no se obtiene ningún resultado), mientras que las consultas con OR/NOT explícitos, las de un solo término y las dirigidas mediante CJK no se modifican.51

Proveedores externos de memoria

Para contar con una memoria persistente más profunda que MEMORY.md y USER.md, Hermes incluye siete plugins de proveedores externos de memoria: Honcho, OpenViking, Mem0, Holographic, RetainDB, ByteRover y Supermemory. Otros, como Hindsight, se instalan desde el catálogo de plugins.12

Hindsight formó parte del árbol principal hasta v0.21.4 y pasó al catálogo en v0.21.5, bajo el mantenimiento de Vectorize. Las instalaciones existentes se migran automáticamente: si está definido memory.provider: hindsight, hermes update instala el plugin del catálogo en el directorio principal de cada profile que lo mencione, y el primer inicio del agente lo instala si todavía falta. Con security.allow_lazy_installs: false, el proceso de inicio del agente solo registra un mensaje, así que debes ejecutar hermes plugins install hindsight por tu cuenta. El plugin se instala en ~/.hermes/plugins/hindsight/ y se agrega a plugins.enabled; memory.provider, memory.hindsight.*, HINDSIGHT_API_KEY y tus datos de memoria permanecen intactos. Comprueba el estado con hermes memory status y hermes plugins list. El extra de pip hermes-agent[hindsight] ya no existe.53

Los proveedores externos funcionan junto con la memoria integrada (nunca la reemplazan) y agregan funciones como grafos de conocimiento, búsqueda semántica, extracción automática de datos y modelado del usuario entre sesiones:612

hermes memory setup         # Pick a provider and configure it
hermes memory status        # Check what's active
hermes memory off           # Disable external provider (built-in only)

Solo puede estar activo un proveedor externo a la vez. La memoria integrada siempre está activa.6

Reanudación automática de sesiones (v0.13.0+)

v0.13.0 permite recuperarse de una interrupción mientras el agente está en ejecución. El gateway reanuda automáticamente las sesiones interrumpidas después de un reinicio; los reinicios provocados por /update conservan el estado de la sesión durante la actualización; y, durante el desarrollo, las recargas de archivos fuente mantienen viva la sesión activa en lugar de forzar una nueva.18 En la práctica, el trabajo de larga duración en el gateway y las tareas ejecutadas mediante cron ya no reinician su ventana de contexto cuando se reinicia el proceso.

Checkpoints v2 (v0.13.0+)

En v0.13.0, la persistencia del estado se reescribió como un diseño de almacenamiento único con depuración real, mecanismos de protección del disco y sin repositorios paralelos huérfanos.18 El sistema anterior de checkpoint acumulaba estado en el disco de los profile de larga duración; el almacenamiento v2 establece un límite estricto para el almacenamiento local de checkpoint y elimina la contabilidad duplicada que provocaba ese crecimiento. No se requiere ningún cambio de configuración por parte del usuario; la siguiente escritura de checkpoint utiliza la ruta de v2.


Personalidad y SOUL.md

SOUL.md es la identidad principal de una instancia de Hermes. Ocupa la posición n.º 1 en el prompt del sistema y reemplaza la identidad predeterminada definida directamente en el código.13

Hermes crea automáticamente un SOUL.md predeterminado en ~/.hermes/SOUL.md (o en $HERMES_HOME/SOUL.md para los profile personalizados). Los archivos existentes del usuario nunca se sobrescriben. Hermes solo carga SOUL.md desde HERMES_HOME; no lo busca en el directorio de trabajo actual. Así, la personalidad se mantiene predecible entre distintos proyectos.13

Qué debe incluir SOUL.md

Úsalo para definir pautas duraderas sobre la voz y la personalidad:13 - tono - estilo de comunicación - grado de franqueza - estilo de interacción predeterminado - qué evitar en cuanto al estilo - cómo debe manejar Hermes la incertidumbre, los desacuerdos y la ambigüedad

Úsalo menos para:13 - instrucciones específicas de un solo proyecto - rutas de archivos - convenciones del repositorio - detalles temporales del flujo de trabajo

Todo eso corresponde a AGENTS.md, no a SOUL.md.

SOUL.md frente a AGENTS.md

Esta es la distinción más importante en la administración de la identidad de Hermes:13

SOUL.md — identidad, tono, estilo, valores predeterminados de comunicación y comportamiento relacionado con la personalidad.

AGENTS.md — arquitectura del proyecto, convenciones de código, preferencias de herramientas, flujos de trabajo específicos del repositorio, comandos, puertos, rutas y notas de despliegue.

Una regla útil: si debe acompañarte a todas partes, corresponde a SOUL.md. Si pertenece a un proyecto, corresponde a AGENTS.md.13

Personalidades integradas

Hermes incluye personalidades integradas que puedes activar con /personality:1333

Nombre Descripción
helpful Asistente amigable y de propósito general
concise Respuestas breves y directas
technical Experto técnico detallista y preciso
creative Pensamiento innovador y poco convencional
teacher Educador paciente con ejemplos claros
kawaii Expresiones tiernas, destellos y entusiasmo
catgirl Neko-chan con expresiones felinas
pirate Capitán Hermes, un bucanero experto en tecnología
shakespeare Prosa propia de un bardo con un toque dramático
surfer Actitud relajada de surfista
noir Narración de detective curtido
uwu Máxima ternura con lenguaje uwu
philosopher Reflexión profunda ante cada consulta
hype ENERGÍA MÁXIMA

Personalidades personalizadas en config.yaml:13

agent:
  personalities:
    codereviewer: >
      You are a meticulous code reviewer. Identify bugs, security issues,
      performance concerns, and unclear design choices. Be precise and constructive.

Después, actívala con /personality codereviewer.

SOUL.md frente a /personality

SOUL.md define la voz de referencia. /personality es una capa adicional para la sesión.13 Mantén un SOUL.md predeterminado y pragmático; luego usa /personality teacher para una conversación educativa o /personality creative para una lluvia de ideas.


Nous Tool Gateway (v0.10.0+)

A partir de Hermes Agent v0.10.0 (2026-04-16), los suscriptores de pago de Nous Portal obtienen acceso administrado a un conjunto seleccionado de herramientas mediante sus credenciales actuales de Portal, sin tener que gestionar claves de API adicionales.61 El CLI de Hermes sigue teniendo licencia MIT y siendo completamente de código abierto. Lo que cambió es que la autenticación de Portal ahora desbloquea más funciones además de la inferencia de modelos.

La forma más rápida de empezar es hermes setup --portal, que el README presenta como «Un comando desde una instalación nueva»: inicia sesión mediante OAuth, configura Nous como tu proveedor y activa Tool Gateway. A partir de entonces, hermes portal administra la conexión. hermes portal login (la opción predeterminada cuando no se especifica ningún subcomando) ejecuta la misma incorporación de una sola vez; hermes portal info muestra el «resumen de autenticación de Portal y enrutamiento de Tool Gateway»; hermes portal open abre la página de suscripción en tu navegador predeterminado; hermes portal tools enumera las herramientas del gateway e indica cuáles se enrutan mediante Nous. hermes portal status se conserva como alias oculto de info por compatibilidad con versiones anteriores, y la referencia de CLI en la documentación de esa etiqueta todavía denomina al subcomando status, por lo que ambos funcionan.28

Qué incluye el gateway

Herramienta Proveedor Caso de uso
Búsqueda web Firecrawl Recuperación de información para agentes que necesitan datos recientes
Generación de imágenes FAL / FLUX 2 Pro Generar imágenes directamente sin configurar una clave de FAL
Conversión de texto a voz OpenAI TTS Salida hablada en gateways de mensajería
Automatización del navegador Browser Use Navegación y extracción de datos sin interfaz gráfica

Cómo funciona

El gateway se habilita por herramienta mediante un nuevo campo de configuración use_gateway. Si tienes credenciales de Portal en hermes auth y habilitas el gateway para una herramienta, las llamadas de esa herramienta se enrutan a través de Portal. De lo contrario, se utiliza tu clave directa de API (si está disponible).

# config.yaml — per-tool gateway opt-in
tools:
  web_search:
    provider: firecrawl
    use_gateway: true          # route via Nous Portal subscription
  image_generation:
    provider: fal
    use_gateway: true

Precedencia en tiempo de ejecución: cuando el gateway está disponible y una herramienta tiene use_gateway: true, Hermes da preferencia al gateway aunque también tengas configurada una clave directa de API. Esto es importante para la facturación: las llamadas al gateway se descuentan de tu suscripción de Portal, no del saldo de tu clave directa de API.

Cómo habilitar el gateway

hermes model                      # select Nous Portal (OAuth flow)
hermes tools                      # per-platform tool picker integrates gateway tools
hermes status                     # confirms gateway/subscription detection

La suscripción se detecta automáticamente a partir de las credenciales de OAuth de Portal que ya tienes en hermes auth; no hay ningún paso de inicio de sesión adicional. Desde v0.19.0 también puedes administrar la suscripción desde una sesión: /subscription muestra tu plan y la asignación restante, indica exactamente cuánto cuesta una mejora o cuándo entra en vigor una reducción del plan, y aplica el cambio con avisos de cambios programados y la opción de deshacerlo; /topup agrega crédito. La aplicación de escritorio incluye una pestaña equivalente de configuración de facturación.56

Precios y acceso

Los precios y nombres de los niveles se publican en la página de precios de Nous Portal (https://portal.nousresearch.com/pricing). Esta guía no enumera los niveles porque son responsabilidad del producto Portal, no del CLI de Hermes, y cambian con independencia de las versiones de Hermes. Regístrate en https://portal.nousresearch.com/ y consulta la página de precios para conocer los niveles actuales.

Nivel gratuito de Nous y primer inicio guiado (v0.21.2+)

Desde v0.21.2, una instalación nueva no necesita un plan de pago ni una clave de API para ofrecer un agente funcional: incluye inferencia y conectores gratuitos desde el primer momento, con un solo comando para iniciar sesión, y /login inicia el acceso desde un chat. Las herramientas de los conectores (Gmail, Linear, Notion y las demás) pueden buscarse mediante tool_search como cualquier otra herramienta. La aplicación de escritorio incorpora un primer inicio guiado controlado por HERMES_GUEST_ONBOARDING=1; solo el valor literal 1 lo habilita – la propia prueba de la aplicación de escritorio confirma que 'true', '0' y un valor vacío lo mantienen desactivado, y la decisión tomada al iniciar queda registrada en el entorno del backend generado para que nunca se filtre un valor heredado.48

Desde el periodo de lanzamiento de v0.21.4, conectar esos conectores es una única operación a cargo del backend, en lugar de lógica dispersa entre distintas interfaces: una llamada a la herramienta manage_connections controla en el backend una máquina de estados de conexión basada únicamente en datos (con un límite fijo de 300 segundos por operación – deliberadamente, no es una clave de configuración), y Desktop, TUI y CLI la presentan como la misma tarjeta de configuración. La tarjeta muestra un campo por cada credencial faltante (nombre, indicación y si es obligatoria) y mantiene deshabilitada su acción hasta que todos los campos obligatorios contengan texto; el backend aplica la misma separación exclusiva de secretos en todas las interfaces.51

Aviso de obsolescencia

  • La variable de entorno HERMES_ENABLE_NOUS_MANAGED_TOOLS fue eliminada en v0.10.0. Ahora las herramientas administradas se habilitan mediante el campo de configuración use_gateway de cada herramienta y dependen del estado de tu suscripción de Portal.61

Contexto: lo que esta versión no es

El CLI de Hermes Agent no requiere una suscripción. El proyecto sigue teniendo licencia MIT, y todas las funciones principales (CLI, skills, memoria, gateway de mensajería, cron, MCP, panel local y BYOK para todos los proveedores) funcionan de principio a fin sin pagarle a nadie. v0.10.0 agrega una opción práctica para quienes ya pagan por Nous Portal; no elimina nada de la opción gratuita.


Gateway de mensajería

Hermes puede ejecutarse como un proceso gateway de larga duración que se conecta a 28 plataformas de mensajería desde un único proceso gateway: Telegram, Discord, Slack, WhatsApp, Signal, SMS, correo electrónico, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, Weixin (WeChat), BlueBubbles (iMessage), QQBot, Microsoft Teams, Tencent Yuanbao, Google Chat, LINE, SimpleX Chat, Photon (iMessage), WhatsApp Cloud API, WeCom Callback, Raft, IRC, ntfy, Buzz y un adaptador Webhook genérico.360171819 La cifra de 28 proviene de la tabla de comparación de plataformas de la documentación en la etiqueta v2026.8.31; por debajo, gateway/config.py define 24 miembros integrados del enum Platform (incluidas entradas que no son de chat, como local, api_server, webhook, msgraph_webhook y relay) y resuelve cualquier otro nombre bajo demanda hacia uno de los 22 directorios de adaptadores incluidos en plugins/platforms/, por lo que contar solo el enum o los directorios no dará la misma cifra que la documentación.25 v0.9.0 incorporó iMessage mediante BlueBubbles (registro automático de webhooks, asistente de configuración y resistencia ante fallos) y compatibilidad nativa con WeChat mediante iLink Bot API, con el modo de devolución de llamadas de WeCom para aplicaciones empresariales.16 v0.11.0 incorporó QQBot.60 v0.12.0 incorporó Microsoft Teams y Tencent Yuanbao.17 v0.13.0 incorporó Google Chat como la plataforma número 20, sobre la misma arquitectura de adaptadores conectables; IRC y Microsoft Teams también migraron al nuevo patrón de adaptadores con hooks genéricos de plugins env_enablement_fn / cron_deliver_env_var.18 v0.14.0 incorpora LINE y SimpleX Chat y completa la integración de Microsoft Teams de extremo a extremo con autenticación de Graph, un listener de webhooks, el entorno de ejecución del pipeline y la entrega saliente.19 v0.17.0 (19 de junio de 2026) incorpora iMessage sin relay mediante Photon Spectrum (OAuth por código de dispositivo con hermes photon login; no requiere un relay de Mac/BlueBubbles), el adaptador oficial de WhatsApp Business Cloud API (que reemplaza el requisito de usar un proceso puente), grupos de SimpleX y archivos adjuntos nativos, y Raft como plugin de plataforma incluido.21 Hay otras dos plataformas en la tabla de la documentación que no recibieron atención en las notas de la versión: ntfy es un canal ligero de notificaciones push mediante publicación-suscripción HTTP (suscríbete a un tema desde la aplicación móvil de ntfy, envía un mensaje al tema para hablar con el agente y recibe la respuesta en tu teléfono; funciona con el servidor público ntfy.sh o con una instancia autohospedada, sin requerir SDK ni un daemon), mientras que Buzz conecta Hermes con una comunidad de Buzz, la plataforma de código abierto de Block para la colaboración entre personas y agentes mediante el protocolo Nostr; para los mensajes salientes, ejecuta buzz CLI y, para los entrantes, utiliza una suscripción nativa WebSocket de Nostr. Ambas se configuran mediante hermes gateway setup.25

Configuración

hermes gateway setup                # Interactive platform configuration
hermes gateway install              # Install as user service (systemd/launchd)
hermes gateway start                # Start the installed service
hermes gateway stop
hermes gateway restart
hermes gateway status
hermes gateway run                  # Run in foreground (debugging)

La configuración interactiva te guía para conectar cada plataforma: tokens de API, identificadores de bots, asignaciones de canales y listas de permitidos.6

Cómo fluyen los mensajes

Según la documentación de arquitectura del proyecto original:3

Platform event → Adapter.on_message() → MessageEvent
  → GatewayRunner._handle_message()
    → authorize user
    → resolve session key
    → create AIAgent with session history
    → AIAgent.run_conversation()
    → deliver response back through adapter

Todas las plataformas de mensajería pasan por el mismo ciclo de conversación de AIAgent que CLI. Por eso los comandos con barra funcionan de manera idéntica en ambos lugares y una tarea cron programada en Telegram puede entregar su resultado en Discord: la diferencia entre plataformas solo existe en el extremo.3

v0.19.0 incorpora el enrutamiento de mensajes basado en perfiles y la entrega duradera. Un solo gateway multiplexado que comparte un token de bot puede dirigir servidores, canales o hilos específicos a diferentes profiles, cada uno con configuración, skills, memoria y secretos completamente aislados, además de permitir el ajuste mediante GATEWAY_MULTIPLEX_PROFILES; una serie de mejoras de robustez también evita que un profile mal configurado pueda derribar todo el gateway. Internamente, el índice de enrutamiento se trasladó a state.db (sessions.json ahora es un espejo heredado opcional), y las respuestas finales se registran en un libro mayor duradero de obligaciones de entrega en torno al envío de la plataforma: si una respuesta terminada coincide con un fallo del gateway, se vuelve a entregar en el siguiente arranque en lugar de perderse silenciosamente.56 El aislamiento entre los profiles enrutados se reforzó en v0.21.2, que corrigió un conjunto de filtraciones entre profiles precisamente en esta configuración multiplexada: listas de permitidos heredadas, credenciales enviadas al host del profile predeterminado, secretos del almacén del profile predeterminado que llegaban a servidores stdio MCP, archivos adjuntos MEDIA: entre profiles y el token bearer de Nous de un profile hermano que persistía en memorias por proceso (#107609-#107630).48

v0.21.1 hace que los límites de las conversaciones solo puedan establecerse de manera explícita. El documento sobre el ciclo de vida de las sesiones en la etiqueta v2026.9.7 establece el contrato en cuatro frases: «La inactividad y el tiempo de reloj nunca rotan una conversación. /new y /reset crean un límite explícito; la compresión de contexto continúa gestionando los historiales largos. La configuración heredada de temporizadores se ignora. El tipo de datos existente SessionResetPolicy es información inerte de compatibilidad, no una política de tiempo de ejecución». La suspensión explícita sigue creando un límite en el siguiente turno entrante, la recuperación respeta los límites finalizados en lugar de reabrirlos y el desalojo exclusivo de recursos permite reanudar las conversaciones. Si una sesión de tu gateway parece «no caducar nunca», ese es ahora el comportamiento previsto; rótala tú mismo con /new.43

Desde el periodo de v0.21.4, una segunda ejecución de hermes gateway run se conecta o se niega a continuar en lugar de vincularse por duplicado. La regla permite un hermes serve y un hermes gateway run por host y usuario del sistema operativo; cada uno multiplexa todos los profiles. Si inicias un gateway para un profile que el multiplexor en ejecución ya atiende, este simplemente se conecta y finaliza con el código 0; si todavía no atiende ese profile, Hermes le pide que vuelva a examinar profiles/ y se conecta cuando lo haga; si no puede hacer que atienda el profile, el comando se niega a continuar en lugar de iniciar silenciosamente un segundo gateway. --replace ahora actúa sobre ese proceso del host, sin importar qué profile lo haya iniciado, y --force omite por completo la pregunta cuando el propietario está bloqueado. Los gateways independientes siguen coexistiendo: si el gateway en ejecución es el independiente (no multiplexado) de otro profile, tu profile inicia el suyo a su lado como antes, hasta que se fuerce esa migración (#109417). Si dos gateways se inician al mismo tiempo, el que pierde el bloqueo del host termina con el código 75, que todos los supervisores generados por Hermes vuelven a intentar; para entonces, el registro del ganador ya existe, por lo que el reintento se conecta o se niega a continuar según las reglas anteriores. Los bloqueos y el registro del punto de encuentro se almacenan en $HERMES_GATEWAY_LOCK_DIR o, en su defecto, en $XDG_STATE_HOME/hermes/gateway-locks (de manera predeterminada, ~/.local/state/hermes/gateway-locks) y se limitan al usuario del sistema operativo; un registro cuyo PID ya no existe o fue reutilizado por otro proceso se considera obsoleto y se ignora, por lo que un gateway que falla no bloquea el siguiente inicio. La aplicación de escritorio sigue la misma regla y se conecta al backend del host en ejecución en lugar de iniciar otro.51

Desde v0.21.5, la multiplexación ya no es opcional. gateway.multiplex_profiles tiene un único valor válido, true: si la clave no está definida, se resuelve como activada y se escribe en el config.yaml del profile predeterminado; un valor false explícito se reescribe como true en el mismo lugar, acompañado de un aviso enmarcado que aparece una sola vez al iniciar ese gateway y de nuevo en el resumen de la siguiente ejecución de hermes update. Dos controles reemplazan la opción anterior de desactivarla. Para desconectar un solo profile sin detener los bots de todos, ejecuta hermes -p <name> gateway stop: el host lo estaciona mediante un marcador profiles/<name>/gateway.parked, mientras que hermes -p <name> gateway start lo reactiva; los botones Detener/Iniciar del dashboard y de la aplicación de escritorio hacen lo mismo. Un profile con nombre que aún necesite su propio gateway debe establecer gateway.standalone: true en su propio config.yaml; el host nunca lo atiende, y sus comandos stop/start actúan sobre su propio proceso. La documentación denomina esta clave «una solución temporal de compatibilidad», no una topología admitida, y se ignora con una advertencia en el profile predeterminado. Una división entre usuarios del sistema operativo, o un HERMES_HOME fuera de profiles/ en el directorio principal predeterminado, sigue requiriendo --force.53

Autorización y vinculación de usuarios

hermes pairing list                    # Show pending and approved users
hermes pairing approve <platform> <code>
hermes pairing revoke <platform> <user-id>
hermes pairing clear-pending

Los códigos de vinculación evitan que desconocidos hablen con tu gateway. El usuario envía un código de vinculación desde su plataforma de mensajería; tú lo apruebas con hermes pairing approve y, a partir de entonces, queda autorizado.6

unauthorized_dm_behavior determina qué recibe el mensaje directo de un desconocido antes de la vinculación: pair responde con un código de vinculación, ignore descarta el mensaje silenciosamente y decline, el valor incorporado durante el periodo de v0.21.4, envía un único rechazo cortés y luego guarda silencio ante ese remitente durante 24 horas (#88028). El rechazo se deduplica por plataforma y remitente, incluso entre alias, y su texto proviene de unauthorized_dm_decline_message (una clave global; si está vacía, se usa la respuesta integrada: «¡Hola! Soy un asistente personal y solo puedo conversar con mi propietario, así que no puedo ayudarte directamente. ¡Lo siento!»). Establece el comportamiento de forma global o por plataforma, que es donde lo escribe el asistente de configuración:

# ~/.hermes/config.yaml
unauthorized_dm_behavior: decline      # global; gateway.unauthorized_dm_behavior also works
unauthorized_dm_decline_message: ""    # empty = built-in reply
platforms:
  telegram:
    unauthorized_dm_behavior: pair     # per-platform value always wins

Cuando no se configura nada, el valor predeterminado efectivo depende de tus listas de permitidos. Si no hay ninguna configurada, es pair; en cuanto se define cualquier lista de permitidos (GATEWAY_ALLOWED_USERS o una variable de usuarios permitidos, usuarios de grupos permitidos o chats grupales permitidos de una plataforma), pasa a ser ignore, porque la lista indica que el gateway se restringió de forma deliberada, y enviar códigos a contactos desconocidos genera ruido y puede filtrar información (#9337). Un valor global ignore o decline prevalece sobre esa regla, pero un valor global pair no puede hacerlo, ya que se interpreta igual que el valor predeterminado; para conservar la vinculación junto con una lista de permitidos, establece pair por plataforma. (La política dm_policy propia del adaptador de una plataforma, cuando exista, se consulta antes de aplicar la regla de la lista de permitidos). El correo electrónico funciona como una bandeja de entrada y utiliza ignore de manera predeterminada, salvo que su propia clave por plataforma habilite otra opción; un valor global no se aplica en este caso. hermes gateway setup ofrece el rechazo como una de las opciones cuando configuras una plataforma sin una lista de permitidos.51


Tareas programadas (Cron)

Hermes cuenta con un sistema cron de primera clase donde los trabajos son tareas del agente, no comandos de shell. Cada trabajo programado se ejecuta mediante un AIAgent nuevo con el prompt configurado y las skills adjuntas opcionales, y entrega los resultados en cualquier plataforma:36

hermes cron list
hermes cron create --prompt "Check HN for AI news and summarize" --schedule "0 9 * * *" --deliver telegram
hermes cron edit <id>
hermes cron pause <id>
hermes cron resume <id>
hermes cron run <id>         # Trigger now on the next tick
hermes cron remove <id>
hermes cron status           # Check if scheduler is running
hermes cron tick             # Run due jobs once and exit

También puedes crear uno de forma conversacional dentro de un chat de mensajería:

Every morning at 9am, check Hacker News for AI news and send me a summary on Telegram.

El agente configurará el trabajo cron mediante sus herramientas. Los trabajos se guardan en JSON y persisten después de los reinicios.3

v0.21.0 incorporó memoria y criterio a los trabajos programados. Incluye cuatro mecanismos, todos verificados en la etiqueta v2026.8.31:3537

  • Continuidad. continuity=true inyecta en cada ejecución la salida más reciente del propio trabajo, de modo que un explorador o monitor «despierta viendo lo que informó la última vez y puede eliminar duplicados y continuar desde donde se quedó». La instrucción inyectada es «evitar repetir lo que ya se informó», la primera ejecución no cambia y, a nivel interno, la bandera se almacena como la entrada reservada self en context_from. Actívala o desactívala con hermes cron create ... --continuity y hermes cron edit <job_id> --continuity / --no-continuity.37
  • Blocs de notas persistentes. Cada trabajo obtiene un pequeño espacio temporal de tipo KV para cursores, marcas de progreso y listas de seguimiento (16 KB por valor y 64 KB por trabajo; se inyecta en el prompt en cada ejecución, por eso los límites son deliberados), en el que se escribe mediante hermes cron notepad <job_id> set <key> <value>, comando que el agente en ejecución invoca a través de su herramienta de terminal.37
  • Modo monitor. Un trabajo puede adjuntar una fuente económica monitor_script/monitor_url que se ejecuta primero en cada ciclo: si la salida no cambia (se compara como bytes exactos), la ejecución del agente se omite por completo —sin llamada a LLM, sin entrega y con una ejecución silenciosa no_change—, mientras que un cambio inyecta un bloque de diferencias y ejecuta el agente normalmente. Haz que los scripts de monitoreo emitan una salida estable; de lo contrario, cada ciclo parecerá contener un cambio.37
  • Nivel de razonamiento por trabajo y entrega mediante Bot Chat. --reasoning-effort fija el nivel de razonamiento de un trabajo (de none a ultra) y anula la configuración global y por modelo para sus ejecuciones; por su parte, deliver=bot-chat envía la salida a la sesión canónica de Bot Chat de un profile como un mensaje entrante real, donde el bot «actúa sobre todo lo que requiera una acción y responde en su chat», en lugar de que una persona se limite a leer un canal.37

Integración con MCP

Hermes admite Model Context Protocol tanto como cliente como servidor:6

Como cliente — conecta Hermes a servidores MCP externos para ampliar su conjunto de herramientas:

hermes mcp add <name> --url https://example.com/mcp
hermes mcp add <name> --command npx --args "-y,@modelcontextprotocol/server-github"
hermes mcp list
hermes mcp test <name>
hermes mcp remove <name>
hermes mcp configure <name>   # Toggle individual tool selection
hermes mcp login <name>       # Force re-auth for an OAuth server (--flow browser|device)
hermes mcp reauth [--all]     # Re-authenticate one OAuth server, or every one

O configúralo manualmente en config.yaml:14

mcp_servers:
  github:
    command: npx
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_PERSONAL_ACCESS_TOKEN: "ghp_xxx"

Desde v0.19.0, las herramientas de MCP se presentan al modelo según la convención de nombres mcp__server__tool: cada nombre de herramienta incluye el nombre de su servidor, por lo que dos servidores que ofrezcan la misma herramienta ya no generan conflictos. Además, las notificaciones de registro del servidor MCP aparecen en agent.log.56

v0.21.1 añade una modalidad con código de dispositivo para OAuth de MCP: hermes mcp login <name> acepta --flow {browser,device}; browser es el flujo PKCE existente, mientras que device es un inicio de sesión mediante código de dispositivo conforme a RFC 8628 para máquinas sin interfaz gráfica o remotas. Esta bandera anula la configuración oauth.flow del servidor. La misma versión exige que se respete la propiedad del profile durante todas las sesiones de OAuth, ignora las cachés de metadatos de OAuth con formato incorrecto en lugar de bloquear un servidor y retransmite OAuth de MCP del escritorio mediante callbacks locales del cliente. Además, -t/--toolsets ahora también filtra cuáles de los servidores MCP configurados se inician, por lo que una invocación de alcance limitado evita el arranque en frío de servidores que no necesita.44

v0.21.0 convierte la interfaz de MCP de la aplicación de escritorio en un centro de control: los servidores y el catálogo se integran en una sola página con importación mediante «pegar cualquier cosa» al arrastrar contenido, comprobaciones de estado en segundo plano que avisan sobre autenticaciones próximas a vencer antes de que falle una llamada a una herramienta, una vista superpuesta de costos y uso de toda la flota que muestra estimaciones de tokens del esquema y el uso de los últimos 30 días por servidor, y enlaces profundos hermes:// que instalan un servidor MCP con confirmación explícita.35

La versión v0.21.4 añade mcp.discovery_concurrency (valor predeterminado: 4; 0 = ilimitado, #117373), un límite para la cantidad de servidores MCP configurados a los que puede conectarse simultáneamente el proceso de detección. Todos los servidores siguen conectándose —el límite solo evita que lo hagan todos a la vez— y, si se proporciona un valor negativo o que no sea entero, se registra una advertencia y se utiliza el valor predeterminado.51

Como servidor — permite que otros agentes accedan a las conversaciones de Hermes:

hermes mcp serve
hermes mcp serve -v    # Verbose

Compresión del contexto

Hermes comprime automáticamente las conversaciones largas para mantenerlas dentro de la ventana de contexto de tu modelo. El resumidor de compresión realiza una llamada independiente a LLM, por lo que puedes dirigirla a cualquier proveedor o endpoint.4 Desde v0.20.6, la política de conservación del tramo final utiliza lean de forma predeterminada (compression.tail_mode: lean) y, en la etiqueta indicada, las opciones de modelo, proveedor y endpoint del resumidor se encuentran en auxiliary.compression.*, en lugar de las antiguas compression.summary_*. Las claves heredadas se migran automáticamente durante la primera carga (versión 17 de la configuración).3031

compression:
  enabled: true
  threshold: 0.50          # Compress at this % of context limit
  threshold_tokens: null   # Optional absolute token cap -- trigger fires at the lower of ratio vs cap
  target_ratio: 0.20       # Fraction of threshold to preserve as recent tail (legacy tail mode)
  tail_mode: lean          # Tail retention: "lean" (default) or "legacy"
  protect_last_n: 20       # Min recent messages to keep uncompressed
  protect_first_n: 3       # Non-system head messages pinned across compactions

auxiliary:
  compression:
    model: ""              # Empty = main chat model; e.g. "google/gemini-3-flash-preview"
    provider: "auto"       # "auto", "openrouter", "nous", "codex", "main", etc.
    base_url: null         # Custom OpenAI-compatible endpoint (overrides provider)

Qué determina tail_mode. legacy conserva literalmente un tramo final del tamaño especificado por target_ratio; en configuraciones con ventanas grandes o umbrales elevados, esto acapara entre 100.000 y 240.000 tokens por compactación. lean conserva literalmente un tramo final limitado al 2,5 % de la ventana de contexto (con un mínimo de 10.000 y un máximo de 25.000) y, en su lugar, preserva la continuidad mediante el resumen: un registro detallado de la sesión que conserva los identificadores de la región compactada (una llamada al resumidor auxiliar por intento), un índice de referencias extraído mecánicamente (números de PR, SHA, rutas y cadenas de error; mediante expresiones regulares, sin parafrasear), todos los mensajes reales del usuario citados textualmente y un puntero de recuperación session_search para que el agente pueda volver a acceder a cualquier contenido eliminado por el resumen. Resultado medido en la documentación con sesiones reales de 500.000 tokens: se conservaron unos 49.000 tokens en lugar de unos 162.000. Los resultados antiguos de herramientas dentro del tramo final de lean se reducen a indicadores de una línea que incluyen un puntero de recuperación, y los valores de tail_mode desconocidos recurren a lean.31

Opciones de proveedor:431

auxiliary.compression.provider auxiliary.compression.base_url Resultado
auto (predeterminado) sin configurar Detecta automáticamente el mejor proveedor disponible
nous / openrouter / etc. sin configurar Fuerza ese proveedor y utiliza su autenticación
cualquiera configurado Utiliza directamente el endpoint personalizado (se ignora el proveedor)

El modelo de resumen debe admitir una longitud de contexto al menos tan grande como la de tu modelo principal, ya que recibe toda la sección intermedia de la conversación en una sola llamada. Si su ventana es menor, la llamada falla y los turnos intermedios se descartan sin generar un resumen.431

Advertencias de presión sobre el presupuesto

Cuando el agente trabaja en una tarea compleja con muchas llamadas a herramientas, puede consumir su presupuesto de iteraciones (valor predeterminado: 500 turnos desde v0.20.0, frente a los 90 anteriores) sin darse cuenta. La presión sobre el presupuesto advierte automáticamente al modelo:4

Umbral Nivel Lo que ve el modelo
70 % Precaución [BUDGET: 350/500. 150 iterations left. Start consolidating.]
90 % Advertencia [BUDGET WARNING: 450/500. Only 50 left. Respond NOW.]

Tiempos de espera del streaming

La conexión de streaming de LLM tiene dos niveles de tiempo de espera que se ajustan automáticamente para los proveedores locales (localhost, direcciones IP de LAN):4

Tiempo de espera Valor predeterminado Proveedores locales Variable de entorno
Tiempo de espera de lectura del socket 120 s Aumenta automáticamente a 1800 s HERMES_STREAM_READ_TIMEOUT
Detección de streaming inactivo 180 s Se desactiva automáticamente HERMES_STREAM_STALE_TIMEOUT
Llamada a API (sin streaming) 1800 s Sin cambios HERMES_API_TIMEOUT

El tiempo de espera de lectura del socket aumenta a 30 minutos para los endpoints locales porque los LLM locales pueden tardar varios minutos en realizar el prellenado de contextos grandes antes de producir el primer token.4


Panel web local (v0.9.0+)

Un panel basado en el navegador para administrar Hermes Agent de forma local. Configura los ajustes, monitorea las sesiones, explora las skills y administra tu gateway sin tocar archivos de configuración ni la terminal.16 Inícialo con hermes dashboard. Esta es la vía de incorporación más sencilla para los usuarios nuevos que prefieren una GUI.

Monitoreo de procesos en segundo plano (v0.9.0+)

watch_patterns te permite establecer patrones para monitorear la salida de procesos en segundo plano y recibir notificaciones en tiempo real cuando haya coincidencias.16 Puedes monitorear errores, esperar eventos específicos (“escuchando en el puerto”) u observar registros de compilación, todo sin realizar consultas periódicas. En combinación con notify_on_complete, incorporado en v0.8.0 (que avisa cuando finaliza una tarea en segundo plano), Hermes ahora cuenta con una capa completa de observabilidad para procesos en segundo plano.15

Context engine intercambiable (v0.9.0+)

La gestión del contexto ahora es un componente intercambiable mediante hermes plugins. Puedes incorporar context engines personalizados que controlen lo que el agente ve en cada turno, ya sea mediante filtrado, resumen o inyección de contexto específico del dominio.16 Esto desacopla la estrategia de contexto del bucle principal del agente y permite personalizarla por proyecto o dominio.

Copia de seguridad y restauración (v0.9.0+)

hermes backup crea un archivo completo con tu configuración, sesiones, skills y memoria. hermes import restaura el contenido de un archivo de copia de seguridad.16 Úsalo para migrar entre computadoras, crear instantáneas antes de realizar cambios importantes o compartir con tus compañeros de equipo una configuración cuyo buen funcionamiento esté comprobado.

Compatibilidad con Termux y Android (v0.9.0+)

Hermes se ejecuta de forma nativa en Android mediante Termux. Las rutas de instalación adaptadas, las optimizaciones de la TUI para pantallas móviles, la compatibilidad con motores de voz y el comando /image funcionan directamente en el dispositivo.16

Refuerzo de la seguridad (v0.13.0+)

v0.13.0 corrigió 8 problemas de seguridad P0 y modificó un valor predeterminado en beneficio del usuario.18 A continuación, v0.14.0 corrigió otros 12 problemas P0 y 50 P1, entre ellos el refuerzo contra ataques de fuerza bruta a sudo y el uso de sudo mediante stdin, correcciones de mecanismos para eludir la detección de comandos peligrosos, la depuración de errores de herramientas antes de reinyectarlos en el modelo, la autenticación de API en plugins del panel, la cobertura contra SSRF en el centro de skills y el análisis de avisos sobre la cadena de suministro durante la instalación.19

Corrección Qué cambió
Ocultamiento de secretos activado de forma predeterminada Antes era opcional. Los registros y las cargas de hermes debug share ocultan los secretos, salvo que esta protección se desactive explícitamente. v0.12.0 había desactivado el ocultamiento de forma predeterminada tras informes de corrupción de cargas útiles; v0.13.0 lo vuelve a activar como opción de referencia más segura.
Omisión de restricciones en mensajes directos entre servidores de Discord (CVSS 8.1) Las listas de roles permitidos de Discord ahora se limitan a cada servidor, lo que cierra una vía por la cual el rol de un usuario en un servidor autorizaba mensajes directos en todos ellos.
Restricciones predeterminadas de WhatsApp El adaptador de WhatsApp rechaza de forma predeterminada a los desconocidos y nunca responde en el chat contigo mismo.
Ventana TOCTOU de MCP OAuth Se corrigió una condición de carrera al guardar credenciales en los flujos de MCP OAuth.
TOCTOU en auth.json de CLI Se corrigió una ventana TOCTOU análoga en el componente que escribe credenciales para el almacén de autenticación de CLI.
Protección mínima contra SSRF en el navegador El enrutamiento híbrido impone una protección mínima contra SSRF dirigido a metadatos de la nube, bloqueando solicitudes que intenten acceder a 169.254.169.254 y direcciones equivalentes.
Detección de inyección de prompts en cron Los prompts ensamblados (incluido el contenido de skills cargadas) se analizan para detectar inyecciones de prompts antes de ejecutar la tarea cron.
Ocultamiento de datos en hermes debug share Las cargas para compartir información de depuración ocultan el contenido de los registros al momento de subirlos, no solo al escribirlos.

Si mantienes una implementación de Hermes, considera v0.13.0 y v0.14.0 como actualizaciones relevantes para la seguridad, no como simples entregas de funciones. v0.13.0 corrige la omisión de restricciones entre servidores de Discord y dos ventanas TOCTOU; v0.14.0 incorpora otra ronda de refuerzo que abarca el manejo de sudo, la reinyección de errores de herramientas, los APIs de plugins, SSRF en el centro de skills y los avisos sobre dependencias.

v0.21.0 incorpora una cuarta ronda. Las escrituras en archivos protegidos de instrucciones del agente – AGENTS.md, CLAUDE.md, SOUL.md, .cursorrules, skills y almacenes de memoria – ahora siempre requieren aprobación, por lo que un agente afectado por una inyección de prompts no puede reescribir silenciosamente sus propias instrucciones permanentes. La barrera viene activada de forma predeterminada (security.protected_instruction_files: true, con una lista ampliable de nombres base mediante fnmatch en protected_instruction_extra_patterns), y el código fuente identifica el vector exacto que bloquea: “una instrucción inyectada que edita AGENTS.md / CLAUDE.md / SOUL.md”. También señala que los archivos de instrucciones se cargan desde los árboles del directorio de trabajo actual, por lo que “un AGENTS.md ubicado en cualquier lugar desde el que el agente pudiera ejecutarse más adelante es un objetivo activo”.3539 La misma versión corrige filtraciones de secretos en errores de terminal, lecturas de archivos .env, checkpoints y registros de ACP; enseña al sistema de aprobación a reconocer comandos y rutas destructivos de Windows; permite que los permisos concedidos en macOS se conserven tras las actualizaciones mediante una identidad estable de firma TCC (configuración única: hermes desktop --setup-tcc-identity, solo para macOS, requiere openssl/security/codesign); elimina la entrada de Blender MCP del catálogo y su skill tras un incidente de seguridad en el proyecto original; y añade análisis de seguridad de nivel 1 a las instalaciones de plugins.3539


Arquitectura para profesionales

Esta sección está dirigida a quienes desean entender qué ocurre tras bambalinas para poder depurar Hermes, ampliarlo o analizar su rendimiento. Es una síntesis de la documentación de arquitectura del proyecto original.3

Puntos de entrada → AIAgent

Cada punto de entrada de Hermes termina llamando a AIAgent.run_conversation():

┌──────────────────────────────────────────────────────────────────┐
│                        Entry Points                              │
│                                                                  │
│  CLI (cli.py)    Gateway (gateway/run.py)    ACP (acp_adapter/)  │
│  Batch Runner    API Server                  Python Library     │
└──────────┬──────────────┬───────────────────────┬────────────────┘
           │              │                       │
           ▼              ▼                       ▼
┌──────────────────────────────────────────────────────────────────┐
│                     AIAgent (run_agent.py)                       │
│                                                                  │
│  ┌─────────────┐  ┌──────────────┐  ┌──────────────┐             │
│  │ Prompt      │  │ Provider     │  │ Tool         │             │
│  │ Builder     │  │ Resolution   │  │ Dispatch     │             │
│  └──────┬──────┘  └──────┬───────┘  └──────┬───────┘             │
│         │                │                 │                    │
│  ┌──────┴───────┐ ┌──────┴───────┐  ┌──────┴───────┐             │
│  │ Compression  │ │ 3 API Modes  │  │ Tool Registry│             │
│  │ & Caching    │ │ chat_compl   │  │ 47 tools     │             │
│  │              │ │ codex_resp   │  │ 20 toolsets  │             │
│  │              │ │ anthropic    │  │              │             │
│  └──────────────┘ └──────────────┘  └──────────────┘             │
└──────────────────────────────────────────────────────────────────┘

Diagrama adaptado de la documentación de arquitectura del proyecto original.3

«47 herramientas / 20 toolsets» frente a «28 herramientas» en tu banner. El recuento de «47 herramientas» corresponde al registro total de herramientas del repositorio original: todas las herramientas cuyo código fuente se incluye con Hermes, en todos los toolsets. La instancia de CLI que realmente ejecutes mostrará una cifra menor en su banner de inicio (la instalación con la que verifiqué esta guía informa 28 tools / 89 skills). No se trata de un error. Muchos toolsets son opcionales y deben habilitarse explícitamente en config.yaml, dentro de toolsets:; por ejemplo, los adaptadores de plataformas de mensajería, la automatización del navegador y las herramientas de extracción más exigentes. El total del registro representa «lo disponible»; la cifra del banner, «lo habilitado en tu profile actual». Consulta qué toolsets están activos con hermes tools --list y habilita o deshabilita toolsets individuales mediante el bloque toolsets: de ~/.hermes/config.yaml (o con /tools list, /tools enable <name> y /tools disable <name> dentro de una sesión en ejecución; quitar una herramienta reinicia la sesión para que el agente reconstruya su manifiesto de herramientas).

Los tres modos de API

Hermes abstrae las diferencias entre proveedores en tres modos de API, seleccionados automáticamente durante la ejecución:3

Modo de API Utilizado por
chat_completions OpenRouter, z.ai, Kimi, MiniMax, DeepSeek, Alibaba, la mayoría de los endpoints personalizados y cualquier servidor compatible con OpenAI
codex_responses OpenAI Codex (mediante OAuth de ChatGPT)
anthropic_messages API de Anthropic (nativa), OAuth de Anthropic y proxies compatibles con Anthropic

El resolutor runtime_provider.py asigna tuplas (provider, model) a (api_mode, api_key, base_url) para más de 18 proveedores y gestiona los flujos de OAuth, los grupos de credenciales y la resolución de alias.3

Flujo de datos durante una sesión de CLI

User input → HermesCLI.process_input()
  → AIAgent.run_conversation()
    → agent.prompt_builder.build_system_prompt()
    → runtime_provider.resolve_runtime_provider()
    → API call (chat_completions / codex_responses / anthropic_messages)
    → tool_calls? → model_tools.handle_function_call() → loop
    → final response → display → save to SessionDB

Tomado de la página de arquitectura del proyecto original.3

Orden de composición del prompt

La pila del prompt incluye:13

  1. SOUL.md (identidad del agente, o la alternativa integrada si no está disponible)
  2. Orientación de comportamiento adaptada a las herramientas
  3. Memoria y contexto del usuario (MEMORY.md, USER.md)
  4. Orientación sobre skills
  5. Archivos de contexto (AGENTS.md, .cursorrules)
  6. Marca de tiempo
  7. Indicaciones de formato específicas de la plataforma
  8. Capas opcionales sobre el prompt del sistema, como /personality

SOUL.md es la base: todo lo demás se construye sobre él.13

Almacenamiento de sesiones

Almacenamiento de sesiones basado en SQLite con búsqueda de texto completo FTS5. Las sesiones incluyen seguimiento de linaje (relaciones principal/secundaria entre compresiones), aislamiento por plataforma y escrituras atómicas con gestión de contención.3

Si el almacén te causa problemas en una instalación v0.21.x, usa la versión v0.21.2 o una posterior: corrigió los problemas de fragilidad de state.db propios de la época de v0.21.0 (segundos procesos de escritura que cancelaban los bloqueos entre sí, bases de datos en buen estado marcadas como dañadas y una sola fila defectuosa que impedía ejecutar sessions list) y trasladó la coordinación de salas alojadas fuera del almacén raíz a un archivo shared-state.db dedicado, de modo que los gateways de los profiles nunca abran el almacén principal de sesiones con permisos de escritura. Ahora hermes doctor distingue entre daños estructurales y daños del índice FTS; si FTS está dañado, la búsqueda se degrada en lugar de provocar un error durante el turno; y hermes sessions recover --inspect-only (sin conexión, no destructivo y vinculado a un profile) informa si la tabla canónica puede leerse sin crear una base de datos de salida. El subcomando es anterior a este periodo, pero aún no se había documentado aquí. Consulta Novedades de v0.21.2.48 Para un almacén bloqueado en el modo de diario incorrecto de SQLite, durante el periodo de v0.21.4 se incorporó el conversor sin conexión hermes sessions set-journal-mode delete|wal (consulta la fila de hermes sessions en Comandos de nivel superior).51

Sistema de plugins

Hay tres fuentes de descubrimiento: ~/.hermes/plugins/ (usuario), .hermes/plugins/ (proyecto) y los puntos de entrada de pip. Los plugins registran herramientas, hooks y comandos de CLI mediante un API de contexto. Los proveedores de memoria son un tipo especializado de plugin ubicado en plugins/memory/.3 Desde v0.21.2 también existe un catálogo seleccionado de plugins, fijados mediante SHA, que puedes explorar e instalar por nombre, además de hermes plugins pack para crear «conjuntos de plugins declarativos y compartibles»: un único archivo hermes-pack.yaml fija un conjunto de plugins a sus SHA de commit exactos; la instalación del paquete se distribuye en instalaciones fijadas convencionales, mientras que el consentimiento de capacidades se mantiene por plugin.48

Durante el periodo de v0.21.4, ese catálogo pasó de ser una superficie de CLI a un artefacto incluido con el producto. El directorio plugin-catalog/ del repositorio creció de 9 entradas en v2026.9.14 a 228 en v2026.9.21: un YAML revisado por plugin (nombre, repositorio, responsable del mantenimiento, nivel, categoría y capacidades), fijado a un SHA de commit exacto de 40 caracteres, donde la presencia en el directorio constituye la admisión. El catálogo se publica como plugin-catalog.json para CLI (se obtiene en tiempo real y se almacena en caché en ~/.hermes/cache/). Ahora el sitio de documentación genera una página por plugin (/docs/plugins/<name>) y otra por autor (/docs/plugins/by/<slug>) a partir de esos mismos datos. Cada página muestra el README del plugin obtenido del commit fijado, nunca del extremo de una rama, mediante una lista de permitidos aplicada durante la compilación que descarta HTML sin procesar; además, el orden por fecha de incorporación o actualización se determina a partir de las fechas de los responsables de los commits. Los diez plugins de la comunidad mencionados en la versión v0.21.4 aparecen en el catálogo de la etiqueta, con sus identificadores reales: hermes-tailscale, hermes-ssh, shodan, hermes-terminal, hermes-rss (además de un rss-reader independiente), hermes-resetwatch, done-bell, kiwi, cognee y web-octen. En la aplicación de escritorio, el centro de Plugins ahora permite desinstalar un plugin mediante un cuadro de confirmación: los plugins del catálogo se eliminan con plugins.manage remove, mientras que los plugins independientes de escritorio se quitan mediante el cargador de Electron.51

hermes plugins                       # Interactive enable/disable UI
hermes plugins browse                # List every curated plugin catalog entry (v0.21.2+)
hermes plugins search <query>        # Search the curated plugin catalog (v0.21.2+)
hermes plugins install <name|repo>   # Install from the curated catalog, a Git URL, or owner/repo
hermes plugins enable <name>
hermes plugins disable <name>
hermes plugins list
hermes plugins pack install <src>    # Shareable SHA-pinned plugin sets; also: pack export, pack show (v0.21.2+)

El periodo de compatibilidad (v0.21.1) ya venció: los plugins externos debían dejar de usar las rutas de importación anteriores a la descomposición antes del 14 de septiembre de 2026. La descomposición de septiembre de 2026 (PR #102117) reubicó los componentes internos que los plugins solían importar, y una capa temporal COMPAT_MANIFEST.md volvió a exportar 1.148 nombres públicos trasladados desde sus módulos anteriores, con una advertencia única por nombre y proceso (HermesPluginCompatWarning). La eliminación entró en vigor según lo previsto el 14 de septiembre de 2026 mediante una condición de fecha en el código distribuido (COMPAT_REMOVAL_DATE en hermes_cli/plugin_compat.py; no fue necesario revertir código): desde esa fecha, los plugins afectados quedan deshabilitados, no se cargan, y se muestra un aviso rojo en el banner de CLI, hermes doctor y hermes update, además de un cuadro de diálogo único en la aplicación de escritorio y el motivo en hermes plugins list. Autores: hermes plugins compat <path> todavía muestra cada file:line con la ruta anterior -> la ruta nueva y termina con el código 1 mientras quede alguna pendiente (agrega --json para obtener una salida legible por máquinas). Si dependes de un plugin sin mantenimiento, todavía puedes establecer plugins.allow_deprecated_imports: true en config.yaml; debe ser un valor booleano YAML literal, no una cadena entre comillas. Esto aún funciona porque la reversión que elimina las rutas anteriores todavía no se ha incorporado: el manifiesto y las capas de compatibilidad están presentes en v2026.9.14, v2026.9.21, v2026.9.24 y main al 24 de septiembre (durante el periodo de v0.21.4, el módulo de compatibilidad solo se modificó para almacenar en caché los análisis de plugins y normalizar las rutas de Windows; durante el periodo de v0.21.5, hermes_cli/plugin_compat.py no cambió y únicamente se eliminaron las entradas del manifiesto correspondientes al módulo Hindsight eliminado). Esta vía de escape dejará de funcionar en cuanto se incorpore esa reversión, porque las rutas anteriores desaparecerán. Solo se cubrieron los nombres públicos de nivel superior; los nombres privados y los puntos de integración para monkeypatch en pruebas nunca formaron parte de la superficie y no se restauraron.4253

Principios de diseño

De la página de arquitectura del proyecto original:3

Principio Qué significa en la práctica
Estabilidad del prompt El prompt del sistema no cambia a mitad de la conversación. No hay mutaciones que invaliden la caché, salvo las acciones explícitas del usuario (/model)
Ejecución observable Cada llamada a una herramienta es visible para el usuario mediante callbacks. Hay actualizaciones de progreso en CLI (indicador giratorio) y en gateway (mensajes de chat)
Interrumpible Las llamadas de API y la ejecución de herramientas pueden cancelarse mientras están en curso mediante entradas del usuario o señales
Núcleo independiente de la plataforma Una sola clase AIAgent atiende a CLI, gateway, ACP, los lotes y el servidor de API. Las diferencias entre plataformas residen en el punto de entrada
Acoplamiento débil Los subsistemas opcionales (MCP, plugins, proveedores de memoria y entornos de RL) utilizan patrones de registro y condiciones check_fn, no dependencias rígidas
Aislamiento de profiles Cada profile obtiene sus propios HERMES_HOME, configuración, memoria, sesiones y PID de gateway. Varios profiles pueden ejecutarse al mismo tiempo

Migración desde OpenClaw

Hermes Agent es el sucesor de OpenClaw. Si estás migrando desde una instalación existente de OpenClaw:65

hermes claw migrate --dry-run                    # Preview what would be migrated
hermes claw migrate --preset full                # Full migration including API keys
hermes claw migrate --preset user-data --overwrite   # User data only, no secrets
hermes claw migrate --source /custom/path        # Non-default OpenClaw location

hermes claw migrate lee desde ~/.openclaw de forma predeterminada (también detecta automáticamente los directorios heredados ~/.clawdbot y ~/.moldbot) y escribe en ~/.hermes.6

Importado directamente (más de 30 categorías): SOUL.md, MEMORY.md, USER.md, AGENTS.md, skills de 4 directorios de origen, modelo predeterminado, proveedores personalizados, servidores MCP, tokens y listas de usuarios permitidos de plataformas de mensajería (Telegram, Discord, Slack, WhatsApp, Signal, Matrix, Mattermost), valores predeterminados del agente (esfuerzo de razonamiento, compresión, demora humana, zona horaria, sandbox), políticas de restablecimiento de sesiones (ahora inactivas: desde la versión v0.21.1, los temporizadores nunca rotan una conversación43), reglas de aprobación, configuración de TTS, configuración del navegador, configuración de herramientas, tiempo de espera de ejecución, lista de comandos permitidos, configuración del gateway y claves API de 3 fuentes.6

Archivado para revisión manual: tareas cron, plugins, hooks/webhooks, backend de memoria (QMD), configuración del registro de skills, interfaz/identidad, registros, configuración multiagente, vinculaciones de canales, IDENTITY.md, TOOLS.md, HEARTBEAT.md, BOOTSTRAP.md.6

La resolución de claves API consulta tres fuentes en orden de prioridad: valores de configuración → ~/.openclaw/.env → auth-profiles.json.6


Solución de problemas

“No hay ningún proveedor de inferencia configurado. Ejecuta ‘hermes model’ para elegir un proveedor y un modelo”

Este es el primer error que aparece en toda instalación nueva: Hermes todavía no tiene un proveedor resuelto. Significa exactamente lo que indica: ninguna de las tres rutas de autenticación ha proporcionado un proveedor utilizable. Ejecuta:

hermes model

El selector interactivo te guía por todos los proveedores compatibles, incluidos los flujos de código de dispositivo de OAuth (Nous Portal, GitHub Copilot, Anthropic, OpenAI Codex) y los endpoints personalizados para servidores autohospedados. Si esperabas que ya hubiera un proveedor configurado, hermes doctor muestra qué credenciales puede ver realmente Hermes; las causas habituales son una clave API configurada en el lugar equivocado (debe estar en .env o establecerse mediante hermes config set, no en el perfil de tu shell), una credencial OAuth vencida en ~/.hermes/auth.json o un endpoint personalizado de config.yaml que perdió su base_url. Las rutas de autenticación se explican en detalle en Autenticación y proveedores.27

“La clave API no está configurada”

Ejecuta hermes model para configurar tu proveedor de forma interactiva o hermes config set OPENROUTER_API_KEY your_key. El comando hermes doctor te indicará exactamente qué claves faltan.7

“Límite de contexto: 2048 tokens” al iniciar (modelos locales)

Hermes detecta automáticamente la longitud del contexto mediante el endpoint /v1/models de tu servidor, pero muchos servidores locales informan valores predeterminados bajos. Defínela explícitamente en config.yaml:2

model:
  default: your-model
  provider: custom
  base_url: http://localhost:11434/v1
  context_length: 32768

Las llamadas a herramientas aparecen como texto en lugar de ejecutarse

Tu servidor no tiene habilitadas las llamadas a herramientas o el modelo no las admite mediante la implementación del servidor.2

Servidor Solución
llama.cpp Agrega --jinja al comando de inicio
vLLM Agrega --enable-auto-tool-choice --tool-call-parser hermes
SGLang Agrega --tool-call-parser qwen (o el analizador adecuado)
Ollama Las llamadas a herramientas están habilitadas de forma predeterminada; comprueba que tu modelo las admita con ollama show <model>
LM Studio Actualiza a la versión 0.3.6 o posterior y usa un modelo compatible de forma nativa con herramientas

Las respuestas se interrumpen a mitad de una oración

Hay dos causas posibles:2

  1. Límite de salida bajo (max_tokens) en el servidor: SGLang usa de forma predeterminada 128 tokens por respuesta. Configura --default-max-tokens en el servidor o define model.max_tokens en config.yaml.
  2. Agotamiento del contexto: el modelo llenó su ventana de contexto. Aumenta model.context_length o habilita la compresión de contexto en Hermes.

“Conexión rechazada” desde WSL2 hacia un servidor de modelos alojado en Windows

WSL2 utiliza un adaptador de red virtual con su propia subred: localhost dentro de WSL2 se refiere a la máquina virtual Linux, no al host de Windows. Hay dos opciones:2

Red reflejada (Windows 11 22H2 o posterior): edita %USERPROFILE%\.wslconfig:

[wsl2]
networkingMode=mirrored

Después, ejecuta wsl --shutdown y reinicia. Ahora localhost funciona en ambas direcciones.

Alternativa mediante la IP del host (versiones anteriores de Windows): obtén la IP del host de Windows desde WSL2 y úsala en lugar de localhost:

ip route show | grep -i default | awk '{ print $3 }'
# Use that IP as the base_url host

También necesitas que el servidor de modelos se vincule a 0.0.0.0, no a 127.0.0.1: define OLLAMA_HOST=0.0.0.0 para Ollama, agrega --host 0.0.0.0 para llama-server/SGLang o habilita “Serve on Network” en LM Studio.2

El presupuesto de iteraciones ignora agent.max_turns

Si la línea de actividad muestra N/90 (u otro límite obsoleto) mientras config.yaml indica agent.max_turns: 500, la causa probable es una línea HERMES_MAX_ITERATIONS obsoleta en ~/.hermes/.env: antes, el asistente de configuración escribía el presupuesto en ambos lugares y, si el puente de inicio se interrumpe debido a un error previo al analizar la configuración, el valor residual de .env prevalece silenciosamente. Desde la versión v0.21.1, hermes doctor detecta este par conflictivo y hermes doctor --fix elimina la línea de .env, por lo que config.yaml queda como fuente de autoridad.41

¿Dónde está todo?

hermes status y hermes dump son tus aliados en este caso. hermes logs list muestra todos los archivos de registro con sus tamaños. hermes config path imprime la ubicación del archivo de configuración. hermes config env-path imprime la ubicación de .env.6


Preguntas frecuentes

¿Cuál es la diferencia entre Hermes Agent y Claude Code?

Claude Code es el CLI oficial de Anthropic, limitado a los modelos de Anthropic. Hermes Agent es un framework de agentes de código abierto de Nous Research que funciona con cualquier proveedor compatible con OpenAI: Nous Portal, OpenRouter, Anthropic, GitHub Copilot, z.ai, Kimi, MiniMax, DeepSeek, Hugging Face, Google o tu propio endpoint autoalojado.12 Hermes también incluye un gateway de mensajería para Telegram/Discord/Slack/WhatsApp/Signal que Claude Code no tiene.

¿Puedo usar Hermes con una clave de API de Anthropic?

Sí. Hay 3 maneras:2

  1. Configura ANTHROPIC_API_KEY en ~/.hermes/.env y ejecuta hermes chat --provider anthropic --model claude-sonnet-4-6
  2. Ejecuta hermes model y selecciona Anthropic; Hermes usará el almacén de credenciales de Claude Code cuando esté disponible
  3. Configura manualmente un ANTHROPIC_TOKEN (setup-token o token de OAuth) como alternativa

La opción 2 es la recomendada si ya usas Claude Code en la misma computadora, pues permite que las credenciales de Claude que se pueden renovar sigan siendo renovables.

¿Cómo cambio de proveedor sin perder mi conversación?

Usa /model provider:model dentro de una sesión. El historial de conversación, la memoria y los skills se conservan:9

/model zai:glm-5
/model openrouter:anthropic/claude-sonnet-4
/model custom:local:qwen-2.5

Configuré Anthropic, pero la visión, la web y la compresión no funcionan

En las versiones actuales, esto prácticamente ya no puede ocurrir como antes. De manera predeterminada (auxiliary.*.provider: "auto"), todas las tareas auxiliares —visión, clasificación de aprobaciones, compresión y títulos de sesiones— se ejecutan en tu modelo de chat principal, por lo que una configuración que solo usa Anthropic las atiende con el OAuth que ya tiene. El valor predeterminado anterior (Gemini Flash mediante OpenRouter → Nous → detección automática de Codex, con una degradación silenciosa cuando ninguno estaba configurado) desapareció: «Ahora, auto usa el modelo principal para todos, y las configuraciones específicas por tarea en config.yaml siguen teniendo prioridad».34

Si una tarea auxiliar aún falla, busca una configuración específica por tarea que apunte a un proveedor que nunca configuraste (auxiliary.<task>.provider / .model en config.yaml) o claves heredadas obsoletas: desde la etiqueta v2026.8.31, el resumidor de compresión se configura como cualquier otro espacio auxiliar —auxiliary.compression.provider— y las claves heredadas compression.summary_* se migran allí automáticamente (versión 17 de la configuración).31 La extracción web ya no es en absoluto una tarea de LLM («no interviene ningún LLM»), por lo que, en las versiones actuales, un error al resumir contenido web no es un problema del modelo auxiliar.34 Para vincular explícitamente una tarea de nuevo con tu proveedor principal:

auxiliary:
  vision:      { provider: "main" }
  compression: { provider: "main" }

¿Cuál es la diferencia entre SOUL.md y AGENTS.md?

SOUL.md define la identidad de tu agente: tono, estilo y preferencias predeterminadas de comunicación. Se encuentra en ~/.hermes/SOUL.md y te acompaña en todas partes. AGENTS.md es específico de cada proyecto —arquitectura, convenciones, comandos y rutas— y se encuentra en el directorio de tu proyecto.13 Si debe acompañarte en todas partes, corresponde a SOUL.md. Si pertenece a un proyecto, corresponde a AGENTS.md.

¿Cómo ejecuto varias instancias de Hermes en paralelo?

Con profiles. Cada profile obtiene su propio HERMES_HOME, configuración, memoria, sesiones y PID del gateway:6

hermes profile create work --clone
hermes profile use work                 # Sticky default
hermes -p work chat -q "..."            # One-off without switching
hermes profile alias work --name h-work # Wrapper script

¿Hermes admite LLMs locales?

Sí, mediante la ruta de endpoints personalizados. Hermes funciona con cualquier servidor compatible con OpenAI: Ollama, vLLM, SGLang, llama.cpp/llama-server, LM Studio, LocalAI, Jan o uno propio.2 Consulta Endpoints personalizados y autoalojados para conocer la configuración de cada servidor.

¿Por qué el banner de inicio muestra menos herramientas de las que la guía afirma que tiene Hermes?

La guía cita 47 herramientas y 20 toolsets del registro de arquitectura del proyecto original: esa es la cantidad total de herramientas cuyo código fuente incluye Hermes en todos los toolsets. Tu instalación en ejecución muestra una cantidad menor en el banner (la instalación de referencia utilizada para esta guía informa 28 herramientas) porque Hermes solo activa el conjunto predeterminado de toolsets al iniciarse. Muchos toolsets son opcionales: los adaptadores del gateway de mensajería, la automatización del navegador, los sistemas más pesados de extracción web y varias integraciones especializadas deben incluirse explícitamente en toolsets: dentro de ~/.hermes/config.yaml para que se carguen. Total del registro = «lo que está disponible si lo activas». Total del banner = «lo que realmente cargó tu profile actual». Usa hermes tools --list para ver qué toolsets están activos y cuáles están disponibles, pero desactivados. Activa o desactiva toolsets individuales durante la ejecución con /tools enable <name> y /tools disable <name> (desactivarlos reinicia la sesión para que el agente reconstruya su manifiesto de herramientas con la nueva estructura).

¿Cómo gestiona Hermes el modelo de respaldo cuando falla mi proveedor principal?

Configura un bloque fallback_model en config.yaml:2

fallback_model:
  provider: openrouter
  model: anthropic/claude-sonnet-4

Cuando el proveedor principal falla (por límite de solicitudes, error del servidor o fallo de autenticación), Hermes cambia al modelo de respaldo durante la sesión sin perder el historial de conversación. Esto ocurre como máximo una vez por sesión.

¿Puede el agente mejorar sus propios skills con el tiempo?

Sí; esa es la parte «automejorable» de Hermes Agent. El agente puede crear, actualizar y eliminar skills mediante la herramienta skill_manage. Cuando descubre un flujo de trabajo no trivial, guarda el método como un skill para reutilizarlo en el futuro.11 El agente crea skills después de tareas complejas (más de 5 llamadas a herramientas), cuando encuentra errores y descubre el procedimiento que funciona, cuando corriges su enfoque o cuando descubre un flujo de trabajo no trivial.

¿Existe una integración con IDE?

Sí; Hermes puede ejecutarse como servidor ACP (Agent Client Protocol) para VS Code, Zed y JetBrains:6

pip install -e '.[acp]'
hermes acp

Registro de cambios

Fecha Cambio Fuente
2026-09-24 Guía v1.23: el bloque introductorio de v0.14.0, que había permanecido por encima de la versión actual desde la primera versión de la guía, ahora cierra el historial de novedades como la sección más antigua, siguiendo el orden de más reciente a más antiguo que se usa en el resto del historial. No hay cambios de contenido; ahora el resumen comienza directamente con los puntos clave y continúa con la nota sobre las fuentes y Elige tu ruta. Estructura de la guía
2026-09-24 Guía v1.22: Hermes v0.21.5 (etiqueta v2026.9.24, 24 de septiembre) — tercer parche acumulativo; las notas seleccionadas se aplazaron hasta v0.22.0. Se agregó una sección de novedades al principio; el resumen apunta a ella. Cobertura a nivel de etiqueta: Hindsight pasó del árbol principal al catálogo de plugins (algo que no se menciona en las notas de la versión), con su migración automática; se retiró gateway.multiplex_profiles: false y se incorporaron el estacionamiento por profile y gateway.standalone; GPT-6 Sol/Luna y Claude Opus 5.5 se añadieron a los selectores de Nous y OpenRouter. Proveedores de memoria externos ahora enumera siete proveedores incluidos, además de Hindsight desde el catálogo. Messaging Gateway incorpora un párrafo sobre la opción de exclusión retirada. Se volvió a comprobar el recuadro de compatibilidad en la etiqueta: plugin_compat.py no cambió y la vía de escape sigue funcionando. Corrección: la cantidad de plugins de proveedores incluidos es 38, no 39, y la fila de OpenCode Free aparece como eliminada; ambos cambios datan del 18 de septiembre. 5253
2026-09-23 Guía v1.21: revisión de precisión y legibilidad, todavía basada en Hermes v0.21.4 (etiqueta v2026.9.21; no hay una versión más reciente). Novedades ahora se presenta de la versión más reciente a la más antigua, v0.21.3 tiene su propia sección y el resumen comienza con la versión actual. Vinculación: decline es el único valor nuevo; el valor predeterminado efectivo es ignore cuando se configura cualquier lista de permitidos; la estructura de YAML es platforms.<name>.unauthorized_dm_behavior o la clave de nivel superior. stream-json acepta --query-file, que ahora cuenta con una fila en la tabla de opciones. set-journal-mode advierte que se debe detener todo y señala el uso de --force en Windows. El párrafo sobre la instancia única por host ahora comienza con el comportamiento que debe seguir el operador. Se eliminaron las oraciones sobre los procesos de escritura. 5051
2026-09-22 Guía v1.20: Hermes v0.21.4 (etiqueta v2026.9.21, 21 de septiembre) — el segundo parche acumulativo: «5.071 commits sin fusión», «5.169 archivos modificados», «1.812 PR fusionados» y «2.116 incidencias cerradas» desde v0.21.3, bajo una nota breve que aplaza la cobertura seleccionada hasta v0.22.0. Se agregó una sección de novedades debajo del bloque de v0.21.3. Las cinco cifras principales se reprodujeron exactamente en el clon local usando el commit de medición indicado, 4b8a8134 (la etiqueta agrega un commit de publicación: 5.072 sin fusión; el total de la comparación es 5.173 con fusiones, lo que coincide con la comparación de GitHub y API); es el segundo intervalo más grande entre etiquetas, solo por detrás de los 5.139 de v0.21.1 (se volvió a comprobar esa afirmación y sigue siendo cierta). La lista de elementos deliberadamente no documentados de la versión se cubrió ÚNICAMENTE después de verificar el código fuente en la etiqueta; cada elemento se ubicó en su sección correspondiente: instancia única por host (gateway/host_rendezvous.py: un hermes serve y un hermes gateway run por host y por usuario del sistema operativo, con un bloqueo del host y un registro de encuentro que usa (pid, createTime) como prueba de actividad; host_attach.py contempla cinco resultados: ATTACH/RESCAN/REPLACE_HOST/REFUSE/START; la parte de Desktop, host-backend-attach.ts, sigue la secuencia registro -> HTTP -> token -> WS, con un control de creación de procesos a nivel de host; se agregó el párrafo a Messaging Gateway); una operación de conectores controlada por el backend (tools/connectors/operation.py, «datos puros, sin E/S», plazo de 300 s que deliberadamente no es una clave de configuración, tarjeta de configuración manage_connections en Desktop/TUI/CLI según la prueba en la etiqueta; se amplió la subsección del nivel gratuito de Nous); --format stream-json (_parser.py:247-249 + hermes_cli/stream_json.py: system/init -> text/tool_use/tool_result -> un envoltorio result; requiere -q, implica --quiet, rechaza --tui y limita las herramientas a 5.000 caracteres; se agregó la fila a la tabla de opciones de chat); skills.auto_load (config_defaults.py:1435, «fijadas como completamente cargadas en cada sesión nueva (CLI, TUI, gateway, cron, API)», se resuelven una sola vez al crear el prompt, los nombres ausentes generan una advertencia y se omiten, HERMES_IGNORE_RULES lo desactiva; nueva subsección de Skills fijadas); decline del gateway (gateway/config.py:139, un rechazo cortés seguido de 24 h de silencio según DECLINE_DEDUPE_SECONDS #88028, unauthorized_dm_decline_message, configurable por plataforma mediante platforms.<name>.extra, Email usa ignore de forma predeterminada; se amplió la sección Vinculación); mcp.discovery_concurrency (config_defaults.py:526, valor predeterminado 4, 0 = sin límite #117373, los valores no válidos generan una advertencia y vuelven al valor predeterminado, todos los servidores siguen conectándose; se amplió la sección MCP); session_search con after/before y un nuevo intento flexible con OR (esquema de la herramienta, líneas :708-725; límites inclusivos/exclusivos, ISO o 7d/24h/2w; hermes_state_search.py:1151-1163 vuelve a intentarlo con CUALQUIER término en el índice unicode61 cuando no obtiene resultados, conserva la semántica de coincidencia exacta y no se aplica a OR/NOT, términos únicos ni CJK; se amplió Búsqueda de sesiones y se CORRIGIÓ la afirmación desactualizada de esa sección sobre el «resumen con Gemini Flash» para reflejar el diseño de forma única sin LLM de v0.15.0, según 34); hermes sessions set-journal-mode delete\|wal (subcommands/sessions.py:177 + sessions_cmd_journal_mode.py, autoservicio sin conexión para #100896, rechaza titulares externos, verifica los bytes 18/19 del encabezado y doctor remite a este comando; se ampliaron la fila de sesiones y Almacenamiento de sesiones); serie de cambios en Desktop (campo de fuente desktop.font_family que reemplaza --dt-font-sans del tema, con sugerencias que priorizan la accesibilidad; «Update engine» permite actualizar el entorno de ejecución con un clic y muestra una opción para reintentar cuando falla; desinstalación desde el centro de Plugins sujeta a confirmación mediante plugins.manage remove / cargador de Electron); catálogos de video (plugins/video_gen/fal, ltx-2.5 + kling-o3 con las cadenas de capacidades verificadas en la etiqueta; fila del inventario en la referencia de toolsets); expansión del catálogo de plugins (plugin-catalog/ pasó de 9 a 228 entradas durante el intervalo, admisión de YAML fijada por SHA, páginas web por plugin y por autor con archivos README del commit fijado mediante un renderizador basado en una lista de permitidos, ordenamiento por elementos agregados/actualizados a partir de las fechas de los committers; se comprobó que los diez plugins comunitarios de la versión están presentes con sus slugs reales: hermes-tailscale/hermes-ssh/shodan/hermes-terminal/hermes-rss/hermes-resetwatch/done-bell/kiwi/cognee/web-octen; se amplió Sistema de plugins). La categoría de correcciones (aislamiento de profile/multiplex, cron, kanban, Desktop y state.db) se RESERVÓ para la revisión de v0.22.0, conforme al aplazamiento indicado por la propia versión. Se volvió a verificar el estado de compatibilidad: la reversión que elimina rutas TODAVÍA no se ha incorporado; el manifiesto y los shims están presentes tanto en v2026.9.21 COMO en main en a53b42ddea (22 de septiembre de 2026, recuperado el mismo día); los cambios de la ventana en plugin_compat.py solo corresponden a una caché de exploración de plugins y rutas de Windows con formato POSIX (#112576); la protección de booleanos literales se desplazó de :261-268 a :296-303 y sigue usando is True; se actualizó la vigencia en la viñeta de v0.21.1, el bloque de v0.21.3, el recuadro de Sistema de plugins y 42. Nuevos recuentos en v2026.9.21: 39 proveedores estáticos (recuento del AST en models_catalog_static.py:311) y 39 carpetas de plugins de proveedores, ambos sin cambios; la referencia temporal del recuento de proveedores del resumen pasó de v2026.9.14 a v2026.9.21; se retiró la expresión «versión actual» de v0.21.3. 505142
2026-09-15 Guía v1.19: Hermes v0.21.2 (etiqueta v2026.9.11, 11 de septiembre), «The state.db Patch Release», + v0.21.3 (etiqueta v2026.9.14, 14 de septiembre), y las repercusiones de la fecha límite de compatibilidad de plugins. Nueva sección de novedades debajo de la sección de v0.21.1. v0.21.2 («947 commits sin merge», «312 PRs fusionados», «140 colaboradores») comienza con la campaña de confiabilidad de state.db (seis PRs, 44 problemas: la coordinación de salas alojadas se trasladó del almacén raíz a shared-state.db —se verificó gateway/hosted_rooms.py:398-426 en la etiqueta—; el dashboard abre primero en modo de solo lectura; protección de cron mediante el registro de conexiones rastreadas; doctor --fix rechaza checkpoints cuya seguridad no puede demostrarse; los daños en el índice FTS degradan la búsqueda en lugar de cerrar el turno por error; las filas corruptas muestran ? en vez de bloquear sessions list; vinculación fijada al profile; las aperturas de solo lectura dejan de tomar el bloqueo de escritura, de 4-20 s a 0,01 s; se conserva el enfoque operativo de la versión: primero hermes doctor y después hermes sessions recover --inspect-only —parser en hermes_cli/subcommands/sessions.py:185-196; el subcomando es ANTERIOR a este periodo (ya estaba presente en v2026.8.31), por lo que se documenta como recién cubierto, no como nuevo—); refuerzo del aislamiento entre múltiples profiles (#107609-#107630 corrigieron fallas reales en la promesa de «aislamiento total» vigente desde v0.19.0: listas de permisos heredadas, credenciales enviadas al host del profile predeterminado, secretos del almacén enviados a servidores MCP mediante stdio, archivos adjuntos MEDIA: entre profiles y tokens bearer de Nous de profiles hermanos; se añadieron notas con un encuadre transparente en Profiles y en el párrafo sobre multiplexación de Messaging Gateway); el almacén de credenciales que nunca expone contraseñas (inicio de sesión, pago y autocompletado desde 1Password, Bitwarden o el almacén local mediante identificadores con espacio de nombres que solo contienen metadatos, resolviendo la contraseña al momento de completar; la contraseña maestra nunca se pasa como argumento de una herramienta; TOTP a partir de una clave de autenticación guardada; se verificaron agent/vault_backends/ y agent/vault_store.py:74-105 en la etiqueta); el catálogo de plugins (hermes plugins browse/search, install con integración del catálogo y pack install/export/show, fijados mediante SHA; se verificaron los subparsers en la etiqueta; se actualizó el bloque de comandos de Plugin System); el nivel gratuito de Nous + primer inicio guiado (inferencia y conectores gratuitos, /login desde un chat, HERMES_GUEST_ONBOARDING=1, donde SOLO el valor literal 1 habilita la función; se verificó guest-onboarding-flag.test.ts; nueva subsección en Nous Tool Gateway); y correcciones para las avalanchas de procesos iniciados en la aplicación de escritorio. Breve bloque de v0.21.3 («1.036 commits sin merge», «338 PRs fusionados»; se creó la etiqueta para que los agentes de Cloud con actualización automática la reciban): la actualización de tokens con ejecución única elimina la revocación de sesiones provocada por ráfagas de actualización (commit 5dea46d13d, #110061); se eliminaron los identificadores duplicados de escritura de state.db (commit 939a2f64b4, #110934); ambos se verificaron únicamente en el periodo v2026.9.11..v2026.9.14; se cita el aplazamiento anunciado por la propia versión («Las notas completas y seleccionadas de este periodo se publicarán con v0.22.0, que documentará todo desde v0.21.0 en adelante»… «No se omite nada de este periodo») y se enumeran en la fila los elementos deliberadamente no documentados (selectores de esfuerzo de razonamiento, OpenRouter PKCE, HEIF/AVIF, la oleada de FAL, Slack Agent Sessions API, rechazo de WAL entre máquinas virtuales), que se RESERVAN para la revisión de v0.22.0. Las repercusiones de la fecha límite de compatibilidad se reescribieron en pasado en la viñeta de desglose de v0.21.1, el recuadro de Plugin System y 42: la eliminación se activó SEGÚN LO PREVISTO mediante una condición de fecha, no por una reversión de código (hermes_cli/plugin_compat.py:32 en v2026.9.14 establece COMPAT_REMOVAL_DATE; removal_in_effect() en :86-90 devuelve verdadero desde 2026-09-14), y los plugins afectados ahora se deshabilitan con el aviso rojo; sin embargo, la reversión que elimina las antiguas rutas de importación NO se ha incorporado (COMPAT_MANIFEST.md, compat_manifest.json y los shims están presentes tanto en la etiqueta COMO en main en 5d59366010, consultado el 15 de septiembre de 2026 a las 12:55 PT), por lo que plugins.allow_deprecated_imports: true aún permite cargar los plugins afectados; solo acepta el booleano literal (plugin_compat.py:261-268, is True: una cadena entre comillas nunca habilita la excepción). Solo para el changelog, verificado mediante la versión o el código fuente: bots_require_mention de Telegram exige una @mención a los bots, lo que interrumpe los bucles de bot a bot; hermes -z --resume continúa la sesión (-z = --oneshot, hermes_cli/_parser.py:113); las comprobaciones pasivas de actualizaciones consultan GitHub API como máximo una vez al día, en lugar de ejecutar git fetch cada 30 min (banner.py:129-131 en v2026.9.11, :136-139 en v2026.9.14); hermes backup -k/--keep conserva de manera predeterminada los 3 archivos zip más recientes (subcommands/backup.py:24-26) y las copias de seguridad de config.yaml se guardan en un único directorio limitado, backups/config/; las claves de model_thresholds pueden limitarse por proveedor con el formato provider:substr (agent/context_compressor.py:1558-1567); --clone-all ya no copia trabajos cron (la opción pertenece a hermes profile, subcommands/profile.py:24, NO a hermes cron); kanban promote rechaza elementos cuyos padres no estén completados y kanban_request_review rechaza profiles de revisores desconocidos; /model y el modo automático auxiliar nunca facturan a un proveedor que no seleccionaste ni cambian automáticamente a uno sin credenciales; los selectores añaden DeepSeek V4.1 Flash (Nous Portal + OpenRouter), GPT Image 2.5 y Opus 5 + Fable 5.1 al selector nativo de Anthropic; la retención de debug share se redujo a 1 día cuando se usa dpaste como alternativa. Nuevas comprobaciones en v2026.9.14: 39 proveedores estáticos (conteo AST de CANONICAL_PROVIDERS en models_catalog_static.py:314) y 39 directorios de plugins de proveedores, ambos sin cambios; el valor predeterminado de --max-turns es 500, ahora en cli.py:404 (cli.py:400 de 41 sigue siendo correcto para su etiqueta); model_catalog.ttl_minutes es 20 (config_defaults.py:1866); la afirmación de v0.21.1 sobre el periodo más grande (5.139) sigue siendo válida frente a los dos periodos nuevos (conteos locales de 959 y 1.037 commits sin merge); la referencia del conteo de proveedores en el resumen TL;DR pasó de v2026.9.7 a v2026.9.14. 484942
2026-09-08 Guía v1.18: Hermes v0.21.1 (etiqueta v2026.9.7, 7 de septiembre) — el parche acumulativo: el mayor intervalo entre etiquetas hasta la fecha («5.139 confirmaciones sin fusión», «632 PR fusionados»), presentado en una nota de parche deliberadamente breve que pospone las notas seleccionadas hasta v0.22.0. Nueva sección de novedades encima de la sección Pantheon, con seis grupos verificados en las fuentes: la descomposición de septiembre + la fecha límite de compatibilidad de plugins del 2026-09-14 (COMPAT_MANIFEST.md: 1.148 nombres trasladados a carga diferida, HermesPluginCompatWarning una vez por nombre, el verificador hermes plugins compat y la vía de escape plugins.allow_deprecated_imports; se agregó un recuadro sobre el periodo de compatibilidad a Sistema de plugins), límites de conversación del gateway exclusivamente explícitos (SessionResetPolicy ahora está inactivo — se actualizó Gateway de mensajería y se anotó la lista de migración desde claw), OAuth mediante código de dispositivo para MCP (hermes mcp login --flow device, RFC 8628; se agregaron login y reauth --all al bloque de comandos de MCP; propiedad del profile mediante sesiones de OAuth, se ignoran cachés de metadatos con formato incorrecto, devoluciones de llamada locales del cliente de escritorio y filtros -t para iniciar servidores de MCP), confiabilidad de la delegación (unidades de finalización mediante delegation.independent_completions con un group por tarea y, de forma predeterminada, una finalización por llamada; transferencia de procesos en segundo plano, con orphaned_processes y unread_completions indicados en los resultados; delegation.fallback_providers; cadenas de agentes secundarios validadas por el normalizador; resultados parciales resistentes a fallos; los agentes secundarios nunca heredan el nivel de caché de 1 h; todo consultado en el código fuente de la herramienta de delegación correspondiente a la etiqueta), proveedores/modelos (GPT-6 Astra + Astra Pro con niveles fast/flex, sujetos a la cuenta en OAuth de Codex y con una variante -900k opcional; claude-fable-5.1; gemini-3.7/3.8-flash; qwen3.8-max-0902; Muse Spark 1.3 + el plugin muse-image de image_gen; búsqueda/extracción de Tavily; el entorno de ejecución administrado de llama.cpp; proveedores de procesos externos; actualización del catálogo cada 20 minutos mediante model_catalog.ttl_minutes) y la oleada de escritorio (modo de comentarios del navegador integrado que incluye selector/marcado/estilos por anotación, con lotes agrupados por región; controles estructurados de sesiones y automatización; arrastrar para crear sesiones; importación de sesiones desde transcripciones externas; display.resume_last_session; consentimiento para usar el profile real al abrir por primera vez; catálogo integrado de skills opcionales; configuración regional rusa para escritorio). Solo en el registro de cambios, verificado mediante confirmaciones o código fuente: confiabilidad de cron (se reforzó la transferencia tras reinicios mediante tres confirmaciones de correcciones verificadas, se serializó la deduplicación de entregas con retención de estados terminales, se cerró la condición de carrera al crear trabajos pausados, los archivos multimedia de cron en Discord se dirigen a su destino y se informan los errores de carga, y se conserva la continuidad durante ciclos de auditoría silenciosos), análisis del shell para aprobaciones (separación de secuencias de escape y operandos argv0 de GNU env, límites de argv de env y de comentarios del shell, los cuerpos entre comillas de sustituciones de comandos conservan sus límites de comando, y approvals.deny dentro de contenedores aislados), el monitor de actividad durante el inicio del gateway (hermes_startup_watchdog.py; gateway.startup_watchdog con un plazo de 300 s y salida forzada 75), resiliencia de state.db (recuperación de elementos perdidos mediante .recover de sqlite3, enrutamiento FTS de like_scan y el nuevo docs/state-db-recovery.md), rendimiento (search_files ejecuta ripgrep de forma nativa en hosts POSIX locales, las transcripciones de agentes secundarios delegados quedan excluidas del índice FTS de trigramas en la versión 30 del esquema y las rutas principales y auxiliares comparten un cliente httpx de OpenAI), gateway.trust_env, el selector /model de Slack Block Kit y la entrega de archivos multimedia desde entornos aislados remotos (ni las credenciales ni los enlaces simbólicos que apuntan a ellas salen del entorno aislado); Solución de problemas incorpora la comprobación de diagnóstico del valor obsoleto «fantasma» de HERMES_MAX_ITERATIONS. Las cifras correspondientes a la etiqueta se actualizan de v2026.8.31 a v2026.9.7: 39 proveedores estáticos y 39 carpetas de plugins de proveedores, ambos con entradas idénticas a v0.21.0; se refutó en el código fuente la afirmación del análisis preliminar de «38 estáticos, con xai incorporado al plugin» (la tupla xai sigue en la lista estática; solo se trasladó el archivo, de hermes_cli/models.py a hermes_cli/models_catalog_static.py:311); se actualizó la ruta de prompt_builder.py a agent/prompt_builder.py en el modelo mental y el flujo de datos de CLI; la afirmación de v0.16 sobre la actualización horaria del catálogo se mantuvo limitada a esa versión y se agregó junto a ella la cadencia de 20 minutos. Afirmaciones permanentes verificadas de nuevo y sin cambios: la nota sobre el nombre hermes approvals test, el valor predeterminado 500 de --max-turns (cli.py:400 en la etiqueta; no se propagó el docstring obsoleto que indicaba 60), 2.000 líneas para read_file, límites de delegación de 250/10, compression.tail_mode: lean, Node 26 y 17 configuraciones regionales de CLI. 41424344454647
2026-07-28 Guía v1.12: Ampliación de cobertura guiada por la demanda de búsqueda: dos temas con buenas tasas de conversión no tenían un encabezado propio al que dirigir a los lectores. No hay una versión nueva. GSC muestra que hermes swarm y hermes agent swarm convierten entre un 4,4 % y un 6,3 % desde la posición ~8, y hermes smart model routing, un 4,9 % desde la posición 6,7, aunque ninguno de los términos tenía una sección: swarm solo aparecía como parte del texto de Multi-Agent Kanban y en filas del registro de cambios, mientras que «smart model routing» no aparecía en ningún lugar salvo una nota al pie. Se agregó ¿Qué es un swarm de Hermes? dentro de Multi-Agent Kanban: define un swarm como trabajadores paralelos que operan sobre un único tablero persistente, documenta la topología de swarm, la descomposición automática, las sustituciones de modelo por tarea, las tareas programadas y la administración de árboles de trabajo de v0.15.0, y presenta en una tabla el fallo que evita cada mecanismo. Se cambió el título Rotación y respaldo de proveedores a Enrutamiento inteligente de modelos: rotación y respaldo de proveedores, con una introducción que reúne los grupos de credenciales, el modelo de respaldo y el enrutamiento auxiliar en un solo sistema. Ningún enlace interno apuntaba al ancla, por lo que el cambio de título no afecta nada. 59 2 6
2026-08-31 Guía v1.17: Hermes v0.21.0 «The Pantheon Release» (etiqueta v2026.8.31, 31 de agosto): llega la versión acumulativa seleccionada. Nueva sección de novedades encima de la sección Herald, organizada según las áreas funcionales de la propia versión: Bot Mode incluido y activado de forma predeterminada en escritorio (profiles con nombre, avatares deterministas y chats grupales con @menciones), mensajes directos entre bots mediante hermes peer (las respuestas llegan al Bot Chat canónico de cada agente), continuidad de cron (continuity=true, blocs de notas persistentes, omisión de LLM en modo de supervisión y fijación del esfuerzo por trabajo; la sección Tareas programadas incorpora el funcionamiento de las cuatro características en la etiqueta), orquestación en vivo de subagentes (delegate_task para enumerar, orientar y detener; resultados de agentes secundarios con esquema JSON; valores predeterminados elevados a 250 iteraciones/10 agentes secundarios simultáneos, verificados en config_defaults.py, frente a los cuales la indicación 3/50 de la página de documentación sobre delegación está obsoleta), el centro de comandos de MCP (+enlaces de instalación hermes://; se actualizó la sección de MCP), la oleada de potencia de CLI (se agregaron /palette + Ctrl+P y un /status basado en un registro compartido a las tablas de comandos con barra; se señaló el filtrado a medida que escribes en /model; se demostró que el nombre hermes approval-check de las notas de la versión corresponde a hermes approvals test en la etiqueta, pues ese subcomando no existe), el navegador integrado controlado por el agente, la oleada de proveedores/modelos (seis proveedores nuevos; la matriz incorpora filas de Tencent TokenPlan, Nebius Token Factory, Ramp Router y Alibaba Token Plan con variables de entorno citadas de la documentación; model_overrides; advertencias sobre niveles de entrenamiento con datos; plugins de proveedores mediante pip), la oleada de seguridad (las escrituras en AGENTS.md/skills/memory siempre requieren aprobación; security.protected_instruction_files: true y la barrera de tools/file_tools.py se verificaron en la etiqueta; revisión general de censura; cobertura de aprobaciones en Windows; hermes desktop --setup-tcc-identity; se eliminó Blender MCP; Refuerzo de seguridad incorpora una cuarta oleada), la maduración del gateway, la oleada de 8 skills y la lista REVERTIDA (Model Council /council, context engine DCP y servidor gateway exclusivo de WS; la reproducción con sello de secuencia #94219 SÍ se incluyó; Electron volvió a 40.10.2; grep confirma que la guía nunca documentó ninguna de las funciones revertidas). El encuadre de notas pospuestas de la subsección acumulativa está RESUELTO y ahora apunta a la sección seleccionada; se conservaron los bloques de intervalo como registro de cada etiqueta. Las cifras correspondientes a la etiqueta se actualizan de v2026.8.27 a v2026.8.31: proveedores estáticos, de 38 a 39 (+tencent-tokenplan); carpetas de plugins de proveedores, de 37 a 39 (+nebius-token-factory, +router, ambos con auth_type="api_key"); filas de proveedores en la documentación, de 41 a 45; sin cambios y verificados nuevamente: 28 filas de plataformas en la documentación/24 miembros del enum Platform (lista idéntica)/22 carpetas de adaptadores, _BUILTIN_SUBCOMMANDS idéntico (73, peer presente desde los intervalos acumulativos, sin version), 7 backends de terminal + registro de plugins (registro idéntico byte por byte), 14 personalidades y 17 configuraciones regionales (listas idénticas byte por byte/idénticas), valor predeterminado lean de compresión y lista de posiciones auxiliares, _startup_fast.py/portal_cli.py idénticos byte por byte. Se corrigió una desviación durante la verificación: hermes chat -q en una TTY ahora inicia una sesión interactiva (el nuevo --oneshot restablece el comportamiento de responder y salir) y se corrigió en la tabla del chat el valor predeterminado de --max-turns, de 90 a 500, según la ayuda del analizador correspondiente a la etiqueta. 35363738394033
2026-08-27 Guía v1.16: Hermes v0.20.6 (etiqueta v2026.8.27, 27 de agosto): cuarta consolidación. La subsección de consolidaciones incorpora su cuarta ventana, según la descripción de la propia versión (~1.313 commits en ~1.557 archivos, +177.113 / −21.682; ~525 PR fusionados desde v0.20.5): navegación con perfiles reales sujeta a consentimiento (perfil predeterminado de Chromium y flujo de cierre con aprobación en Windows), el Browser de escritorio en su propia ventana del sistema operativo, un motor administrado de actualizaciones remotas SSH y un panel lateral de profile para flotas, ampliación del catálogo remoto de MCP (más de 50 servidores alojados por proveedores y verificados en producción, incluidos Cloudflare, Grafana Cloud, Better Stack y Railway), cifrado opcional mediante el llavero del sistema operativo para los secretos almacenados, nuevos modelos en el selector (GLM-5.3-Flash, MiniMax M3 gratuito y MiniMax H3 Max para video), almacenamiento en caché de resultados con TTL para web_search/web_extract, tool_search con múltiples consultas y derivación léxica, actualizadores que pausan los gateways mediante el socket de control, instalaciones administradas mediante imágenes o paquetes que rechazan actualizaciones locales inseguras, confirmaciones de incidentes persistentes de cron, controles para desplegar vistas previas de enlaces en Slack e identidades compartidas de contenedores Docker. Dos afirmaciones de la versión contradecían secciones existentes; ambas se confirmaron en la etiqueta y se corrigieron: la compresión lean-tail es la predeterminada (se reescribió Context Compression con las claves vigentes en la etiqueta: tail_mode: lean, threshold_tokens, protect_first_n y los controles del resumidor en auxiliary.compression.*, junto con la migración automática de la versión 17 de la configuración; también se corrigió la nota invertida de solución de problemas) y los backends de terminal pueden ampliarse mediante plugins (se reformuló como siete backends integrados más un registro de plugins, al estilo del selector de proveedores; los nombres integrados están reservados). Se volvieron a verificar en la etiqueta las cifras y se actualizaron de v2026.8.19 → v2026.8.27: 38 proveedores estáticos + 37 carpetas de plugins de proveedores, 24 miembros del enum Platform / 22 carpetas de adaptadores / 28 filas en la tabla de la documentación, sin subcomando version (73 entradas en _BUILTIN_SUBCOMMANDS, incluida worktree), opciones del analizador y textos de ayuda entrecomillados sin cambios, y BUILTIN_PERSONALITIES todavía con 14 (helpful a hype); locales/ ahora contiene 17 catálogos (en + 16 traducciones; se añadió el recuento correspondiente a la etiqueta). main se encuentra EN la etiqueta (ahead_by: 0, estado idéntico). También se corrigió una desviación detectada durante la verificación: el valor predeterminado obsoleto del sistema auxiliar; auto ahora dirige todas las tareas auxiliares al modelo principal del chat, no a Gemini Flash mediante la detección OpenRouter → Nous → Codex. Se reescribió Auxiliary Models con la lista de espacios vigente en la etiqueta (se añadieron title_generation, tts_audio_tags, triage_specifier, kanban_decomposer y profile_describer, cada uno con una descripción breve basada en fuentes; los espacios web_extract y session_search se eliminaron upstream —ninguno usa ya un LLM— y flush_memories desapareció de los valores predeterminados), y se volvió a fundamentar la entrada de solución de problemas exclusiva de Anthropic. La instrucción de instalación nueva de la versión utiliza la URL sin procesar del script GitHub; la guía conserva la dirección canónica hermes-agent.nousresearch.com/install.sh. Las notas seleccionadas siguen prometidas para v0.21.0. 293031323334
2026-08-26 Guía v1.15: CORRECCIÓN: no hay una versión nueva (la etiqueta más reciente es v2026.8.19 / v0.20.5, del 21 de agosto); las afirmaciones existentes se volvieron a verificar en la etiqueta. Backends de terminal: de seis → siete; se añadió vercel_sandbox a la tabla y al comentario de configuración. Plataformas de mensajería: los recuentos aislados de «22» se conciliaron con las 28 entradas de la tabla comparativa de la documentación en la etiqueta y se especificó el criterio de conteo (24 miembros integrados del enum Platform y 22 carpetas de adaptadores incluidos); también se añadieron ntfy y Buzz a la lista de gateways. Proveedores: «~20 / ~22 de primera clase» se sustituyó por el recuento documentado (38 entradas estáticas en CANONICAL_PROVIDERS, más la ampliación automática a partir de 37 plugins de proveedores incluidos; 41 filas de servicios en la nube o por suscripción en la página de documentación), se eliminó «lista completa», se corrigió la fila de Qwen OAuth y se añadieron 17 filas a la matriz (OpenCode Free, acceso directo a OpenAI API, Vertex AI, Azure Foundry, Bedrock, NVIDIA NIM, Ollama Cloud, StepFun, MiniMax OAuth, Meta AI, NovitaAI, Arcee AI, GMI Cloud, Actual Computer, Tencent TokenHub, CommandCode y Alibaba Coding Plan). hermes version → hermes --version (no es un subcomando en la etiqueta). hermes honcho se marcó como dependiente de un plugin. «fleet --plan» → hermes update --plan. Global Options incorpora --in, --tui, --cli, --dev, --ignore-rules y --ignore-user-config; Top-Level Commands incorpora 34 filas de _BUILTIN_SUBCOMMANDS, entre ellas hermes worktree list\|prune con sus flags; se añadió el comando slash /worktree; se documentaron hermes setup --portal y hermes portal login\|info\|open\|tools. En el momento de la verificación, main estaba 1.104 commits por delante de la etiqueta (todos consolidados posteriormente en v2026.8.27); se prometen notas seleccionadas para v0.21.0. 23242526272829
2026-08-24 Guía v1.14: v0.20.5 (etiqueta v2026.8.19, publicada el 21 de agosto). La subsección de consolidaciones incorpora su tercera ventana (~746 commits / ~323 PR desde v0.20.4): el nivel web sin claves (rotación gratuita entre 5 proveedores con conmutación por error en anillo; búsqueda web en instalaciones nuevas sin ninguna clave), mejoras de CLI (selector difuso de /model, paleta de comandos con Ctrl+P y /status más detallado), hilos para salas grupales en Bot Mode + resúmenes plegables + arrastrar y soltar archivos PDF y de otros tipos, hermes worktree list/prune, comprobantes de hermes update y verificación de --plan para flotas, memoria persistente de cron con nivel de razonamiento por tarea, protecciones contra bloqueos en la disciplina de ejecución derivadas de los hallazgos de la evaluación de Composio, el proveedor opencode-free sin autenticación y mejoras de rendimiento en escritorio (hidratación que prioriza el primer renderizado y React Compiler en ambos renderizadores). v0.21.0, con todas las notas seleccionadas, sigue pendiente; los resúmenes proceden de la descripción de la ventana de la propia versión. Se actualizó la secuencia de versiones del encabezado. 23
2026-08-20 Guía v1.13: v0.20.3 (etiqueta v2026.8.16.2, publicada el 17 de agosto) y v0.20.4 (etiqueta v2026.8.18, 18 de agosto). Nueva subsección dentro de Herald Release: la serie de consolidaciones ahora incorpora funciones, en lugar de limitarse a la estabilización. v0.20.3 (~250 commits / ~125 PR): migración de MCP 2.x a SDK con compatibilidad con el protocolo sin estado del 28 de julio de 2026, plugin incluido de Bot Mode (hermes-bots) con el protocolo central para compañeros de equipo, plugin del proveedor CommandCode, contratos del entorno de ejecución de uso de computadora Cua Driver 0.20, refuerzo de la propiedad del entorno de ejecución de Python, autorreparación del programador cron, correcciones de pérdida de datos al transferir sesiones y adaptaciones del ecosistema (/worktree, conservación de ediciones manuales con /rollback y análisis de seguridad al instalar plugins). v0.20.4 (~146 commits / ~74 PR): superficie de cristal y translucidez para escritorio con selector de desenfoque, barra lateral con pestañas SESSIONS|BOTS y opción de ocultar o mostrar cada bot, análisis consultivo Tier 1 de NVIDIA SkillEvaluator al instalar skills (licencia + seguridad), refuerzo del envío de contenido multimedia mediante cron y transparencia de hermes update sobre las ramas estacionadas. Ambas versiones indican que las notas seleccionadas completas se publicarán con v0.21.0; los resúmenes proceden de las descripciones de las ventanas de las propias versiones. Se actualizaron la oración del encabezado y la secuencia de etiquetas. 54
2026-08-16 Guía v1.12: v0.20.0 «The Herald Release» (3 de agosto, etiqueta v2026.8.3), además de las etiquetas de estabilización v0.20.1 (13 de agosto) y v0.20.2 (16 de agosto). Tres correcciones solucionan instrucciones que ya no funcionan: se requiere Node 26 (el instalador fija NODE_VERSION="26" y rechaza entornos de ejecución anteriores; la indicación de Node v22 en el sitio de documentación está desactualizada, por lo que prevalecen el instalador y las notas de la versión), pip y Homebrew se retiraron, en lugar de quedar obsoletos («el instalador de shell / Docker / Nix son los canales compatibles»), y el límite predeterminado de iteraciones pasó de 90 → 500, lo que invalidó todas las cifras de la tabla de presión sobre el presupuesto. El comando de instalación se corrigió para usar la dirección canónica https://hermes-agent.nousresearch.com/install.sh. Superficie eliminada: la fuente de skills claude-marketplace desapareció y fue sustituida por browse-sh en la lista de fuentes; los taps predeterminados de GitHub ahora son openai, anthropics, huggingface, NVIDIA y gstack. El gateway de mensajería se volvió a contar, de 22 → 28 plataformas, enumerando directamente la tabla comparativa de la documentación (esta no publica ningún total oficial). Windows (nativo) es Tier 1, no una versión beta temprana; macOS solo es compatible con Apple Silicon. Una nueva sección aborda la versión en sí: voz conversacional con interrupción, A2A v1.0, webhooks salientes firmados para el ciclo de vida, skill de citas fundamentadas, la oleada de CLI !//init//diff//context//focus y hermes import-agent, fuente de secretos para el asistente de comandos, arranque en frío de hermes -w de ~14 s → ~1,8 s, artefactos de escritorio y un Plugin SDK. Se verificó que siguen sin cambios las tres rutas de autenticación, la estructura de ~/.hermes/, hermes update y la lista documentada de herramientas. 55
2026-07-21 Guía v1.11: v0.19.0 “The Quicksilver Release” (20 de julio de 2026, etiqueta v2026.7.20). Se agregó la sección “Novedades de v0.19.0”: reducción de ~80 % en el TTFT del primer turno (envío en frío→despacho de ~4,3 s → ~0,9 s en CLI/gateway/TUI/escritorio/cron), razonamiento transmitido en vivo de forma predeterminada (display.show_reasoning activado), ola de velocidad de ~20 PR en la aplicación de escritorio (renderizado de Markdown en streaming 14 veces más rápido) + Markdown incremental en la TUI; se desaconsejan las instalaciones mediante pip/Homebrew (solo muestran la advertencia “unsupported legacy”; se planea eliminar la publicación en PyPI/Homebrew) — se corrigieron la sección de instalación y el resumen para usar el instalador de una sola línea; SecretSource conectable con proveedores de Bitwarden + 1Password (referencias op://, múltiples bóvedas, precedencia determinista, procedencia por variable); aprobaciones inteligentes de forma predeterminada (revisor LLM independiente para cada comando marcado) + reglas de denegación definidas por el usuario que se mantienen incluso en modo YOLO + /deny <reason> + se reincorporó la escalación de aprobación mediante pre_tool_call de plugins; facturación desde la terminal con /subscription + /topup + pestaña de facturación en la aplicación de escritorio (se retiró la afirmación de que “no existe un comando de suscripción independiente”); transcripciones en vivo de subagentes + delegación duradera en segundo plano + registro de obligaciones de entrega en state.db; se desaconseja max_async_children en favor de límites unificados de concurrencia para la delegación; enrutamiento de mensajes del gateway basado en profiles (un token de bot multiplexado → profiles aislados, GATEWAY_MULTIPLEX_PROFILES, índice de enrutamiento en state.db, sessions.json como réplica heredada opcional); proveedores/modelos: Fireworks AI (puesto n.º 2 en el selector), DeepInfra, Upstage Solar, GPT-5.6 (Sol/Terra/Luna + Pro) de extremo a extremo, grok-4.5 con disponibilidad general, kimi-k3 (se retiró kimi-k2.x), Claude Sonnet 5 completamente integrado, enabled: false por proveedor + excluded_providers, niveles max/ultra de esfuerzo de razonamiento con anulaciones por modelo/posición de MoA y /reasoning limitado a la sesión; CLI/MCP: hermes sessions export (Markdown/Quarto/HTML/solo prompt/traza de HF, --redact), /model --once, invocaciones apiladas de skills mediante comandos con barra, --safe-mode, hermes config get/unset, hermes serve realmente sin interfaz gráfica, nomenclatura MCP mcp__server__tool. También se registran las etiquetas de parches omitidas v0.18.1 (etiqueta v2026.7.7) y v0.18.2 (etiqueta v2026.7.7.2), 7–8 de julio de 2026 — paquetes acumulativos de parches de infraestructura; la corrección sustancial de v0.18.2 elimina la versión fijada de WhatsApp Baileys y permite usar 7.0.0-rc13 para lograr compilaciones de Docker confiables. 56 57
2026-07-16 Se agregó una primera entrada de solución de problemas para el error literal de inicio “No inference provider configured. Run ‘hermes model’ to choose a provider and model” — motivada por la demanda de búsqueda; dirige al selector interactivo, hermes doctor y las tres vías de autenticación. No hubo cambios en el producto. 2 7
2026-07-01 Guía v1.10: v0.18.0 “The Judgment Release” (1 de julio de 2026, etiqueta v2026.7.1). Se agregó la sección “Novedades de v0.18.0”: se completó toda la lista de pendientes P0/P1 (~692 elementos); Mixture-of-Agents como función de primera clase, con resultados del conjunto etiquetados por modelo y transmisión en vivo; contratos de finalización — /goal verifica su propio trabajo ejecutando las comprobaciones del proyecto; /learn (describe un flujo de trabajo → skill reutilizable y compatible con CONTRIBUTING.md); /journey para consultar la cronología de memoria/skills + gráfico de memoria en la aplicación de escritorio; distribución de subagentes en segundo plano (tareas delegadas simultáneas); Proyectos de escritorio (proyecto/repositorio/carril); gateway con escalado a cero y coordinación del vaciado; Google Vertex AI (Gemini mediante cuentas de servicio de GCP, actualización automática de OAuth2); /prompt, editor mediante \$EDITOR. Fuente: versiones de hermes-agent. 22
2026-06-21 Guía v1.9: v0.17.0 “The Reach Release” (19 de junio de 2026, etiqueta v2026.6.19). Se agregó la sección “Novedades de v0.17.0”. Mensajería: iMessage sin relé mediante Photon Spectrum (hermes photon login, OAuth con código de dispositivo), adaptador oficial API de WhatsApp Business Cloud (sin puente), grupos + archivos adjuntos de SimpleX, plugin de plataforma Raft. Modelos: z-ai/glm-5.2 (1M), anthropic/claude-fable-5, laguna-m.1, nemotron-3-ultra, grok-composer-2.5-fast (OAuth de xAI, 200k); valor predeterminado de xAI → grok-build-0.1; los modelos adaptativos de Anthropic eliminan el campo reasoning. Aplicación de escritorio/panel: subagentes en segundo plano con ventanas de supervisión en vivo (delegate_task(background=true)), creador de profiles completo, Skills Hub rediseñado, planos de automatización, inicio de sesión 401 seguro, temas de VS Code Marketplace, interfaz en japonés + chino tradicional. Skills/herramientas: edición de imagen a imagen con image_generate, lote atómico de operations de memory, skill simplify-code, valor booleano write_approval (reemplaza a write_mode). Arquitectura: controlador de obtención de datos de MCP, CronScheduler conectable + Chronos, ámbito administrado (/etc/hermes), relé Gateway-Gateway. Comandos: /version, /billing, hermes curator run --consolidate (opcional). Seguridad: se cerró la omisión de la lista de denegación mediante escapes de shell, adaptadores de aprobación/gateway con denegación ante fallos, entorno de cron depurado, secretos censurados en volcados de depuración, filtrado de exfiltración por stdio de MCP, actualizaciones de urllib3 + PyJWT por vulnerabilidades CVE. 21
2026-06-08 Guía v1.8: v0.16.0 “The Surface Release” (5 de junio de 2026, etiqueta v2026.6.5). Se cambió el título de la guía a v0.16 y se agregó la sección “Novedades de v0.16.0”. Lo más destacado: Hermes ya no funciona únicamente en la terminal. Aplicación nativa Hermes Desktop (Electron, macOS/Linux/Windows) con instalación en un clic, actualización automática desde la propia aplicación, chat en streaming, imágenes mediante arrastrar y soltar + pegar desde el portapapeles, paleta Cmd+K, archivo/búsqueda de sesiones, selector de modelos en la barra de estado, conexión con un gateway remoto mediante WebSocket seguro (OAuth o usuario/contraseña, hosts por profile, enlaces @session entre profiles) y traducción completa al chino simplificado mediante i18n tipado. Panel de administración en el navegador (panel web → administración completa): activación/desactivación del catálogo de MCP, gestión de credenciales, creación de webhooks/hooks, configuración de memoria, controles del gateway, página del sistema con comprobación antes de actualizar + Debug Share, nueva página de canales y autenticación conectable (usuario/contraseña, OIDC autoalojado, hermes dashboard register). Comandos nuevos: /undo [N] (CLI/TUI/mensajería), interfaz predeterminada configurable (cli/tui, --cli), /model unificado en la TUI + superposición de sesiones, hermes portal, hermes prompt-size, hermes sessions optimize. Modelos nuevos: deepseek-v4-flash, MiniMax-M3 (contexto de 1M), qwen3.7-plus, gemini-3.5-flash; OAuth de xAI Grok como opción de primera clase en el iniciador de escritorio; selector de modelos con búsqueda aproximada; actualización del catálogo cada hora. Skills: conjunto predeterminado más ligero (Spotify → plugin nativo, Linear → hermes mcp install linear, se eliminaron las skills obsoletas), filtro de relevancia environments: (kanban/docker/s6), fuente confiable predeterminada NVIDIA/skills, divulgación progresiva (por ámbito) de herramientas de MCP/plugins. Seguridad: CVE-2026-48710 (BadHost de Starlette) fijado en ≥1.0.1; comprobaciones de SSRF fuera del bucle de eventos; token de portador de Bedrock eliminado del entorno de subprocesos; lectura protegida de bws_cache.json; se agregaron docker restart/stop/kill a los patrones peligrosos; depuración de caracteres Unicode invisibles. Se cerraron 2 incidencias P0 + 62 P1 (16 etiquetadas como seguridad). 20
2026-05-31 Guía v1.7.1: v0.15.1 (29 de mayo de 2026, 01:12 UTC) — parche Velocity. Corrección urgente publicada el mismo día después de Velocity; línea fijada en la etiqueta v2026.5.29. Corrige el bucle de recarga por error 401 del panel que afectaba a las implementaciones en modo loopback. Docker ya no interpreta --insecure como implícito: define HERMES_DASHBOARD_INSECURE=1 explícitamente para volver a habilitarlo. Los comandos simples de MCP (npx, npm, node) vuelven a resolverse correctamente dentro de los contenedores Docker. Se renderizan las etiquetas de origen y la barra lateral de categorías de la página de Skills. Los workers de Kanban responden correctamente a SIGTERM en lugar de dejar procesos huérfanos. El catálogo de Skills.sh creció de 858 a 19.932 entradas mediante el descubrimiento del mapa del sitio. 28 commits, 21 PR fusionadas, 9 colaboradores. v0.15.2 (29 de mayo de 2026, 13:37 UTC) — parche de empaquetado Velocity. Corrige las distribuciones wheel y sdist para que incluyan los manifiestos plugin.yaml, de modo que las instalaciones desde PyPI funcionen sin cargar por separado el árbol de código fuente. Corrección urgente exclusiva del empaquetado, 4 colaboradores. 58
2026-05-28 Guía v1.7: Se agregó v0.15.0 (28 de mayo de 2026) — La versión Velocity (etiqueta v2026.5.28). Principal novedad: una refactorización masiva y nuevas primitivas de orquestación. Refactorización del código base: run_agent.py se redujo un 76 % (de 16.083 a 3.821 líneas), distribuidas entre 14 módulos cohesivos. Kanban multiagente v2: descomposición automática de objetivos de alto nivel en subtareas, topología de enjambre para coordinar trabajadores en paralelo, selección de modelos por tarea, tareas programadas y administración de worktrees. Rendimiento: un segundo adicional menos en el inicio en frío; reducción del 47 % en las llamadas a funciones por conversación; session_search se rediseñó y ahora es 4.500 veces más rápido, tras eliminar la dependencia LLM (y su costo de API). Seguridad: la defensa contra Promptware protege frente a inyecciones de prompts de la clase Brainworm en tres puntos críticos de seguridad; la integración con Bitwarden Secrets Manager reemplaza varias claves API específicas de cada proveedor por un único token de arranque. Paquetes de skills: permite cargar varias skills simultáneamente con un solo comando slash. Orquestador de sesiones en la TUI: administración de varias sesiones desde una única ventana de terminal. Nuevos proveedores: Krea 2 (Medium/Large) y compatibilidad con el plugin FAL para generar imágenes; una ronda de mejoras en la integración con xAI agrega un plugin de búsqueda web, OAuth ascendente, detección de modelos retirados y pausas naturales en TTS. Estadísticas: 1.302 commits, 747 PR fusionados y 321 colaboradores de la comunidad. Según las notas de la versión de GitHub, una actualización correctiva publicada el mismo día o al día siguiente soluciona el bucle de recarga por errores 401 del panel, la variable de entorno explícita --insecure de Docker, la resolución de comandos sin ruta de MCP en Docker (npx, npm, node), la restauración de la página Skills, la gestión de SIGTERM en los trabajadores de Kanban y el catálogo completo de Skills con 19.932 entradas mediante el mapa del sitio. 59
2026-05-21 Guía v1.6: Se agregó v0.14.0 (16 de mayo de 2026) — La versión Foundation. Principal novedad: una base de instalación y ejecución más ligera, además de mayor compatibilidad con proveedores, gateway, contenido multimedia y mecanismos de verificación. Se agregaron SuperGrok OAuth con un contexto de 1 millón en grok-4.3, hermes proxy compatible con OpenAI para proveedores de OAuth, x_search como función de primera clase, pip install hermes-agent, instalación diferida de dependencias, un inicio aproximadamente 19 segundos más rápido, llamadas CDP del navegador 180 veces más rápidas, LINE y SimpleX Chat para un total de 22 plataformas de mensajería, compatibilidad integral con Microsoft Teams, /handoff, /subgoal, botones nativos para solicitar aclaraciones en Telegram/Discord, carga retroactiva del historial de Discord, vision_analyze sobre píxeles sin procesar, un pie de verificación de modificaciones de archivos en cada turno, diagnósticos semánticos de LSP en cada escritura, video_generate unificado, computer_use mediante cua-driver para proveedores distintos de Anthropic, URL clicables con OSC8, compatibilidad con Zed ACP Registry, el enrutador OpenRouter Pareto Code, NovitaAI, el entorno de ejecución del servidor de aplicaciones de Codex, el repositorio de confianza huggingface/skills, 9 skills opcionales, ctx.llm / tool_override para plugins, búsqueda web con Brave/DDGS, el cambio de nombre de Qwen Cloud, una versión beta nativa para Windows y la resolución de 12 problemas P0 y 50 P1. 19
2026-05-07 Guía v1.5: Se agregó v0.13.0 (7 de mayo de 2026) — La versión Tenacity. Principal novedad: un tablero Kanban multiagente duradero (latido, recuperación, detección de procesos zombis, barrera contra alucinaciones, max_retries por tarea y tableros para varios proyectos) que convierte los enjambres en una primitiva de primera clase, en lugar de un patrón de delegación. El comando /goal mantiene al agente enfocado en un objetivo entre distintos turnos (el patrón de bucle Ralph como comando slash). Nueva herramienta video_analyze, con Gemini como primera opción y compatibilidad extensible con otros modelos compatibles. Proveedor de TTS de voces personalizadas de xAI con clonación de voz. Internacionalización en 7 idiomas (zh-Hans, ja, de, es, fr, uk, tr) para CLI y los mensajes del gateway; la documentación solo está disponible en zh-Hans. Google Chat como vigésima plataforma de mensajería mediante el patrón de adaptadores conectables; IRC y Microsoft Teams se migraron al mismo patrón. ProviderProfile ABC + plugins/model-providers/ para integrar proveedores externos conectables sin modificar el núcleo. Reanudación automática de sesiones después de reiniciar el gateway, ejecutar /update o recargar archivos fuente. Reescritura de Checkpoints v2 con un diseño de almacenamiento único, depuración real y límites de seguridad para el disco. Ocho soluciones de seguridad P0: ocultamiento de secretos activado de forma predeterminada, evasión de restricciones en mensajes directos entre servidores de Discord (CVSS 8.1), rechazo de desconocidos y silenciamiento del chat propio en WhatsApp, TOCTOU de MCP OAuth, TOCTOU de auth.json en CLI, protección básica contra SSRF en el navegador, análisis de inyección de prompts en cron y ocultamiento de datos sensibles en hermes debug share. Análisis posterior a la escritura para Python/JSON/YAML/TOML, modo no_agent de cron solo para scripts, listas de permitidos en Slack/Telegram/Mattermost/Matrix/DingTalk y mejoras de MCP (transporte SSE, reenvío de OAuth y etiquetas MEDIA para imágenes). Estadísticas desde v0.12.0: 864 commits, 588 PR fusionados, 829 archivos modificados, 295 colaboradores de la comunidad y 282 incidencias resueltas (13 P0 y 36 P1). 18
2026-05-06 Guía v1.4: Se agregó v0.12.0 (30 de abril de 2026) — La versión Curator. Principal novedad: un Curator autónomo en segundo plano que se ejecuta mediante el temporizador cron del gateway (ciclo predeterminado de 7 días), evalúa la biblioteca de skills según una rúbrica, elimina las skills obsoletas, consolida las relacionadas y genera informes de cada ejecución; Hermes se mantiene por sí mismo entre sesiones activas. El ciclo de mejora continua se actualizó con evaluaciones basadas en rúbricas, preferencia por actualizaciones activas, herencia correcta del entorno de ejecución y toolsets con alcance limitado a la memoria y las skills. Cuatro nuevos proveedores de inferencia: GMI Cloud, Azure AI Foundry, MiniMax OAuth y Tencent Tokenhub. LM Studio pasó a ser una opción de primera clase. Los manifiestos remotos del catálogo de modelos ahora se actualizan automáticamente sin necesidad de publicar nuevas versiones. Dos nuevas plataformas de mensajería: Microsoft Teams (la número 19, mediante una arquitectura de gateway conectable) y Tencent Yuanbao (la número 18, con texto y contenido multimedia nativos). Spotify nativo mediante PKCE OAuth con una skill incluida; plugin de Google Meet para llamadas y transcripciones; proveedor local de TTS Piper. ComfyUI v5 + TouchDesigner-MCP pasaron de ser opcionales a incluirse de forma predeterminada. Nuevas skills: Humanizer, claude-design, design-md y airtable. Incorporaciones a CLI: modo de ejecución única hermes -z, comprobación previa hermes update --check, comando slash /reload-skills y estilos conectables para el indicador de actividad. El inicio en frío visible de la TUI se redujo aproximadamente un 57 % mediante la inicialización diferida del agente y las importaciones diferidas. Seguridad: el ocultamiento de secretos está desactivado de forma predeterminada para evitar la corrupción de las cargas útiles; lista de bloqueo estricta para comandos irrecuperables. Estadísticas: 1.096 commits, 550 PR fusionados y 213 colaboradores de la comunidad. 17
2026-04-25 Guía v1.3: Se agregó v0.11.0 (23 de abril de 2026) — La versión Interface. Reescritura completa de la TUI interactiva con React/Ink, con un backend RPC de Python JSON (tui_gateway); compositor fijo, transmisión en vivo compatible con el portapapeles OSC-52, teclas estables en los selectores, barra de estado con cronómetro por turno y rama de git, confirmación para /clear, tema claro predefinido y una superposición para observar la creación de subagentes. Arquitectura de transporte conectable: la conversión de formatos y el transporte HTTP se trasladaron a agent/transports/ para simplificar la integración de proveedores. AWS Bedrock nativo mediante Converse API. Cinco nuevas vías de inferencia: NVIDIA NIM, Arcee AI, Step Plan, Google Gemini CLI OAuth y Vercel ai-gateway. GPT-5.5 mediante Codex OAuth: ahora se puede acceder al nuevo modelo insignia de OpenAI mediante ChatGPT Codex OAuth sin una clave API independiente. QQBot (la plataforma de mensajería número 17) con configuración mediante escaneo de código QR y transmisión. Ampliación de la superficie de plugins: comandos slash, despacho de herramientas, bloqueo de ejecución y transformación de resultados. /steer <prompt>: indicaciones durante la ejecución que insertan una nota que el agente activo verá después de su siguiente llamada a una herramienta, sin interrumpir el turno ni invalidar la caché del prompt. Hooks de shell que conectan scripts como hooks del ciclo de vida sin plugins de Python. El modo de entrega directa mediante webhooks reenvía las cargas útiles directamente a un chat de la plataforma, omitiendo al agente para distribuirlas. Delegación más inteligente con funciones de orquestación, profundidad de creación configurable y coordinación de archivos. El panel incorpora un sistema de plugins, cambio de tema en tiempo real, i18n y adaptación a dispositivos móviles. Estadísticas desde v0.9.0: 1.556 commits, 761 PR fusionados, 1.314 archivos modificados, 224.174 inserciones y 29 colaboradores de la comunidad. 60
2026-04-16 Guía v1.2: Se agregó v0.10.0 — Nous Tool Gateway. Los suscriptores de pago de Nous Portal ahora pueden acceder a herramientas administradas (búsqueda web con Firecrawl, generación de imágenes con FAL / FLUX 2 Pro, TTS de OpenAI y automatización del navegador con Browser Use) sin claves API adicionales. Activación por herramienta mediante el nuevo campo de configuración use_gateway. Cuando ambos están configurados, el entorno de ejecución prefiere el gateway en lugar de las claves API directas. Se eliminó la variable de entorno HERMES_ENABLE_NOUS_MANAGED_TOOLS. Hermes Agent CLI continúa bajo la licencia MIT y es completamente gratuito. 61
2026-04-13 Guía v1.1: Se agregaron las funciones de v0.8.0 y v0.9.0. Panel web local, modo /fast, plataformas iMessage y WeChat (16 en total), monitoreo de procesos en segundo plano (watch_patterns), context engine conectable, hermes backup/hermes import, Termux/Android, proveedores xAI, MiMo, Google AI Studio y Qwen, comando /debug y un refuerzo integral de la seguridad. 15 16
2026-04-10 Guía v1.0: Versión inicial que abarca Hermes Agent v0.7.0. Autenticación de proveedores, configuración, CLI, comandos slash, herramientas, skills, memoria, gateway, cron, MCP, compresión, arquitectura, migración desde OpenClaw, solución de problemas y preguntas frecuentes.
—

Referencias


  1. Nous Research, README del proyecto “Hermes Agent” en GitHub. Fuente principal de la descripción del producto (agente con capacidad de mejora autónoma, compatibilidad con varios proveedores, gateway de mensajería, backends de terminal, evolución de skills, programador cron y delegación) y del comando de una sola línea de “Instalación rápida”. ↩↩↩

  2. Nous Research, “Proveedores de IA” en la documentación de Hermes Agent. Fuente principal de la lista completa de proveedores, los métodos de autenticación de cada proveedor (Nous Portal OAuth, código de dispositivo de Codex, tipos de token de Copilot de GitHub, los 3 métodos de autenticación de Anthropic, proveedores de IA chinos, enrutamiento de Hugging Face y endpoints personalizados), las 3 rutas de autenticación (clave API en .env, OAuth mediante hermes model y endpoint personalizado en config.yaml), la sintaxis del comando slash /model (incluido custom:name:model), las plantillas de configuración de Ollama/vLLM/SGLang/llama.cpp/LM Studio, las instrucciones de red para WSL2, la cadena de detección de longitud del contexto, la configuración del modelo alternativo, el enrutamiento inteligente de modelos y los proveedores personalizados con nombre. Todos los nombres de variables de entorno, tipos de token, reemplazos de URL base e identificadores de modelos específicos de cada proveedor que aparecen en esta publicación provienen de esta página. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  3. Nous Research, “Arquitectura” en la guía para desarrolladores de Hermes Agent. Fuente principal del diagrama general del sistema, la estructura de directorios, el flujo de datos por las rutas de sesión y mensajes del gateway de CLI, los 3 modos de API (chat_completions, codex_responses, anthropic_messages), la resolución de proveedores mediante runtime_provider.py, la persistencia de sesiones mediante SQLite + FTS5, la lista de plataformas del gateway de mensajería, las fuentes de detección del sistema de plugins, el aislamiento de profile y los 6 principios de diseño. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  4. Nous Research, “Configuración” en la guía del usuario de Hermes Agent. Fuente principal de la estructura del directorio de configuración, la regla de config.yaml frente a .env (“config.yaml tiene prioridad para la configuración que no contiene secretos”), la cadena de precedencia de configuración (argumentos de CLI → entorno → config.yaml → .env → valores predeterminados), la configuración de compresión del contexto (bloque compression.* con threshold, threshold_tokens, target_ratio, tail_mode, protect_last_n, protect_first_n; el modelo, proveedor y endpoint del resumidor se encuentran en auxiliary.compression.* desde la migración a la versión 17 de la configuración), los umbrales de presión del presupuesto (precaución al 70 %, advertencia al 90 %), los tiempos de espera de streaming con ajuste automático para proveedores locales y el bloque completo de configuración de modelos auxiliares (auxiliary: con espacios para vision, web_extract, approval, compression, session_search, skills_hub, mcp y flush_memories). La restricción del proveedor "main" a los espacios auxiliares, de compresión y alternativos también procede de esta página. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  5. Nous Research, “Migración desde OpenClaw” en las guías de Hermes Agent. Fuente del flujo de migración de OpenClaw → Hermes. ↩↩

  6. Nous Research, “Referencia de comandos de CLI” en la documentación de referencia de Hermes Agent. Fuente principal de todos los comandos de nivel superior de CLI documentados en esta publicación, incluidos hermes chat, hermes model, hermes gateway, hermes setup, hermes auth, hermes status, hermes cron, hermes webhook, hermes doctor, hermes dump, hermes logs, hermes config, hermes pairing, hermes skills, hermes honcho, hermes memory, hermes acp, hermes mcp, hermes plugins, hermes tools, hermes sessions, hermes insights, hermes claw, hermes profile, hermes completion, hermes update y hermes uninstall. Todas las flags de subcomandos, descripciones de opciones, el comportamiento del conjunto de credenciales, la sintaxis de filtrado de registros, las flags de migración de OpenClaw, los comandos de administración de profile y los comandos de instalación de servicios incluidos en esta publicación provienen de esta página. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  7. Nous Research, “Instalación” en la guía de primeros pasos de Hermes Agent. Fuente principal del comando de instalación de una sola línea, el comportamiento del instalador (requisitos previos, compatibilidad con plataformas, detección automática de Termux y requisitos de Windows/WSL2), la tabla de componentes adicionales opcionales, los pasos de instalación manual y los comandos de verificación. ↩↩↩↩↩↩↩↩↩

  8. Nous Research, “Referencia de comandos de CLI” — consulta específicamente la sección de hermes dump, que describe el formato de salida del comando (encabezado, entorno, identidad, modelo, terminal, claves de API, funciones, servicios, carga de trabajo y reemplazos de configuración) y su uso previsto para compartir diagnósticos. ↩

  9. Nous Research, “Referencia de comandos slash” en la documentación de referencia de Hermes Agent. Fuente principal de todos los comandos slash enumerados en esta publicación, la arquitectura de COMMAND_REGISTRY, la separación entre CLI y la mensajería, los comandos slash dinámicos de skills, los comandos rápidos de config.yaml, el comportamiento de coincidencia de prefijos y los comandos exclusivos de mensajería (/status, /sethome, /approve, /deny, /update, /commands). ↩↩↩↩↩↩↩↩↩↩

  10. Nous Research, “Herramientas y toolsets” en la guía del usuario de Hermes Agent. Fuente principal de la descripción general de las categorías de herramientas, los comandos de uso de toolset, los 7 backends de terminal (local, docker, ssh, singularity, modal, daytona, vercel_sandbox), la configuración de contenedores (cpu, memoria, disco, persistencia), el refuerzo de seguridad de los contenedores, la administración de procesos en segundo plano de API y la compatibilidad con sudo. ↩↩↩↩↩↩↩↩↩↩

  11. Nous Research, “Sistema de skills” en la guía del usuario de Hermes Agent. Fuente principal de la divulgación progresiva, el formato de SKILL.md, las skills específicas de cada plataforma, la activación condicional (fallback_for_toolsets, requires_toolsets, fallback_for_tools, requires_tools), las skills administradas por el agente mediante skill_manage, los comandos del centro de skills y la lista de fuentes (official, skills-sh, well-known, github, clawhub, claude-marketplace, lobehub), el análisis de seguridad y los niveles de confianza, así como los directorios externos de skills. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  12. Nous Research, “Memoria persistente” en la guía del usuario de Hermes Agent. Fuente principal de los límites de caracteres de MEMORY.md / USER.md, el patrón de instantánea inmutable, las acciones de la herramienta de memoria (add, replace, remove), qué guardar y qué omitir, la comparación entre la memoria y la búsqueda de sesiones, y los proveedores de memoria externos. En la etiqueta v2026.9.24, la página complementaria Proveedores de memoria (línea 9) indica que “Hermes Agent incluye 7 plugins de proveedores de memoria externos” y añade que “hay más disponibles en el catálogo de plugins (como Hindsight)”; en esa etiqueta, plugins/memory/ contiene byterover, holographic, honcho, mem0, openviking, retaindb y supermemory. ↩↩↩↩↩↩↩↩

  13. Nous Research, “Personalidad y SOUL.md” en la guía del usuario de Hermes Agent. Fuente principal del comportamiento de SOUL.md (reside en HERMES_HOME, nunca se sobrescribe, ocupa el espacio n.º 1 del prompt del sistema y se analiza en busca de riesgos de seguridad antes de incluirlo), la distinción entre SOUL.md y AGENTS.md, la lista de personalidades integradas (14 personalidades, desde helpful hasta hype), las personalidades personalizadas en config.yaml, el patrón de superposición de /personality y el orden completo de ensamblaje de la pila de prompts. ↩↩↩↩↩↩↩↩↩↩↩↩

  14. Nous Research, “Usar MCP con Hermes” y Referencia de configuración de MCP en las guías y la documentación de referencia de Hermes Agent. Fuente del formato de configuración mcp_servers: en config.yaml con los campos command, args y env. ↩

  15. Notas de la versión 0.8.0 de Hermes Agent. 8 de abril de 2026. Notificaciones automáticas de procesos en segundo plano, MiMo v2 Pro gratuito en Nous Portal, cambio de /model en vivo entre plataformas, proveedor nativo de Google AI Studio, OAuth de Qwen, tiempos de espera basados en la inactividad, botones de aprobación en Slack/Telegram, OAuth 2.1 PKCE de MCP, registro centralizado y ampliación del sistema de plugins. ↩↩↩↩↩

  16. Notas de la versión Hermes Agent v0.9.0. 13 de abril de 2026. Panel web local, Modo rápido (/fast), iMessage mediante BlueBubbles, WeChat + WeCom, Termux/Android, monitoreo de procesos en segundo plano (watch_patterns), proveedores nativos xAI + Xiaomi MiMo, context engine conectable, compatibilidad unificada con proxy, refuerzo de seguridad (correcciones de recorrido de rutas, inyección de shell, SSRF y RCE), hermes backup/hermes import, /debug + hermes debug share, 16 plataformas compatibles. 487 commits, 269 PR fusionadas, 24 colaboradores. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  17. Notas de la versión Hermes Agent v0.12.0. 30 de abril de 2026. «La versión Curator». Curator autónomo en segundo plano que califica, depura y consolida la biblioteca de skill en un ciclo predeterminado de 7 días ejecutado mediante el indicador cron del gateway. Se mejoró el ciclo de autoaprendizaje: calificación basada en rúbricas, preferencia por actualizaciones activas, herencia correcta del entorno de ejecución y toolsets delimitados y restringidos a memoria y skills. Cuatro nuevos proveedores de inferencia: GMI Cloud, Azure AI Foundry, MiniMax OAuth, Tencent Tokenhub. LM Studio pasó a ser una opción de primera clase. Los manifiestos remotos del catálogo de modelos se actualizan automáticamente sin necesidad de nuevas versiones. Dos nuevas plataformas de mensajería: Microsoft Teams (la 19.ª, mediante una arquitectura de gateway conectable) y Tencent Yuanbao (la 18.ª, con texto + contenido multimedia nativos). Integración nativa con Spotify mediante PKCE OAuth y una skill incluida; plugin de Google Meet para llamadas y transcripción; proveedor local de TTS Piper. ComfyUI v5 + TouchDesigner-MCP incluidos de forma predeterminada. Nuevas skills: Humanizer, claude-design, design-md, airtable. CLI: modo de ejecución única hermes -z, comprobación previa hermes update --check, comando de barra diagonal /reload-skills y estilos conectables para el indicador de actividad. El inicio en frío de la TUI se redujo cerca de un 57 % mediante inicialización diferida. Seguridad: la ocultación de secretos está desactivada de forma predeterminada; lista de bloqueo estricta para comandos irrecuperables. Estadísticas desde v0.11.0: 1.096 commits, 550 PR fusionadas y 213 colaboradores de la comunidad. Consulta también: etiqueta de la versión v2026.4.30. ↩↩↩

  18. Notas de la versión Hermes Agent v0.13.0. 7 de mayo de 2026. «La versión Tenacity». Tablero Kanban multiagente con señales periódicas, recuperación de tareas, detección de procesos zombis, barrera contra alucinaciones, max_retries por tarea y tableros multiproyecto. Comando de barra diagonal /goal para fijar objetivos entre turnos (primitiva del ciclo Ralph) con un presupuesto de turnos configurable. Herramienta video_analyze, que prioriza Gemini y ofrece extensibilidad multimodal compatible. Proveedor de TTS xAI Custom Voices con clonación de voz. Internacionalización en 7 idiomas: zh-Hans, ja, de, es, fr, uk, tr (CLI + mensajes del gateway; documentación solo en zh-Hans). Google Chat como la 20.ª plataforma de mensajería mediante un patrón de adaptadores conectables con hooks genéricos de plugin env_enablement_fn / cron_deliver_env_var; IRC y Microsoft Teams migraron al mismo patrón. Clase base abstracta ProviderProfile + plugins/model-providers/ para proveedores externos conectables. Reanudación automática de sesiones tras reiniciar el gateway, ejecutar /update o recargar archivos fuente. Reescritura de Checkpoints v2 con un único almacén, depuración real, protecciones de disco y sin repositorios paralelos huérfanos. Ocho correcciones de seguridad P0: ocultación de secretos activada de forma predeterminada; omisión de restricciones en mensajes directos entre servidores de Discord (CVSS 8.1, listas de roles permitidos delimitadas por servidor); WhatsApp rechaza de forma predeterminada a desconocidos + nunca responde en el chat propio; condición TOCTOU al guardar credenciales de MCP OAuth; condición TOCTOU de CLI auth.json en los escritores de credenciales; nivel mínimo de protección contra SSRF de metadatos en la nube para el enrutamiento híbrido del navegador; análisis de prompts compuestos por cron (incluido el contenido de skills) para detectar inyección de prompts; ocultación del contenido de los registros al subirlos mediante hermes debug share. Otros elementos destacados: análisis estático posterior a la escritura para Python/JSON/YAML/TOML, modo de vigilancia no_agent de cron que solo ejecuta scripts, listas de elementos permitidos por plataforma en Slack/Telegram/Mattermost/Matrix/DingTalk y mejoras de MCP (transporte SSE, reenvío de OAuth, resultados de imágenes como etiquetas MEDIA). Estadísticas desde v0.12.0: 864 commits, 588 PR fusionadas, 829 archivos modificados, 295 colaboradores de la comunidad y 282 incidencias cerradas (13 P0, 36 P1). ↩↩↩↩↩↩↩↩↩↩↩↩

  19. Notas de la versión Hermes Agent v0.14.0. 16 de mayo de 2026. «La versión Foundation». Desde v0.13.0: 808 commits, 633 PR fusionadas, 1.393 archivos modificados, 165.061 inserciones, 545 incidencias cerradas (12 P0, 50 P1) y 215 colaboradores de la comunidad. Añade SuperGrok OAuth con grok-4.3 y un context de 1 millón, hermes proxy, x_search, empaquetado para PyPI, dependencias diferidas, caché de prompts Claude de 1 h entre sesiones, inicio cerca de 19 s más rápido, llamadas CDP del navegador 180 veces más rápidas, LINE y SimpleX Chat para alcanzar 22 plataformas de mensajería, /handoff, botones nativos para solicitar aclaraciones, recuperación del historial de Discord, vision_analyze con píxeles sin procesar, pie de verificación de modificaciones de archivos en cada turno, diagnósticos semánticos de LSP, video_generate unificado, computer_use de cua-driver, enlaces OSC8, compatibilidad con Zed ACP Registry, enrutador OpenRouter Pareto Code, NovitaAI, entorno de ejecución del servidor de aplicaciones de Codex, huggingface/skills, ctx.llm para plugins, tool_override, búsqueda con Brave/DDGS, refuerzo contra comandos peligrosos, /subgoal, cambio de nombre de Qwen Cloud, versión beta nativa para Windows, 16 locales en total y amplias actualizaciones de documentación y pruebas. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  20. Notas de la versión Hermes Agent v0.16.0, «The Surface Release», etiqueta v2026.6.5, publicada el 6 de junio de 2026 a las 00:55:58 Z (fecha de la etiqueta de la versión: 5 de junio de 2026); la más reciente al 8 de junio de 2026. Nuevo Hermes Desktop nativo (Electron, macOS/Linux/Windows; conexión a gateway remoto mediante WebSocket seguro con OAuth o usuario/contraseña; hosts remotos por profile; enlaces @session entre profiles; interfaz en chino simplificado mediante i18n tipado, display.language). El panel web se amplió hasta convertirse en un panel de administración completo (interruptores para el catálogo de MCP, gestión de credenciales, creación de webhooks/hooks, configuración de memoria, controles del gateway, página System con comprobación antes de actualizar y Debug Share, página Channels; autenticación conectable, incluido OIDC autoalojado y hermes dashboard register). Nuevos comandos: /undo [N], interfaz predeterminada configurable (cli/tui, --cli), /model en la TUI junto con la superposición Sessions, hermes portal, hermes prompt-size, hermes sessions optimize. Nuevos modelos: deepseek-v4-flash, MiniMax-M3 (contexto de 1 millón), qwen3.7-plus, gemini-3.5-flash; OAuth de xAI Grok; selector difuso; actualización del catálogo cada hora. Skills: conjunto predeterminado más reducido, control de relevancia environments:, NVIDIA/skills como tap confiable predeterminado, divulgación progresiva de herramientas, corrección del éxito falso de OAuth en MCP. Seguridad: CVE-2026-48710 (Starlette BadHost) fijada en ≥1.0.1, comprobaciones SSRF fuera del bucle de eventos, eliminación del token de portador de Bedrock del entorno de los subprocesos, protección de lectura para bws_cache.json, incorporación de docker restart/stop/kill a los patrones peligrosos, sanitización de Unicode invisible; se cerraron 2 P0 y 62 P1 (16 etiquetados como seguridad). Se excluyó el enfoque promocional de las notas de la versión (recuentos de PR/commits, «nada de esto existía hace una semana»); solo se registran hechos concretos sobre funciones y versiones vinculados a la etiqueta. Verificación de la sesión actual: 8 de junio de 2026. ↩↩↩↩↩↩↩↩

  21. Notas de la versión Hermes Agent v0.17.0, «The Reach Release», etiqueta v2026.6.19, 19 de junio de 2026; la más reciente al 21 de junio de 2026. Mensajería: iMessage mediante Photon Spectrum (OAuth con código de dispositivo, hermes photon login, sin retransmisión por Mac); adaptador oficial de API para WhatsApp Business Cloud (reemplaza el proceso puente); grupos de SimpleX, archivos adjuntos nativos, agrupación de texto y aceptación automática; plugin de plataforma Raft incluido. Modelos/proveedores: z-ai/glm-5.2 (contexto de 1 millón), anthropic/claude-fable-5, laguna-m.1, nemotron-3-ultra, grok-composer-2.5-fast (OAuth de xAI, contexto de 200.000); valor predeterminado de xAI → grok-build-0.1; los modelos adaptativos de Anthropic usan el contrato de razonamiento moderno (sin campo reasoning). CLI/comandos slash: /version, /billing, hermes photon login, hermes curator run --consolidate (opcional), interfaz gráfica de hermes model, clonación de profiles. Desktop: ventanas de supervisión para subagentes en segundo plano (delegate_task(background=true)), selector de modelos de Composer, atajos reasignables, notificaciones nativas del sistema operativo, borradores por hilo, temas de VS Code Marketplace e interfaz en japonés y chino tradicional. Dashboard: creador de profiles completo, selector global de profile, renovación de Skills Hub con análisis de seguridad, Automation Blueprints e inicio de sesión seguro (401 detrás de OAuth). Skills/herramientas: edición de imagen a imagen con image_generate entre proveedores, operaciones atómicas por lotes mediante operations de memory, skill simplify-code de revisión paralela; el booleano write_approval reemplaza a write_mode. Arquitectura: subagentes en segundo plano (se devuelve un identificador de inmediato y el resultado vuelve a ingresar como un turno), controlador de obtención de información de MCP para confirmaciones durante una llamada a una herramienta, exposición entre turnos de herramientas de MCP que se conectan tarde, CronScheduler conectable junto con cron administrado por Chronos, ámbito Managed (/etc/hermes fijado por el administrador), retransmisión Gateway-Gateway. Seguridad: se cerró una omisión de la lista de denegación de escape del shell, comportamiento de cierre seguro cuando falta el módulo de aprobación y en adaptadores del gateway con políticas propias, sanitización del entorno de scripts de trabajos cron, ocultamiento de secretos en volcados de depuración, omisión de metadatos del host en el estado público, detección de patrones de exfiltración en stdio de MCP, actualizaciones de urllib3 y PyJWT por vulnerabilidades CVE. Se excluyó el enfoque promocional de la versión (recuentos de commits/PR). Verificación de la sesión actual: 21 de junio de 2026. ↩↩↩↩↩↩↩↩↩↩↩

  22. Notas de la versión Hermes Agent v0.18.0 (etiqueta v2026.7.1), 1 de julio de 2026 — «The Judgment Release». Revisión general del registro de pendientes prioritarios (se cerraron todos los P0/P1, unos 692 elementos en 12 días); Mixture-of-Agents seleccionable como modelo de primera clase en todas las interfaces, con la salida completa de cada modelo de referencia representada en su propio bloque etiquetado y transmisión de la respuesta en vivo; contratos de finalización para /goal (el agente verifica su propio trabajo ejecutando las comprobaciones del proyecto); comando /learn (convierte cualquier cosa en una skill reutilizable con solo describirla y cumple automáticamente con CONTRIBUTING.md); cronología visual de memoria/skills con /journey, edición y un gráfico de memoria en Desktop; distribución en abanico de subagentes en segundo plano (varias tareas delegadas simultáneas); Desktop Projects (modelo de proyecto/repositorio/lane); gateway con reducción a cero y coordinación del drenaje; compatibilidad con Google Vertex AI (Gemini mediante cuentas de servicio de GCP, actualización automática del token OAuth2); comando /prompt para $EDITOR. Verificación de la sesión actual: 1 de julio de 2026 (PST) en la página de versiones de GitHub; v0.18.0 es la versión más reciente. ↩↩↩↩↩↩↩↩↩↩↩

  23. Notas de la versión Hermes Agent v0.20.5 (etiqueta v2026.8.19, fecha de lanzamiento indicada: 19 de agosto; publicada el 21 de agosto de 2026; obtenida mediante la API de GitHub el 24 de agosto de 2026; versión preliminar: false). Descripción literal del periodo: «~746 commits en ~1.250 archivos (+111.500 / -20.701) y ~323 PR fusionados, incluidos hilos de salas grupales de Bot Mode, resúmenes de conversaciones plegables, avatares con rostro de blob y archivos adjuntos PDF/de otros tipos con la función de arrastrar y soltar; el nivel web sin claves (rotación gratuita entre 5 proveedores con conmutación por error en anillo y búsqueda web en instalaciones nuevas sin ninguna clave); una oleada de mejoras de CLI (selector difuso de /model, paleta de comandos con Ctrl+P y /status más completo); medidas de disciplina de ejecución y protecciones contra bloqueos en tiempo de ejecución derivadas de los hallazgos de las evaluaciones de Composio; comprobantes de hermes update y verificación de flotas con --plan; hermes worktree list/prune; el proveedor sin autenticación y libre de opencode; aclaraciones con varias preguntas; mejoras de rendimiento en Desktop (hidratación de Bot Mode priorizando el primer renderizado, indicadores de carga del compositor y React Compiler en ambos renderizadores); y trabajos cron con memoria persistente y nivel de razonamiento configurable por trabajo». La versión reitera: «Las notas completas y seleccionadas de este periodo se publicarán con v0.21.0». ↩↩↩↩↩↩↩↩↩↩↩

  24. Backends de terminal en la etiqueta v2026.8.31 (verificados de nuevo para la versión 1.17 de la guía; agent/terminal_env_registry.py es idéntico byte por byte a su versión de v2026.8.31, los datos del docstring de tools/terminal_tool.py no han cambiado y tools/environments/ aún contiene los mismos 7 módulos de backend, ahora acompañados de un auxiliar path_utils.py): docstring del módulo tools/terminal_tool.py, literalmente: «Una herramienta de terminal que ejecuta comandos en entornos locales, Docker, Modal, SSH, Singularity, Daytona y Vercel Sandbox» y, en la lista de selección de entornos, la entrada vercel_sandbox: «Ejecutar en sandboxes en la nube de Vercel Sandbox»; el módulo de backend tools/environments/vercel_sandbox.py existe en la etiqueta junto con daytona.py, docker.py, local.py, modal.py, singularity.py y ssh.py. El README en la etiqueta: «7 backends de terminal: local, Docker, SSH, Singularity, Modal, Daytona y Vercel Sandbox». La página de documentación Tools & Toolsets (fuente website/docs/user-guide/features/tools.md en la etiqueta) incluye vercel_sandbox en una tabla como «microVM en la nube de Vercel Sandbox» para la «ejecución en la nube con persistencia del sistema de archivos respaldada por instantáneas», muestra el comentario de configuración # or: docker, ssh, singularity, modal, daytona, vercel_sandbox e indica: «Autentícate con los 3 valores VERCEL_TOKEN, VERCEL_PROJECT_ID y VERCEL_TEAM_ID. … Los entornos de ejecución compatibles son node24, node22 y python3.13; Hermes usa /vercel/sandbox de forma predeterminada como raíz del espacio de trabajo remoto». En v2026.8.31, el paquete tools/environments/ también contiene infraestructura compartida (base.py con la ABC BaseEnvironment, file_sync.py, modal_utils.py, managed_modal.py); el docstring del paquete considera Modal administrado como un modo de Modal, no como un octavo backend: «Modal también tiene modos directo y administrado por Nous, seleccionados mediante terminal.modal_mode». ↩↩↩

  25. Cantidad de plataformas de mensajería en la etiqueta v2026.8.31 (verificada nuevamente para la versión 1.17 de la guía; idéntica a v2026.8.31: 28 filas en la tabla de documentación, los mismos 24 miembros del enum Platform y los mismos 22 directorios de adaptadores). La página de documentación de Messaging Gateway (fuente website/docs/user-guide/messaging/index.md en la etiqueta) incluye una tabla de «Comparación de plataformas» con 28 filas: Telegram, Discord, Slack, Google Chat, WhatsApp, WhatsApp Cloud API, Signal, SMS, Email, Home Assistant, Mattermost, Matrix, DingTalk, Feishu/Lark, WeCom, WeCom Callback, Weixin, BlueBubbles, Photon (iMessage), QQ, Yuanbao, Microsoft Teams, LINE, ntfy, Raft, IRC, Buzz y SimpleX. gateway/config.py define class Platform(Enum) con 24 miembros explícitos (local, telegram, discord, whatsapp, whatsapp_cloud, slack, signal, mattermost, matrix, homeassistant, email, sms, dingtalk, api_server, webhook, msgraph_webhook, feishu, wecom, wecom_callback, weixin, bluebubbles, qqbot, yuanbao, relay) y documenta: «Las plataformas de plugins usan miembros dinámicos creados bajo demanda mediante _missing_(), de modo que Platform("irc") funciona sin modificar este enum». El árbol plugins/platforms/ de la etiqueta contiene 22 directorios de adaptadores: a2a buzz dingtalk discord email feishu google_chat homeassistant irc line matrix mattermost ntfy photon raft simplex slack sms teams telegram wecom whatsapp. Descripciones de las plataformas: la página de ntfy, textualmente: «ntfy es un sencillo servicio de notificaciones de publicación-suscripción basado en HTTP. Funciona con el servidor público gratuito alojado en ntfy.sh o con cualquier instancia autoalojada… suscríbete a un tema desde la aplicación móvil de ntfy, envía mensajes al tema para hablar con el agente y recibe la respuesta en tu teléfono». La página de Buzz, textualmente: «El adaptador de Buzz conecta Hermes con una comunidad de Buzz —la plataforma de código abierto de Block para la colaboración entre personas y agentes, construida sobre el protocolo Nostr— y retransmite mensajes entre los canales de Buzz (o mensajes directos) y el agente. El tráfico saliente ejecuta externamente el binario buzz CLI… el entrante usa una suscripción nativa de Nostr WebSocket». Ambas páginas indican: «Ejecuta hermes gateway setup y elige… para seguir una guía paso a paso». ↩↩↩

  26. Cantidad de proveedores en la etiqueta v2026.8.31 (verificada nuevamente para la versión 1.17 de la guía; v0.21.0 CAMBIÓ estas cifras respecto de las 38 entradas estáticas, 37 directorios de plugins y 41 filas de documentación de v2026.8.31). hermes_cli/models.py declara CANONICAL_PROVIDERS: list[ProviderEntry] con 39 entradas estáticas (nous, fireworks, openrouter, moa, novita, lmstudio, anthropic, openai-codex, openai-api, alibaba, xai-oauth, xiaomi, tencent-tokenhub, tencent-tokenplan, nvidia, copilot, copilot-acp, huggingface, gemini, vertex, deepseek, xai, zai, kimi-coding, kimi-coding-cn, stepfun, minimax, minimax-oauth, minimax-cn, ollama-cloud, arcee, gmi, kilocode, opencode-zen, opencode-go, bedrock, azure-foundry, ai-gateway, qwen-oauth), seguidas del comentario «Amplía automáticamente CANONICAL_PROVIDERS con cualquier proveedor registrado en providers/ que aún no figure en la lista anterior. Basta con agregar plugins/model-providers// para mostrar un nuevo proveedor en el selector de modelos»; el bucle omite únicamente los tipos de autenticación oauth_device_code, oauth_external, external_process, aws_sdk, copilot y vertex (sin cambios). El árbol plugins/model-providers/ de la etiqueta contiene 39 directorios de proveedores (nebius-token-factory y router se agregaron durante el periodo de v0.21.0); los nueve que no tienen una entrada estática (actual, alibaba-coding-plan, commandcode, deepinfra, meta-ai, nebius-token-factory, opencode-free, router, upstage) se resuelven todos al tipo de autenticación api_key: siete declaran auth_type="api_key" explícitamente (incluidos ambos plugins nuevos), mientras que commandcode y opencode-free heredan auth_type: str = "api_key" de providers/base.py. La página de documentación de proveedores de IA (fuente website/docs/integrations/providers.md en la etiqueta) presenta en una tabla 45 proveedores con nombre, además de una fila «Endpoint personalizado» (filas agregadas desde v2026.8.31: Ramp Router, Nebius Token Factory, Tencent TokenPlan y Alibaba Cloud (Token Plan), citadas en 36); cada nombre de variable de entorno, slug de proveedor, alias y nota de autenticación de las nuevas filas de la matriz se cita de esa tabla, incluidos «OpenCode Free | Sin clave: no se necesita ninguna clave API ni cuenta (proveedor: opencode-free, alias: free, opencode_free). Selecciónalo mediante hermes model o /model free; las solicitudes se envían de forma anónima», «Google Vertex AI | … OAuth2 mediante una JSON de cuenta de servicio o ADC; requiere facturación de GCP», «AWS Bedrock | … cadena estándar de credenciales de AWS mediante boto3» y «CommandCode | … Funciona con los planes GOAT/Pro/Max/Provider (no con el plan Go de USD 1, que no incluye acceso a API)». La fila de Meta AI proviene del bloque de claves API de primera clase de la misma página: «Meta Model API (familia Muse Spark)… hermes chat --provider meta-ai --model muse-spark-1.2… Requiere: MODEL_API_KEY». Cerebras solo aparece en la tabla «Otros proveedores compatibles» de la página (https://api.cerebras.ai/v1, «inferencia mediante chips a escala de oblea»), por lo que figura bajo la fila de endpoint personalizado y no como proveedor de primera clase. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  27. Superficie de CLI en la etiqueta v2026.8.31 (verificada nuevamente para la guía v1.17; las cadenas de ayuda citadas de las opciones globales y todos los datos de _BUILTIN_SUBCOMMANDS no han cambiado desde v2026.8.31: el frozenset es idéntico, con 73 entradas; mientras que hermes_cli/_parser.py solo cambió dentro de hermes chat, como se documenta en 40). Las opciones globales y sus cadenas de ayuda provienen de hermes_cli/_parser.py: --in (“Cambiar a DIR antes de iniciar o reanudar. Al combinarse con ‘–resume latest’ o -c, se selecciona la sesión más reciente del espacio de trabajo de DIR y la sesión permanece en DIR (se omite la restauración del cwd registrado).”), --ignore-user-config (“Ignorar ~/.hermes/config.yaml y recurrir a los valores predeterminados integrados (las credenciales de .env se siguen cargando)”), --ignore-rules (“Omitir la inyección automática de AGENTS.md, SOUL.md, .cursorrules, memoria y skills precargados”), --tui (“Iniciar la TUI moderna en lugar del REPL clásico”), --cli (“Forzar el REPL clásico de prompt_toolkit (anula display.interface=tui)”), --dev (“Con –tui: ejecutar las fuentes de TypeScript mediante tsx (omitir la compilación de dist)”) y --version/-V (“Mostrar la versión y salir”). hermes_cli/_startup_fast.py aplica la ruta rápida únicamente a argv in (["--version"], ["-V"]), y el frozenset _BUILTIN_SUBCOMMANDS de hermes_cli/main.py no contiene ninguna entrada version; la referencia de comandos de CLI documenta hermes --version (“Mostrar información de la versión”) y no hermes version. Las descripciones de los comandos corresponden a las cadenas help= del analizador en hermes_cli/main.py y hermes_cli/subcommands/*.py de la etiqueta (por ejemplo, approvals: “Herramientas de solicitud de aprobación (extraen del historial propuestas para la lista de permitidos)”; pause: “Parada de emergencia: pausar la ejecución de cron/kanban y los nuevos turnos del gateway”; sync: “Sincronización de skills: sincroniza tus skills entre dispositivos y con tu equipo”; verify: “Detectar la receta de ejecución de un proyecto y someterla a una prueba básica”; login: “Obsoleto. Usa hermes auth para administrar las credenciales, hermes model para seleccionar un proveedor o hermes setup para realizar la configuración completa.”), cotejadas con la tabla de comandos de nivel superior de la documentación. hermes update --plan aparece en hermes_cli/subcommands/update.py: “Mostrar el plan de actualización y salir sin cambiar nada: tipo de instalación (git/docker/nix), todos los servicios de Hermes en ejecución en todos los profiles, junto con su supervisor y la versión del código en ejecución, y cómo se reiniciará cada uno. Solo lectura; es seguro usarlo en una flota activa.”; no existe ningún comando fleet en _BUILTIN_SUBCOMMANDS. hermes worktree está registrado en hermes_cli/main.py (ayuda: “Auditar y recuperar worktrees de git acumulados y ramas fusionadas”) con list (alias ls, audit; “Clasificar cada árbol: antigüedad, tamaño, veredicto y motivo [acción predeterminada]”), prune (“Eliminar árboles seguros y borrar ramas locales completamente fusionadas”), --repo, --dry-run (“Mostrar el plan sin cambiar nada”), --trees-only (“Eliminar únicamente los worktrees; no modificar las ramas locales”) y --branches-only (“Eliminar únicamente las ramas locales fusionadas; no modificar los worktrees”). El comando slash /worktree es _handle_worktree_command en hermes_cli/cli_commands_mixin.py (bloque de sintaxis: /worktree, /worktree new [name], /worktree list, /worktree prune [--dry-run]); la sección “Limpieza de worktrees” de la guía del usuario de CLI agrega: “Dentro de una sesión, /worktree prune [--dry-run] hace lo mismo (y nunca modifica el árbol en el que se está ejecutando la sesión).” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  28. Comandos de Nous Portal en la etiqueta v2026.8.31 (verificados nuevamente para la guía v1.17; hermes_cli/portal_cli.py es idéntico byte por byte a su versión de v2026.8.31). El README de la etiqueta, en la sección “Omitir la recopilación de claves de API: Nous Portal”, indica: “Un solo comando desde una instalación nueva: hermes setup --portal… Esto inicia tu sesión mediante OAuth, establece Nous como proveedor y activa Tool Gateway. Puedes comprobar en cualquier momento qué está conectado con hermes portal info.” hermes_cli/portal_cli.py registra portal (ayuda: “Configurar Nous Portal [inicio de sesión, selección de modelo y Tool Gateway]; consulta también portal info”) con login (“Iniciar sesión en Nous Portal y configurarlo [opción predeterminada; incorporación en un solo paso]”), info (“Mostrar un resumen de la autenticación de Portal y del enrutamiento de Tool Gateway”), open (“Abrir la página de suscripción de Portal en tu navegador predeterminado”), tools (“Enumerar las herramientas de Tool Gateway e indicar cuáles se enrutan mediante Nous”) y el comentario de código “status se conserva como un alias oculto y retrocompatible de info.” La página de documentación de Tool Gateway muestra hermes setup --portal # Fresh install: Nous OAuth + set Nous as provider + turn on the Tool Gateway in one go y hermes portal info # Portal auth + Tool Gateway routing summary; la referencia de comandos de CLI de la misma etiqueta aún documenta hermes portal [status|open|tools]. ↩↩↩

  29. Comparación de GitHub de API, NousResearch/hermes-agent, v2026.8.19...main, obtenida el 26 de agosto de 2026: ahead_by: 1104, behind_by: 0. La página de versiones de API enumera v2026.8.19 (Hermes Agent v0.20.5, publicada el 2026-08-21T12:16:39Z) como la etiqueta más reciente, cuyas notas indican: “Las notas de la versión completas y seleccionadas para este periodo se publicarán con v0.21.0, que documentará todo a partir de v0.20.0.” Se volvió a comprobar el 27 de agosto de 2026 con la nueva etiqueta: v2026.8.27...main devuelve ahead_by: 0, behind_by: 0, status: identical; ahora main coincide exactamente con la etiqueta v0.20.6. ↩↩

  30. Notas de la versión Hermes Agent v0.20.6 (etiqueta v2026.8.27, fecha de lanzamiento indicada: 27 de agosto; publicada el 2026-08-27T12:06:53Z; obtenida mediante la GitHub de API el 27 de agosto de 2026; versión preliminar: false). Presentación textual: “Versión de parche. Esta etiqueta reúne las aproximadamente 525 PR fusionadas desde v0.20.5 en una versión estable etiquetada para consumidores posteriores (imágenes de Docker, implementaciones alojadas e instalaciones nuevas).” Descripción textual del periodo: “Desde v0.20.5 (v2026.8.19, etiquetada el 21 de agosto), este periodo incorporó aproximadamente 1.313 commits en unos 1.557 archivos (+177.113 / -21.682): alrededor de 525 PR fusionadas, incluida la navegación con profiles reales sujeta a consentimiento (usa tu profile predeterminado de Chromium para la navegación local, con un flujo de cierre con aprobación en Windows); el Browser de escritorio obtuvo su propia ventana del sistema operativo, además de un motor administrado de actualizaciones remotas de SSH y un selector de profiles de flota; una gran expansión del catálogo remoto de MCP (más de 50 servidores alojados por proveedores y verificados en producción, incluidos Cloudflare, Grafana Cloud, Better Stack y Railway); almacenamiento en caché de resultados con TTL para web_search/web_extract; compresión lean-tail como opción predeterminada; tool_search con múltiples consultas y stemming; cifrado opcional mediante el llavero del sistema operativo para los secretos almacenados (sin más solicitudes del Llavero de macOS en cada inicio); los actualizadores ahora pausan los gateways mediante el socket de control en lugar de finalizar sus árboles de procesos; las instalaciones administradas mediante imágenes o paquetes rechazan las actualizaciones inseguras en el lugar (#91277, fase 3); confirmaciones de incidentes persistentes de cron y errores más claros ante divergencias de código; controles para las vistas previas de enlaces de Slack; identidades compartidas de contenedores de Docker; backends conectables para entornos de terminal; y nuevos modelos en los selectores (GLM-5.3-Flash, MiniMax M3 gratuito y MiniMax H3 Max video).” La versión reitera: “Las notas de la versión completas y seleccionadas para este periodo se publicarán con v0.21.0, que documentará todo a partir de v0.20.0: aspectos destacados, áreas funcionales y créditos completos de los colaboradores. No se omite nada de este periodo.” ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  31. Compresión en la etiqueta v2026.8.31, verificada nuevamente en v2026.8.31 para la versión 1.17 de la guía: tail_mode: str = "lean", la validación ("legacy", "lean"), el valor predeterminado "lean" de agent_init, la migración de la versión 17 de la configuración y la nota sobre el comentario auxiliar desactualizado que aparece más adelante siguen vigentes en la nueva etiqueta (context_compressor.py incorporó una ruta de reintento para resúmenes fijados que no modifica ninguno de los valores predeterminados citados). agent/context_compressor.py establece tail_mode: str = "lean" como valor predeterminado en ContextCompressor.__init__, con el comentario «Modo de cola lean (#compaction-v2): ‘lean’ = cola de actividad reciente pequeña y limitada + sección de resumen con los mensajes literales del usuario + punteros de recuperación; ‘legacy’ = cola de 0.20window (comportamiento distribuido)» y la validación self.tail_mode = tail_mode if tail_mode in ("legacy", "lean") else "lean". agent/agent_init.py lee compression.tail_mode con el valor predeterminado "lean"; su comentario cuantifica ambos modos: «’lean’ (predeterminado) conserva una cola literal limitada del 2,5 %/10K-25K con mecanismos de punteros de recuperación… ‘legacy’ restablece la cola literal de 0.20threshold anterior a #87326, que en configuraciones con ventanas grandes o umbrales elevados acumula entre 100K y 240K tokens por compactación». La página de documentación sobre configuración (cuyo archivo fuente en la etiqueta es website/docs/user-guide/configuration.md) muestra el bloque compression: con enabled, threshold: 0.50, threshold_tokens: null, target_ratio: 0.20, tail_mode: lean (anotado en v2026.8.31: «’lean’ (predeterminado: cola limitada del 2,5 %, entre 10K y 25K, con un registro detallado de la sesión + índice de anclajes + punteros de recuperación de session_search en el resumen, todo generado mediante UNA sola llamada al resumidor auxiliar; aproximadamente 3 veces menos tokens retenidos después de la compactación) o ‘legacy’ (cola literal de 0.20×threshold)»), protect_last_n: 20 y protect_first_n: 3; coloca los parámetros del resumidor bajo auxiliary.compression (model, provider, base_url) y señala: «Las configuraciones antiguas con compression.summary_model, compression.summary_provider y compression.summary_base_url se migran automáticamente a auxiliary.compression.* durante la primera carga (versión 17 de la configuración). No es necesaria ninguna acción manual». La migración corresponde a _migrate_to_17 en hermes_cli/config_migrations.py («Versión 16 -> 17: eliminar las claves heredadas compression.summary_»). La página para desarrolladores sobre la compresión del contexto (cuyo archivo fuente en la etiqueta es website/docs/developer-guide/context-compression-and-caching.md) incluye tail_mode en una tabla con el valor predeterminado lean, afirma «Resultado en sesiones reales de 500K tokens: ~49K retenidos frente a ~162K» y «Los resultados antiguos de herramientas dentro de la cola lean se reducen a fragmentos de una sola línea que incluyen un puntero de recuperación», además de incluir la advertencia sobre el modelo de resumen (en v2026.8.31): «El modelo de resumen debe tener una ventana de contexto al menos tan grande como la del modelo del agente principal. […] Luego, el compresor descarta los turnos intermedios sin un resumen, con lo que pierde silenciosamente el contexto de la conversación». (Hay un punto desactualizado en el proyecto original: en la página de configuración, la sección «Referencia completa de la configuración auxiliar» todavía describe el espacio auxiliary.compression como «Tiempo de espera de la compresión del contexto (independiente de la configuración compression.)»; el código de migración, el selector interactivo de componentes auxiliares de hermes model y la propia sección de compresión de la página son las fuentes más recientes y coincidentes). ↩↩↩↩↩↩↩

  32. Backends de terminal conectables en la etiqueta v2026.8.31 (verificados nuevamente para la versión 1.17 de la guía; agent/terminal_env_registry.py es idéntico byte por byte a su versión de v2026.8.31). Docstring del módulo agent/terminal_env_registry.py, literalmente: «Mapa central de backends de terminal conectables registrados. Los plugins lo completan durante la carga mediante PluginContext.register_terminal_environment_provider; tools.terminal_tool._create_environment lo consume» y «Los nombres de backends integrados están reservados: register_provider rechaza cualquier proveedor cuyo nombre coincida con uno de ellos, por lo que un plugin nunca puede suplantar las implementaciones docker/modal/… incluidas en el repositorio»; deliberadamente, «aquí no se determina el proveedor activo: el backend activo es el que indiquen TERMINAL_ENV / terminal.backend, exactamente igual que con los backends integrados». Su frozenset BUILTIN_BACKEND_NAMES contiene los siete backends, además del alias managed_modal para el modo interno: local, docker, singularity, modal, managed_modal, daytona, vercel_sandbox, ssh. La nueva página de documentación Plugins de proveedores de entornos de terminal (cuyo archivo fuente en la etiqueta es website/docs/developer-guide/terminal-environment-plugin.md), literalmente: «Hermes ejecuta comandos de shell mediante un conjunto conectable de backends de terminal. Los backends integrados (local, Docker, Singularity, Modal, Daytona, Vercel Sandbox, SSH) se encuentran en el repositorio principal, bajo tools/environments/. En cambio, los proveedores externos de entornos aislados se integran como plugins: un repositorio de plugin independiente instalado en ~/.hermes/plugins/ que registra un backend que el usuario selecciona exactamente como uno integrado mediante terminal.backend en config.yaml»; presenta en una tabla las superficies que controla un proveedor registrado (envío de comandos, selector de backend de hermes setup, estado de sondeo del panel, comprobaciones de hermes status/hermes doctor, indicaciones sobre el entorno en el prompt del sistema, manejo de rutas del contenedor/directorio de trabajo, eliminación de secretos y aislamiento del entorno por sesión) y declara el objetivo de diseño: «Declarar estos indicadores en el proveedor elimina la clásica categoría de errores donde “el nuevo backend no se incluyó en el punto de clasificación N”: el núcleo consulta el registro en cada punto, en lugar de una lista de nombres codificada de forma rígida». ↩↩↩

  33. Revisión de verificación en la etiqueta v2026.8.31 (versión 1.17 de la guía). Idiomas: el árbol locales/ contiene 17 catálogos de mensajes: en.yaml más 16 traducciones (af, ar, de, es, fr, ga, hu, it, ja, ko, pt, ru, tr, uk, zh-hant, zh), idénticos a los de v2026.8.27. Personalidades: BUILTIN_PERSONALITIES en hermes_cli/personality.py conserva las mismas 14 entradas, desde helpful hasta hype (helpful, concise, technical, creative, teacher, kawaii, catgirl, pirate, shakespeare, surfer, noir, uwu, philosopher, hype); el archivo es idéntico byte por byte a su versión de v2026.8.27. Cantidades que CAMBIARON en la etiqueta: 39 entradas estáticas de CANONICAL_PROVIDERS (antes eran 38) y 39 directorios en plugins/model-providers/ (antes eran 37); consulta 26 y 36. Cantidades sin cambios: 24 miembros del enum Platform (la lista de miembros es idéntica en gateway/config.py, que solo incorporó un campo de gateway room_link_url), 22 directorios de adaptadores en plugins/platforms/ y 28 filas en la tabla comparativa de plataformas de la documentación; _BUILTIN_SUBCOMMANDS conserva las mismas 73 entradas (peer y worktree siguen presentes, aún no hay version ni approval-check, que es el nombre usado en las notas de la versión para hermes approvals test); hermes_cli/_startup_fast.py y hermes_cli/portal_cli.py son idénticos byte por byte a sus versiones de v2026.8.27. ↩↩↩↩

  34. Enrutamiento del modelo auxiliar en la etiqueta v2026.8.31 (verificado de nuevo para la guía v1.17; el bloque de valores predeterminados "auxiliary" de la nueva etiqueta contiene la misma lista de ranuras, notas de eliminación y configuraciones que no corresponden a ranuras, y las citas de la documentación que aparecen a continuación se mantienen textualmente). La página de documentación sobre configuración (fuente website/docs/user-guide/configuration.md en la etiqueta) indica textualmente: «De forma predeterminada (auxiliary.*.provider: "auto"), Hermes enruta cada tarea auxiliar a tu modelo de chat principal: el mismo proveedor y modelo que elegiste en hermes model. No necesitas configurar nada para comenzar, pero ten en cuenta que, con modelos de razonamiento costosos (Opus, MiniMax M2.7, etc.), las tareas auxiliares generan un costo considerable»; su nota «Por qué ‘auto’ usa tu modelo principal» explica: «Las versiones anteriores asignaban a los usuarios de agregadores (OpenRouter, Nous Portal) un modelo predeterminado económico del proveedor. Esto resultaba inesperado: quienes pagaban una suscripción a un agregador veían que un modelo diferente gestionaba su tráfico auxiliar. Ahora, auto usa el modelo principal para todos, mientras que las anulaciones por tarea en config.yaml siguen teniendo prioridad»; y, sobre la extracción web: «(La extracción web no es una tarea auxiliar: web_extract y las instantáneas del navegador truncan el contenido extenso de manera determinista y almacenan el texto completo para paginarlo con read_file; no interviene ningún LLM.)» La lista oficial de ranuras se encuentra en el bloque de valores predeterminados "auxiliary" de hermes_cli/config_defaults.py en la etiqueta: vision, compression, skills_hub, approval, review, mcp, title_generation, memory_query_rewrite, tts_audio_tags, triage_specifier, kanban_decomposer, profile_describer, goal_judge, curator, monitor, background_review, moa_reference y moa_aggregator (además de las configuraciones que no corresponden a ranuras transient_retries, free_only, openrouter_model y stream_only_base_urls); las ranuras incluyen provider, model, base_url, api_key, timeout, extra_body y un valor de reasoning_effort por tarea. Las notas de eliminación del mismo archivo indican textualmente: «web_extract ya no usa un LLM auxiliar: las páginas se truncan y almacenan con un puntero de read_file (sin resumen), y las instantáneas del navegador siguen el mismo patrón. El antiguo bloque auxiliary.web_extract.* se eliminó de aquí. Los valores existentes en los archivos config.yaml de los usuarios son residuos inofensivos y se ignoran» y «session_search ya no usa un LLM auxiliar (PR #27590: la herramienta con una única estructura devuelve directamente el contenido de la base de datos)»; el bloque no contiene ninguna clave flush_memories. Las descripciones breves de las ranuras son los comentarios del mismo archivo («Especificador de clasificación: convierte una idea preliminar de una sola línea en la columna Kanban Triage en una especificación concreta y luego la promueve a todo. Se invoca mediante hermes kanban specify»; «Descomponedor de Kanban: descompone una tarea de clasificación en un grafo de tareas secundarias que se enrutan a profiles especializados según su descripción. Se invoca mediante hermes kanban decompose y el despachador de descomposición automática de kanban»; «Descriptor de profile: genera automáticamente una descripción de 1 o 2 oraciones sobre aquello para lo que resulta adecuado un profile. Se invoca mediante hermes profile describe <name> --auto y el botón de generación automática del panel»; «Evaluador de objetivos: determina si la respuesta más reciente de una ejecución de /goal satisface el objetivo o contrato»; «Curador: bifurcación de revisión del uso de skills»; «Revisión en segundo plano: bifurcación de mejora automática posterior al turno que decide si se debe guardar una memoria o corregir una skill»), los comentarios de referencia completa de la página de configuración («Inserción oculta de etiquetas de audio para TTS de Gemini 3.1»; «Títulos de sesión generados automáticamente. Si el idioma está vacío, se usa el de la conversación»; auxiliary.title_generation.enabled: false desactiva los títulos automáticos) y la tabla de configuración de la página de documentación de Kanban («auxiliary.kanban_decomposer | Modelo que genera el grafo de tareas (lo invoca Decompose)»; «auxiliary.profile_describer | Modelo que genera automáticamente las descripciones de los profiles (lo invoca hermes profile describe --auto)»). Ruta interactiva: ejecuta hermes model y elige «Configurar modelos auxiliares» para acceder a un selector por tarea (vision, title_generation, tts_audio_tags, compression, approval, triage_specifier, kanban_decomposer, profile_describer, delegation); la entrada Delegation se guarda en delegation.* en el nivel superior porque los subagentes «son agentes secundarios completos, no llamadas laterales a LLM». ↩↩↩↩↩↩↩↩↩↩↩

  35. Notas de la versión Hermes Agent v0.21.0, «The Pantheon Release», etiqueta v2026.8.31, con fecha de lanzamiento declarada del 31 de agosto y publicada el 2026-08-31T19:29:49Z. Línea de estadísticas textual: «Desde v0.20.0: ~5.800 commits · ~2.475 PR fusionadas · ~5.680 archivos modificados · ~869.000 inserciones · ~135.000 eliminaciones · ~2.100 incidencias cerradas · más de 760 colaboradores». Presentación textual: «The Pantheon Release. v0.20.0 convirtió a Hermes en el heraldo: hablaba y transmitía mensajes a otros agentes. En v0.21.0, los dioses se reúnen» y «Esta versión reúne todo lo incluido en las etiquetas de parches de infraestructura v0.20.1-v0.20.6; esos periodos están documentados íntegramente aquí». Citas textuales por área funcional utilizadas anteriormente: Bot Mode: «Bot Mode ahora es una parte integrada y activada de forma predeterminada en la aplicación de escritorio: cada profile de agente recibe un nombre, un rostro de avatar determinista (con controles para aleatorizarlo o bloquearlo) y un lugar en una lista compartida» y «Antes, “multiagente” se refería a la infraestructura; ahora parece una aplicación de chat llena de compañeros de trabajo» (#87886, #88243, #89386, #96726); hermes peer: «Las respuestas llegan al Bot Chat canónico de cada agente, por lo que las conversaciones entre agentes son duraderas y se pueden inspeccionar; no se envían para luego olvidarlas» (#88725, #88178, #91487); cron: «continuity=true transfiere el resultado de cada ejecución a la siguiente (para que un monitor pueda eliminar duplicados basándose en lo que ya informó), cada trabajo recibe un bloc de notas duradero y los trabajos en modo monitor omiten por completo el LLM cuando no ha cambiado nada» (#91447, #80774, #81139, #81138); delegation: «consulta los agentes secundarios en ejecución, reorienta uno mientras trabaja mediante una corrección de rumbo o detenlo antes y conserva el resultado parcial. Añade validación opcional del esquema JSON a los resultados de los agentes secundarios, muestra en los resultados el costo de cada delegación y aumenta los valores predeterminados (250 iteraciones y 10 agentes secundarios simultáneos)» (#85232, #81144, #81142, #86506, #86745); MCP: «enlaces profundos hermes:// que instalan un servidor MCP con confirmación explícita» (#87525-#87581); CLI: «Ctrl+P abre una paleta de comandos con búsqueda aproximada, el selector /model filtra conforme escribes, /status muestra el modo de razonamiento, las aprobaciones pendientes y el uso del contexto, y la barra de estado puede mostrar en tiempo real el porcentaje de aciertos de caché, la latencia y los tokens por segundo, con controles individuales para cada campo» (#90730, #90717, #90745, #98250, #98282, #97666); navegador: «Hermes ahora navega, hace clic y lee directamente» (#90197, #89366); proveedores: «Meta Model API (Muse Spark) llega como proveedor integrado, junto con CommandCode, Tencent TokenPlan, Nebius Token Factory, Ramp Router y Actual Computer» (#88565, #88308, #97917, #97916, #97915 y recuperación de #79644/#26491); seguridad: «Los archivos protegidos con instrucciones para agentes (AGENTS.md, skills y almacenes de memoria) ahora siempre requieren aprobación para modificarse, de modo que un agente afectado por una inyección de prompts no pueda reescribir silenciosamente sus propias instrucciones permanentes» (#81152), además de la revisión de ocultamiento de datos (#80965), la cobertura de aprobaciones en Windows (#84428), la identidad TCC (#95091) y la eliminación de MCP de Blender (#83404). Sección de cambios revertidos, textualmente: «Modo Model Council (/council): se incorporó y luego se revirtió; no está incluido en esta versión»; «Context engine DCP: se incorporó y luego se revirtió; no está incluido en esta versión»; «Servidor gateway solo para WS (#94245): se fusionó y luego se revirtió (#96118); FastAPI permanece en la ruta de arranque de la aplicación de escritorio. La reproducción de eventos con sellos de secuencia (#94219) SÍ se incluyó»; «Electron volvió a la versión 40.10.2; se eliminó el anclaje del intérprete TCC (sustituido por el método basado en la identidad de firma que sí se incluyó)». La sección de correcciones de errores concluye: «…y aproximadamente dos mil incidencias cerradas más; durante este periodo se fusionaron alrededor de 85 PR al día». ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  36. Nuevos proveedores en la etiqueta v2026.8.31. hermes_cli/models.py incorpora ProviderEntry("tencent-tokenplan", "Tencent TokenPlan", "Tencent TokenPlan (Hy4 preview via api.lkeap.cloud.tencent.com, Anthropic Messages)") (entrada estática n.º 39), los modelos de catálogo hy4-preview, hy3, hy3-preview y un grupo del selector solo para visualización: "tencent": ("Tencent Hy", "Hy4 / Hy3 via TokenHub & TokenPlan", ["tencent-tokenhub", "tencent-tokenplan"]). plugins/model-providers/ incorpora nebius-token-factory/ y router/; ambos declaran auth_type="api_key", por lo que la extensión automática los incorpora. El docstring del complemento router dice textualmente: “Perfil de proveedor para Ramp Router, el gateway de LLM de Ramp: un endpoint compatible con OpenAI Responses en https://api.router.com/v1 que distribuye cada solicitud entre proveedores ascendentes (OpenAI, Anthropic, xAI, Fireworks, …) y gestiona del lado del servidor los mecanismos de respaldo y los controles de gasto” … “Responses API es el protocolo nativo.” … “Los identificadores de modelo válidos son los que devuelva GET /v1/models para la clave (las cuentas BYOK ven entradas adicionales), por lo que este perfil no incluye fallback_models: el selector depende de la consulta en vivo, conforme a la recomendación de Router de nunca codificar los nombres de los modelos de forma fija”. En la etiqueta, la página de documentación sobre proveedores de IA enumera 45 proveedores con nombre, además de la fila Custom Endpoint; estas son, textualmente, las cuatro filas añadidas desde v2026.8.27: “Ramp Router | RAMP_ROUTER_API_KEY en ~/.hermes/.env (proveedor: router; alias: ramp-router, ramp, router.com; gateway nativo de Responses, catálogo en vivo limitado al ámbito de la cuenta)”; “Nebius Token Factory | NEBIUS_API_KEY en ~/.hermes/.env (proveedor: nebius-token-factory; alias: nebius, nebius-tf, tokenfactory)”; “Tencent TokenPlan | TOKENPLAN_API_KEY en ~/.hermes/.env (proveedor: tencent-tokenplan, alias: tokenplan, tencent-lkeap; endpoint de Anthropic Messages)”; “Alibaba Cloud (Token Plan) | ALIBABA_TOKEN_PLAN_API_KEY en ~/.hermes/.env (proveedor: alibaba-token-plan; endpoint para China continental: alibaba-token-plan-cn) - nivel de tokens de tarifa plana de Model Studio”. model_overrides se encuentra en hermes_cli/config_defaults.py en la etiqueta ("model_overrides": {}; las entradas explícitas model_overrides.<provider>.<model_id> tienen prioridad sobre el catálogo, mientras que las entradas _default solo completan los campos faltantes de los modelos que el catálogo no cubre). ↩↩↩↩↩↩↩↩

  37. Continuidad de cron en la etiqueta v2026.8.31. La página de documentación de cron (fuente website/docs/user-guide/features/cron.md en la etiqueta) dice textualmente: “Configura continuity=true y el trabajo incorporará en cada ejecución su propio resultado más reciente. Por lo general, los trabajos recurrentes comienzan cada ejecución sin memoria: un rastreador de noticias vuelve a informar sobre las mismas historias y un monitor vuelve a alertar sobre la misma condición. Con la continuidad activada, el trabajo despierta sabiendo qué informó la última vez, por lo que puede eliminar duplicados y continuar desde donde se quedó”; “En las ejecuciones posteriores, el resultado anterior se antepone con indicaciones de continuidad (‘evita repetir lo que ya se informó’) … Internamente, la opción se almacena como la entrada reservada self en context_from.”; “Desde CLI: hermes cron create "every 6h" "Scan for news" --continuity, y hermes cron edit <job_id> --continuity / --no-continuity para activarla o desactivarla en un trabajo existente. El mismo control aparece en el editor de cron del panel y en el cuadro de diálogo de rutinas de Bot Mode de la aplicación de escritorio.” Esfuerzo por trabajo, textualmente: “Un trabajo puede fijar su propio nivel de razonamiento, independientemente del modelo fijado: uno de none, minimal, low, medium, high, xhigh, max, ultra. Cuando se configura, sustituye tanto agent.reasoning_effort global como agent.reasoning_overrides por modelo durante las ejecuciones de ese trabajo”; se configura mediante hermes cron create/edit --reasoning-effort high. Entrega mediante Bot Chat, textualmente: “bot-chat entrega el resultado en la sesión canónica “Bot Chat” de un profile como un mensaje real … en este caso, el destinatario es el propio bot: recibe el resultado como mensaje entrante, actúa sobre todo lo que requiera una acción y responde en su chat.” Notepads: el docstring del módulo cron/notepad.py: “Un pequeño bloc de notas KV que cada trabajo cron puede usar para conservar el estado entre activaciones programadas (cursores, marcas de agua, listas de seguimiento)”, con límites de “MAX_VALUE_BYTES (16 KB)” y “MAX_JOB_TOTAL_BYTES (64 KB)” (“el notepad se inyecta en el prompt durante cada ejecución, por lo que un crecimiento ilimitado inflaría el prompt de cada activación”), y “La ruta de escritura es CLI (hermes cron notepad <job_id> set <key> <value>), que el agente en ejecución invoca mediante su herramienta de terminal; no se añade ninguna herramienta de modelo.” Modo de monitorización: el docstring de cron/monitor.py: “Compatibilidad de cron con el modo de monitorización: detección de cambios con supresión mediante hash”, que adjunta una “fuente de monitorización económica (monitor_script o monitor_url)”; “sin cambios -> la ejecución del agente se omite por completo (sin LLM, sin entrega); la activación se registra como una ejecución silenciosa no_change”; “El resultado se compara como BYTES EXACTOS: no se eliminan marcas de tiempo ni se normalizan espacios en blanco. Los scripts de monitorización deben producir resultados estables … o cada activación parecerá un cambio.”; “habilitador: #80774.” ↩↩↩↩↩↩↩

  38. Orquestación en vivo de subagentes en la etiqueta v2026.8.31. La página de documentación sobre delegación (fuente website/docs/user-guide/features/delegation.md en la etiqueta), “Cómo dirigir un subagente en ejecución”: la superficie de control es {"action": "list"}, {"action": "steer", "subagent_id": "sa-0-1a2b3c4d", "message": "focus on pricing instead"}, {"action": "stop", "subagent_id": "sa-0-1a2b3c4d"}; textualmente: “list devuelve los subagentes activos de la conversación: subagent_id, objetivo, estado, running_seconds, accepting_steer y la ruta de la transcripción en vivo”; “stop finaliza anticipadamente un subagente en el siguiente límite de iteración; el resultado parcial vuelve a incorporarse a la conversación como un mensaje normal de finalización”; las acciones de control están “limitadas al árbol de subagentes creados por quien las invoca —una conversación nunca puede ver ni controlar los subagentes de otra sesión— y nunca consumen el límite de creación de subagentes por turno, por lo que stop sigue funcionando incluso después de alcanzar el límite”; la descripción de la entrega de instrucciones reconoce con transparencia la condición de carrera (“Estar en cola no significa que se haya entregado, pero nunca se informa falsamente que la operación tuvo éxito”; pending_steer se vuelca en los resultados y se marca missed_steer cuando un subagente termina primero). Valores predeterminados: hermes_cli/config_defaults.py establece delegation.max_iterations: 250 (“límite de iteraciones por subagente (cada subagente recibe su propio presupuesto, independiente del valor max_iterations del agente principal)”) y delegation.max_concurrent_children: 10 (“límite de concurrencia unificado: máximo de subagentes paralelos por lote Y máximo de unidades de delegación simultáneas en segundo plano (background=true) … (Sustituye al obsoleto max_async_children.)”). Queda un punto desactualizado en el repositorio original: la propia página de documentación sobre delegación todavía dice “3 tareas de forma predeterminada” y muestra “max_iterations: 50 … (valor predeterminado: 50)” en su referencia de configuración; el archivo config_defaults.py distribuido y las notas de la versión (“valores predeterminados aumentados (250 iteraciones, 10 subagentes simultáneos)”) son las fuentes más recientes y coincidentes. ↩↩

  39. Oleada de seguridad en la etiqueta v2026.8.31. Archivos de instrucciones protegidos: los valores predeterminados de hermes_cli/config_defaults.py incluyen security.protected_instruction_files: True (comentario: «Escrituras en archivos de instrucciones del agente (AGENTS.md/CLAUDE.md/SOUL.md/…)») junto con protected_instruction_extra_patterns: [] (fnmatch sobre el nombre base); tools/file_tools.py implementa el control —«Archivos de instrucciones del agente protegidos (control de aprobación que siempre pregunta)» sobre _PROTECTED_INSTRUCTION_BASENAMES = frozenset({"agents.md", "claude.md", "soul.md", ".cursorrules", ...})— y describe el modelo de amenazas, textualmente: «vector: una instrucción inyectada que edita AGENTS.md / CLAUDE.md / SOUL.md» y «los archivos de instrucciones del contexto del proyecto se cargan desde árboles de cwd; cualquier AGENTS.md ubicado en un lugar desde el que el agente pudiera ejecutarse posteriormente es un objetivo activo». Identidad de TCC: hermes desktop --setup-tcc-identity está implementado en hermes_cli/main.py —_desktop_macos_setup_tcc_identity(identity: str = "Hermes Local Signing"), «Configuración de una sola ejecución para hermes desktop --setup-tcc-identity»—, con las protecciones «(–setup-tcc-identity solo está disponible en macOS; se omite)» y «(–setup-tcc-identity requiere openssl, security y codesign …)». El barrido de ocultación de datos (#80965, #80964, #81675, #81686, #88232), la cobertura de aprobaciones en Windows (#84428), la eliminación de MCP de Blender (#83404) y el análisis de instalación de plugins de nivel 1 (#80728) se basan en las notas de la versión.35 ↩↩↩↩

  40. Cambios en la interfaz de CLI en la etiqueta v2026.8.31. COMMAND_REGISTRY en hermes_cli/commands.py registra CommandDef("palette", "Open the fuzzy command palette (also Ctrl+P)", "Info", ...) y CommandDef("status", "Show session, model, token, and context info", "Session", ...); /status es un comando de sesión del registro compartido, no exclusivo de mensajería. No existe ninguna entrada approval-check en _BUILTIN_SUBCOMMANDS (73 entradas, idénticas a v2026.8.27); la ejecución de prueba que las notas de la versión v0.21.0 denominan hermes approval-check (#81137) es hermes approvals test: la ayuda del analizador en hermes_cli/subcommands/approvals.py para esa etiqueta dice «Prueba el veredicto de aprobación de un comando sin ejecutarlo», con --backend («Tipo de backend de terminal con el que se evaluará (valor predeterminado: local …)») y --json. hermes_cli/_parser.py solo cambió dentro de hermes chat: la ayuda de -q/--query ahora dice «Consulta que se ejecutará. En una TTY real, el mensaje inicia una sesión interactiva (se envía literalmente como el primer turno); combinado con –oneshot o -Q, o en una interfaz que no sea TTY, responde y termina»; una nueva opción --oneshot indica «Con -q/–query-file: responde la consulta y termina (comportamiento heredado de consulta única), en vez de iniciar una sesión interactiva. Se da por sentado con una entrada/salida estándar que no sea TTY y mediante -Q/–quiet»; y --max-turns indica «Número máximo de iteraciones de llamadas a herramientas por turno de conversación (valor predeterminado: 500 o agent.max_turns en la configuración)». ↩↩↩↩↩↩↩↩↩

  41. Notas de la versión Hermes Agent v0.21.1, etiqueta v2026.9.7, fecha de lanzamiento declarada: 7 de septiembre; publicada el 7 de septiembre de 2026 a las 22:17 Z. El contenido es deliberadamente escueto; textualmente: una «versión de parche» que «reúne el estado actual de main desde v0.21.0 para las implementaciones etiquetadas y los consumidores posteriores»; estadísticas del intervalo al momento de la preparación: «5.139 commits sin fusión en 4.364 archivos modificados (+601.014 / -768.419)» y «632 PR fusionadas»; además, «Las notas de versión completas y seleccionadas para este intervalo se publicarán con v0.22.0». Comprobación en el clon local: git rev-list --count --no-merges v2026.8.31..v2026.9.7 = 5.140 y git diff --shortstat = +601.018 / -768.423; las cifras del contenido corresponden a la instantánea anterior al commit de lanzamiento, con una diferencia de exactamente el commit de lanzamiento. El mayor intervalo anterior entre etiquetas adyacentes es v2026.7.20..v2026.7.30, con 2.790 commits sin fusión (se midieron en el clon local todos los pares adyacentes desde v2026.3.12). La comprobación de doctor mencionada en la entrada de resolución de problemas se encuentra en hermes_cli/doctor_config.py:330-362 para esa etiqueta (_drift_max_iterations_ghost): un HERMES_MAX_ITERATIONS obsoleto en .env prevalece sobre agent.max_turns cuando el puente de inicio se detiene debido a un error previo de análisis de la configuración (incidencia #17534), y hermes doctor --fix elimina la línea de .env. Verificación de la sesión actual: 8 de septiembre de 2026. ↩↩↩↩↩

  42. COMPAT_MANIFEST.md en la etiqueta v2026.9.7 (raíz del repositorio, 3.869 líneas). Textualmente: «La descomposición de septiembre de 2026 (PR #102117) dividió los grandes módulos de Hermes Agent en archivos específicos»; «Las rutas de importación internas no son una API estable»; «Esta capa es temporal y se eliminará el 14 de septiembre de 2026. Se añadió mediante un único commit y se elimina revirtiendo ese commit»; la tabla de consecuencias (antes del 14 de septiembre de 2026: aviso amarillo que identifica el plugin, la fecha y hermes plugins compat; el plugin «se carga; cada resolución de una ruta antigua emite HermesPluginCompatWarning una vez»; desde el 14 de septiembre de 2026: «aviso rojo: plugin DESHABILITADO» y «no se carga; hermes plugins list muestra el motivo»; Desktop: «ventana modal que aparece una sola vez»); la vía de escape, textualmente: «plugins.allow_deprecated_imports: true en config.yaml mantiene cargados los plugins afectados después de la fecha, hasta que la reversión elimine realmente las rutas»; cantidades por tipo: moved-lazy 1148, import 592, restored-def 290, restored-helper 41, restored-import 17, module-stub 3 y unrestorable 34; alcance: solo nombres públicos de nivel superior; «Tampoco se conservan los puntos de enlace para monkeypatch de las pruebas». Analizador del comprobador en hermes_cli/subcommands/plugins.py:104-112: hermes plugins compat [path] [--json], cuya descripción textual es «Analiza estáticamente cada plugin externo habilitado para detectar importaciones de rutas de módulos anteriores a la descomposición (consulta COMPAT_MANIFEST.md) e imprime archivo:línea, ruta antigua -> ruta nueva. Termina con el código 1 cuando algún plugin está afectado». Estructura de la descomposición verificada en la etiqueta: agent/ = 214 módulos de nivel superior + 7 subpaquetes (lsp, monitoring, pet, proxy_sources, secret_sources, transports, verify), hermes_cli/subcommands/ = 61 módulos, CANONICAL_PROVIDERS en hermes_cli/models_catalog_static.py:311 con 39 entradas cuyos slugs son idénticos a la lista de v2026.8.31 en hermes_cli/models.py (incluida la tupla estática xai; plugins/model-providers/ todavía contiene 39 carpetas), el antiguo prompt_builder.py de nivel superior ya no existe (ahora es agent/prompt_builder.py) y run_agent.py sigue siendo la ubicación de AIAgent en la raíz. Situación posterior, verificada de nuevo para la versión 1.19 de la guía (15 de septiembre de 2026): la eliminación se activó según lo previsto mediante un control de fecha, no mediante una reversión; en la etiqueta v2026.9.14, hermes_cli/plugin_compat.py:32 establece COMPAT_REMOVAL_DATE = _dt.date(2026, 9, 14), removal_in_effect() (líneas 86-90) devuelve true a partir de esa fecha o cuando falta el archivo de manifiesto, y allow_deprecated_imports() (líneas 261-268) solo acepta un valor booleano literal (la condición es ... is True; comentario en el código fuente: «Solo booleanos literales», por lo que una cadena YAML como "false" o "no" nunca puede habilitar la excepción posterior a la eliminación). La reversión que elimina las rutas antiguas NO se ha integrado: COMPAT_MANIFEST.md, compat_manifest.json y hermes_cli/plugin_compat.py están presentes tanto en v2026.9.14 como en main, en el commit 5d59366010 (15 de septiembre de 2026 a las 12:55 PT, recuperado el mismo día), por lo que la vía de escape todavía resuelve las rutas antiguas; dejará de funcionar en cuanto se integre la reversión. Verificado de nuevo para la versión 1.20 de la guía (22 de septiembre de 2026): la reversión aún no se ha realizado; los 3 archivos están presentes en la etiqueta v2026.9.21 y en main, en el commit a53b42ddea (confirmado y recuperado el 22 de septiembre de 2026). En v2026.9.21, el control y la condición permanecen prácticamente sin cambios: COMPAT_REMOVAL_DATE sigue en plugin_compat.py:32, removal_in_effect() en :86 y allow_deprecated_imports() ahora está en :296-303 con la misma condición de booleano literal (... is True; el comentario ahora dice «Solo booleanos literales: YAML "false" / "no" no deben habilitar la excepción posterior a la eliminación»). Los únicos cambios realizados en el módulo durante el intervalo de v0.21.4 afectan el rendimiento y la portabilidad: una caché de análisis para todo el proceso, indexada mediante la firma de archivo (relpath, mtime_ns, size) de cada carpeta de plugin (un gateway multiplexado descubre los plugins una vez por cada profile servido, y volver a analizar el código fuente de todos los plugins añadía unos 0,4 s por profile a la ruta de arranque), además de rutas de resultados en formato POSIX en Windows nativo (#112576); el propio manifiesto también eliminó 2 filas relacionadas con opencode (_OPENCODE_KEYLESS_EXTRA_SLUGS, is_opencode_zen_free_model), sin ningún cambio estructural. ↩↩↩↩↩↩↩↩↩

  43. docs/session-lifecycle.md en la etiqueta v2026.9.7, sección «6. Límites explícitos de conversación», textualmente y en su totalidad: «La inactividad y el tiempo de reloj nunca rotan una conversación. /new y /reset crean un límite explícito; la compresión de contexto continúa gestionando historiales extensos. La configuración heredada del temporizador se ignora. El tipo de datos SessionResetPolicy existente contiene datos de compatibilidad inertes, no una política de tiempo de ejecución. La suspensión explícita sigue creando un límite en el siguiente turno entrante. La recuperación respeta los límites finalizados explícitos e históricos en lugar de volver a abrirlos. La expulsión exclusiva de recursos y la eliminación de elementos huérfanos de WebSocket permiten reanudar las conversaciones». ↩↩↩↩

  44. Autorización de MCP en la etiqueta v2026.9.7. Analizador: hermes_cli/subcommands/mcp.py:55-66: login («Forzar la reautenticación de un servidor MCP basado en OAuth») acepta --flow con las opciones browser/device; texto de ayuda literal: «Flujo de OAuth (anula oauth.flow): PKCE en el navegador o código de dispositivo RFC 8628»; reauth («Volver a autenticar un servidor MCP de OAuth, o todos ellos (–all)») acepta un nombre opcional, además de --all. El flujo de código de dispositivo se incorporó durante este periodo: commit f5afe8bd40 «feat: autorizar servidores MCP con códigos de dispositivo desde CLI». Refuerzos complementarios, según los asuntos de los commits realizados durante el periodo: f914c9b070 «fix(mcp): aplicar la propiedad del profile en todas las sesiones de OAuth»; f94307a7f7 «fix: ignorar cachés de metadatos de OAuth de MCP con formato incorrecto»; e3ba651b6d «fix(desktop): retransmitir OAuth de MCP mediante devoluciones de llamada locales del cliente». Inicio filtrado por toolset: tools/mcp_tool_discovery.py:412-426: el filtro existe para que «hermes -z -t <toolsets>» pueda «omitir el arranque en frío de servidores que el invocador no necesita», y un filtro vacío omite por completo la carga de MCP. ↩↩↩

  45. Confiabilidad de la delegación en la etiqueta v2026.9.7, consultada en el código fuente de la herramienta de delegación. Unidades de finalización: tools/delegate_tool_dispatch.py:326-341 (_units_of): textualmente: «Desactivado de forma predeterminada (delegation.independent_completions): toda la llamada constituye UNA unidad y se devuelve como un solo mensaje. Una avalancha de finalizaciones por tarea (un turno nuevo por cada una) fragmentaba los orquestadores que no estaban preparados para ello»; las unidades se asignan una por cada group de tareas distinto (en orden de aparición) y una por cada tarea sin agrupar, y cada una vuelve a incorporarse a la conversación por separado; commit realizado durante el periodo c89f3b8800 «fix(delegation): una finalización por llamada de forma predeterminada; las unidades en cola ya no quedan bloqueadas». Transferencia de procesos en segundo plano: commit 3c0d90e8ef «feat(delegation): los subagentes transfieren los procesos en segundo plano al agente principal; los procesos restantes se identifican, no se consideran confiables»; en la etiqueta, tools/delegate_tool_child_run.py:744-763 (account_background_processes) registra en el resultado los procesos transferidos, enumera como orphaned_processes aquellos que siguen en ejecución sin haberse transferido y como unread_completions aquellos que finalizaron pero nunca se leyeron (junto con la parte final de su salida), antes de que cleanup los cierre; según la docstring, el agente principal «debe enterarse de ello mediante el tiempo de ejecución» en vez de confiar en la afirmación de un agente secundario de que hay un «observador en ejecución»; el verbo de transferencia es process_manage(action="handoff") (solo para agentes secundarios), que cambia ProcessSession.owner_task_id bajo el bloqueo del registro mediante process_registry.transfer_ownership (tools/AGENTS.md, sección Delegation, en la etiqueta). Superficie de respaldo: delegation.fallback_providers en hermes_cli/config_defaults.py; comentario textual: «Para un agente secundario no fijado, null = heredar la cadena del agente principal; [] = desactivar el respaldo. Un agente secundario fijado por proveedor, endpoint o modelo no obtiene respaldo, salvo que esta configuración declare uno explícitamente»; validación de la cadena en tools/delegate_tool_config.py:417-425 (_resolve_child_fallback_chain): «El normalizador canónico descarta las entradas con formato incorrecto». Durabilidad ante fallos: tools/async_delegation.py:222-246 registra de forma duradera cada agente secundario finalizado de una unidad con varios agentes secundarios que aún sigue en ejecución, en la propia fila de la unidad ("partial": True), por lo que un fallo antes de que la unidad termine conserva los agentes secundarios finalizados. Nivel de caché: tools/delegate_tool.py:106-112 (_apply_child_cache_ttl), textualmente: «Un agente secundario delegado nunca utiliza el nivel de caché de 1 h»; si un agente secundario lleva _cache_ttl == "1h", se establece en "5m". ↩↩

  46. Proveedores y modelos en la etiqueta v2026.9.7. Niveles de Astra: hermes_cli/models_catalog_static.py:22-25: openai/gpt-6-astra-fast «precio 2x, nivel prioritario», -flex «precio 0,5x, nivel flex», además de -pro-fast/-pro-flex; gpt-6-astra y -pro se encuentran en OPENROUTER_MODELS y no forman parte del conjunto de exclusión _OPENROUTER_ONLY, por lo que Nous Portal también los ofrece. Restricción de acceso de Astra y 900K: hermes_cli/codex_models.py:96-101 («El acceso a Astra depende de la cuenta: solo el catálogo activo asociado a la cuenta puede anunciarlo») y agent/model_metadata.py:1447-1462: Codex OAuth anuncia 272K, gpt-6-astra admite 900K, con el comentario «se anuncian 272K; una entrada de 920.043 se acepta y una de 1.000.043 se rechaza (en producción, 2026-09-04)», y CODEX_CONTEXT_VARIANT_SUFFIX = "-900k" es un «sufijo de activación exclusiva del selector; nunca se envía por la conexión» (el contexto de Astra en OpenRouter es de 1.050.000, según model_metadata.py:334). Nuevas entradas del catálogo en el mismo archivo estático (líneas 30-42): anthropic/claude-fable-5.1, google/gemini-3.8-flash y gemini-3.7-flash, qwen/qwen3.8-max-0902 y qwen/qwen3.8-flash, meta/muse-spark-1.3 y -contributor (contexto de 1M según agent/model_metadata.py:349). muse-image: plugins/image_gen/meta-ai/__init__.py («API de modelos de Meta (muse-image): compatible con OpenAI (https://api.meta.ai/v1)», con modelos que incluyen muse-image-1.0). Tavily: hermes_cli/config_defaults.py:2522-2525, textualmente: «Clave de API de Tavily para búsqueda y extracción web nativas de IA (opcional; funciona sin clave cuando se selecciona Tavily)», herramientas web_search y web_extract; el bloque web señala que Tavily «se activa explícitamente sin clave mediante hermes tools, no forma parte del anillo». Tiempo de ejecución gestionado de llama.cpp: el paquete hermes_cli/local_runtime/ («Tiempo de ejecución gestionado de llama.cpp»), el bloque de configuración en config_defaults.py:2327 (servidor de «binarios oficiales, uno supervisado»; referencia a la documentación user-guide/local-models) y la superficie de escritorio apps/desktop/src/api/local-models.ts. Proveedores de procesos externos: agent/auxiliary_client.py:4740-4799 (_resolve_external_process_branch, «proveedores external_process de PROVIDER_REGISTRY, atendidos mediante su profile registrado», identificados por el profile registrado «para que se resuelva un proveedor ACP externo al árbol»). Frecuencia del catálogo: migración de configuración 39 -> 40 en hermes_cli/config_migrations.py:622-627 («model_catalog.ttl_hours -> ttl_minutes (valor predeterminado: 20)», mensaje al usuario: «Ahora, el catálogo de modelos se actualiza cada 20 minutos (model_catalog.ttl_minutes)»), mientras que hermes_cli/model_catalog.py respeta el valor heredado ttl_hours «solo cuando ttl_minutes aún conserva su valor predeterminado». ↩↩↩

  47. Oleada de la versión de escritorio en la etiqueta v2026.9.7. Modo de comentarios: website/docs/user-guide/desktop.md en la etiqueta, descripción central textual: “haz clic en Annotate en la barra del navegador de vista previa; después, haz clic en cualquier elemento (o arrastra para dibujar un recuadro) de la página activa y escribe una nota; cada comentario guardado permanece en la página como un marcador numerado”; “Guardar un marcador nunca envía un turno”; “Add N comments adjunta al editor una captura de pantalla recortada por marcador y una instrucción breve que identifica cada comentario”; “Cada comentario de elemento incluye su selector CSS, su marcado y los estilos calculados relevantes para el diseño, de modo que el agente pueda encontrar el elemento en tu código fuente en vez de adivinarlo a partir de la imagen”; “Los valores de las contraseñas y los campos ocultos, así como cualquier atributo que parezca una clave o un token, se ocultan en la página antes de que el marcado salga de ella”; “Los lotes más grandes llegan agrupados según la parte de la página donde se encuentra cada comentario, por lo que una veintena de comentarios se convierte en un puñado de unidades de trabajo, en lugar de una tarea por comentario”; “como los grupos pertenecen a subárboles DOM distintos, suelen afectar archivos diferentes, lo que permite asignarlos de forma segura a trabajadores paralelos”. Commits incluidos en este intervalo: 10f2a20966 “feat(desktop): add comment mode to the in-app browser”; e4bda3ff77 “feat(desktop): browser comments carry the element’s selector, markup, and styles”; controles de sesión 8cb2bcc8c1 “expose structured session controls” + bfddf556bf “hydrate structured session controls” + dffd8d62c2 “add session automation controls”; 6b1e12c7f4 “drag to create sessions from New session, project + controls, and profile groups”; 9186e3ebc5 “session import view for foreign coding-agent transcripts”; a1c25d393a “built-in optional-skills catalog in Capabilities → Skills with one-click install”; configuración regional rusa a922dad9d8 “feat(desktop): add Russian (ru) locale” + 269e5bde33 (registra ru en las pruebas y la documentación de configuración regional; apps/desktop/src/i18n/ru.ts es nuevo en este intervalo, mientras que el directorio locales/ de CLI conserva 17 catálogos). display.resume_last_session: hermes_cli/config_defaults.py:777, valor predeterminado True, comentario textual “La versión de escritorio vuelve a abrir el último chat o página tras un inicio en frío (también en Settings → Appearance)”. Consentimiento para el perfil real: apps/desktop/src/app/chat/right-rail/real-profile-consent-dialog.tsx (“Aviso de consentimiento que aparece la primera vez que se navega con el perfil real”, mostrado cuando se abre un panel Browser mientras browser.use_real_profile está desactivado; al aceptar, se escribe la misma clave de configuración que utiliza el interruptor de Capabilities; “Not now” silencia el aviso durante esa ejecución de la aplicación y “Don’t show again” mantiene la preferencia entre inicios). ↩↩

  48. Notas de la versión Hermes Agent v0.21.2, “La versión de corrección de state.db”, etiqueta v2026.9.11, fecha de lanzamiento declarada: 11 de septiembre; publicada el 11 de septiembre de 2026 a las 19:20 UTC. Descripción textual: “v0.21.0 incluyó una reescritura considerable del manejo de conexiones del almacén de sesiones y, en algunas instalaciones, volvió frágil a state.db: procesos de escritura secundarios que cancelaban mutuamente sus bloqueos, bases de datos en buen estado que se marcaban como dañadas y una sola fila defectuosa que impedía ejecutar sessions list”. Estadísticas medidas en el commit 04dd80a977: “947 commits sin fusión”, “1.869 archivos modificados”, “312 PR fusionadas”, “140 colaboradores” (comprobación en el clon local: git rev-list --count --no-merges v2026.9.7..v2026.9.11 = 959; la cifra del cuerpo corresponde a una instantánea previa al lanzamiento, como también ocurrió con la de v0.21.1). Encabezado textual de la campaña: “campaña de confiabilidad de state.db (seis PR, 44 incidencias cerradas)” (PR #108076, #108082, #108130, #108086, #108074, #108067); indicaciones textuales para actualizar: “ejecuta primero hermes doctor; ahora distingue correctamente entre daños estructurales y daños de índices, y te dirige a hermes sessions recover --inspect-only (vinculado al profile) cuando una reconstrucción no basta”. Verificación del código fuente en la etiqueta: estado de las salas alojadas trasladado fuera del almacén raíz en gateway/hosted_rooms.py:398-426: default_db_path hace que los gateways de profile usen “el archivo shared-state.db compartido de ROOT en lugar del archivo state.db principal”; su docstring señala el vector recurrente de corrupción por múltiples procesos de escritura observado en una flota de 6 gateways (3 de septiembre de 2026) como motivo por el que los gateways de profile nunca deben abrir el almacén principal de sesiones con permisos de escritura. Analizador de hermes sessions recover en hermes_cli/subcommands/sessions.py:185-196, con el texto de ayuda de --inspect-only: “Solo informa si se pueden leer las tablas canónicas; no crea una base de datos de salida”; el subcomando es anterior a este intervalo (ya estaba presente en hermes_cli/main.py en v2026.8.31), pero aún no se había documentado en esta guía. Bóveda de credenciales: docstring de agent/vault_backends/__init__.py (“Backends de inicio de sesión para la bóveda de credenciales del navegador”; identificadores organizados por espacio de nombres según el backend para que las herramientas del navegador puedan dirigirlos sin cambiar el esquema; administradores externos bloqueados hasta que se desbloqueen en cada sesión; la contraseña maestra “nunca es un argumento de herramienta, nunca aparece en argv y nunca se conserva”), agent/vault_backends/base.py (un LoginBackend “enumera metadatos de inicio de sesión —nunca secretos— y obtiene UNA contraseña cuando se completa el campo”) y agent/vault_store.py:74-105 (claves de autenticación únicamente como semillas base32 o URI otpauth://totp; se rechaza HOTP basado en contadores y totp_now genera los códigos); los backends local.py, onepassword.py y bitwarden.py, además de agent/secret_sources/{onepassword,bitwarden,command}.py, están presentes en la etiqueta. Subanalizadores del catálogo de plugins en hermes_cli/subcommands/plugins.py: ayuda de install “Instala un plugin desde el catálogo seleccionado, una URL de Git o owner/repo”; search, “Busca en el catálogo seleccionado de plugins de Hermes”; browse, “Enumera todas las entradas del catálogo seleccionado de plugins”; pack, “Conjuntos de plugins declarativos y compartibles (hermes-pack.yaml)”, con install/export/show. Incorporación de invitados en apps/desktop/electron/guest-onboarding-flag.test.ts: título textual de la prueba ‘guestOnboardingEnabled: exactamente “1” en el entorno o –guest-onboarding en argv activa el nivel gratuito’; el conjunto de pruebas confirma que 'true', '0' y un valor vacío lo mantienen desactivado, y que desktopBackendSpawnEnv “registra al final la decisión de inicio y nunca permite que se filtre un valor heredado”. Grupo de incidencias de robustecimiento de múltiples profiles #107609-#107630, tal como aparece en la versión. Verificación de la sesión actual: 15 de septiembre de 2026. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  49. Notas de la versión Hermes Agent v0.21.3, etiqueta v2026.9.14, fecha de lanzamiento declarada: 14 de septiembre; publicada el 14 de septiembre de 2026 a las 16:04 UTC. Propósito textual: la etiqueta “existe para que las correcciones de inicio de sesión en gateways remotos que se describen a continuación lleguen a los agentes de Cloud, que se actualizan automáticamente a la etiqueta de versión más reciente”. Estadísticas medidas en el commit 9b419a2d3c: “1.036 commits sin fusión”, “2.642 archivos modificados”, “338 PR fusionadas” (comprobación en el clon local: git rev-list --count --no-merges v2026.9.11..v2026.9.14 = 1.037, nuevamente debido al commit de la versión). Ambos elementos documentados se verificaron en el clon local y solo aparecen en este intervalo: commit 5dea46d13d “fix(dashboard-auth): one refresh single-flight for the cookie gate and the native route, off the event loop” (#110061, corrige #55712; se combina con hermes-portal#1209 del lado de Portal, un horizonte móvil de inactividad de 30 días con un período de gracia de 5 minutos para el token rotado) y commit 939a2f64b4 “fix: long-lived processes stop minting duplicate state.db writer handles” (#110934, corrige #100896 y #103339). Aplazamiento textual: “Las notas completas y seleccionadas de las versiones de este intervalo se publicarán con v0.22.0, que documentará todo a partir de v0.21.0” y “No se omite nada de este intervalo”; la lista de elementos que deliberadamente no se documentaron en la versión incluye solicitudes JSON-RPC del servidor al cliente junto con un registro Pydantic de contratos de comunicación, selección del nivel de razonamiento en todos los selectores de modelos, PKCE de OpenRouter OAuth, decodificación HEIF/HEIC/AVIF, la reelaboración de modelos pares de Honcho, incorporaciones al catálogo de FAL (Wan 3.0, Kling 3.0 / Kling Image v3, MiniMax H3 Max Turbo, Gemini Omni Flash 1.1, Meta Muse), tablas pegadas en Slack y API de Agent Sessions, correcciones del aislamiento de profiles multiplexados y de la disponibilidad de gateways, y el rechazo del modo WAL de state.db en sistemas de archivos entre máquinas virtuales; todo ello se reservó para la revisión de v0.22.0, según la propia descripción de la versión. Verificación de la sesión actual: 15 de septiembre de 2026. ↩↩↩

  50. Notas de la versión Hermes Agent v0.21.4, etiqueta v2026.9.21, fecha de lanzamiento indicada: 21 de septiembre; publicada el 2026-09-21T18:10:55Z. Propósito textual: «Versión de parche. Esta etiqueta agrupa los aproximadamente 1.800 PR incorporados desde v0.21.3 en una versión estable etiquetada para consumidores posteriores (imágenes de Docker, Hermes Cloud y despliegues alojados). Las notas completas y revisadas de este periodo se posponen hasta v0.22.0». Estadísticas medidas en el commit 4b8a8134009a: «5.071 commits sin fusión» en «5.169 archivos modificados» (+312.961 / -62.855), «1.812 PR incorporados» y «2.116 incidencias cerradas»; las comprobaciones en un clon local reproducen exactamente las cinco cifras (git rev-list --count --no-merges v2026.9.14..4b8a8134 = 5.071; git diff --shortstat = 5.169 archivos, +312.961 / -62.855; el commit de la etiqueta d337b736aa, «chore(release): v0.21.4 (v2026.9.21)», es hijo de 4b8a8134, lo que da 5.072 commits sin fusión y 5.173 en total al incluir las fusiones, mientras que el API de comparación de GitHub para v2026.9.14...v2026.9.21 informa total_commits: 5173, ahead_by: 5173, behind_by: 0). Clasificación por periodos (verificada de nuevo para la versión 1.21 de la guía, el 23 de septiembre): según la cantidad de commits sin fusión entre cada par de etiquetas v2026.* adyacentes, v2026.8.31..v2026.9.7 (5.140 con su commit de lanzamiento) ocupa el primer lugar y v2026.9.14..v2026.9.21 (5.072), el segundo, por delante de v2026.7.20..v2026.7.30 (2.790); según los PR incorporados indicados en cada versión, 1.812 es la mayor cifra de cualquier nota acumulativa correspondiente a un solo periodo (v0.21.1: «632 PR incorporados»; v0.19.1: «aproximadamente 1.000 o más PR»; los «aproximadamente 2.475» de v0.21.0 abarcan las seis etiquetas v0.20.x desde v0.20.0, por lo que no corresponden a un único periodo entre etiquetas). Texto literal sobre el aplazamiento: «Las notas de versión completas y revisadas de este periodo se publicarán con v0.22.0, que documentará todo a partir de v0.21.0» y «No se omite nada de este periodo». La lista de elementos que intencionalmente no se documentaron menciona el bloqueo de instancia única del gateway y el registro de encuentro, con Desktop conectándose al backend del host en ejecución; la operación del conector administrada por el backend con su tarjeta de configuración para Desktop/TUI/CLI; --format stream-json; skills.auto_load; el selector de fuentes de chat e interfaz de Desktop, las actualizaciones del motor local con un solo clic y la desinstalación desde el centro de Plugins; el comportamiento decline para mensajes directos no autorizados; mcp.discovery_concurrency; los límites after/before de session_search y el reintento de recuperación con OR menos restrictivo; hermes sessions set-journal-mode; LTX 2.5 y Kling O3 en los catálogos de video; las páginas del sitio web del catálogo para cada plugin y autor, con archivos README fijados a un commit y ordenamiento por fecha de adición o actualización; «una docena de nuevos plugins de la comunidad en el catálogo (tailscale, ssh, shodan, terminal, rss, resetwatch, done-bell, kiwi, cognee, Octen)» (resumen de la versión; las entradas del catálogo en esa etiqueta son hermes-tailscale, hermes-ssh, shodan, hermes-terminal, hermes-rss, hermes-resetwatch, done-bell, kiwi, cognee, web-octen); y «una extensa serie de correcciones relacionadas con el aislamiento de profile/multiplex, cron, kanban, Desktop y state.db». Actualización: hermes update (instalaciones mediante git) o el comando de una línea del instalador; «Docker / Hermes Cloud: las imágenes se compilan a partir de esta etiqueta (nousresearch/hermes-agent:v2026.9.21)». Verificación de la sesión actual: 22 de septiembre de 2026. ↩↩↩↩↩↩

  51. Elementos divulgados en v0.21.4 verificados en el código fuente de la etiqueta v2026.9.21 (guía v1.20, 22 de septiembre de 2026; reglas adicionales para operadores en la guía v1.21, 23 de septiembre). Singleton del host: docstring de gateway/host_rendezvous.py: «Punto de encuentro singleton para todo el host: un bloqueo y un registro por ROLE para cada usuario del sistema operativo»; «exactamente UN hermes serve y UN hermes gateway run por host, cada uno multiplexando todos los profile»; un bloqueo de host flock/msvcrt «mantenido durante toda la vida útil del proceso ganador», además de un registro del punto de encuentro para que una segunda invocación pueda «demostrar que se trata del mismo proceso activo y CONECTARSE en lugar de vincular un segundo puerto»; «La obsolescencia se demuestra, nunca se supone» mediante (pid, createTime) («un cliente que se conecta nunca debe comunicarse con el puerto de un PID reutilizado»); raíz de bloqueo $HERMES_GATEWAY_LOCK_DIR o, en su defecto, $XDG_STATE_HOME/hermes/gateway-locks, limitada al usuario del sistema operativo (gateway/status.py:308-324: se ignora un XDG_STATE_HOME relativo y se usa ~/.local/state como alternativa). Ruta del operador: _host_attach_or_none en gateway/run.py:5466-5499 imprime el mensaje de conexión y termina con código 0 en ATTACH, se niega en REFUSE, envía --replace al «proceso del HOST, sin importar desde qué directorio personal se haya iniciado» en REPLACE_HOST y omite la pregunta con --force («la vía de escape del operador cuando el propietario está bloqueado o miente»); _claim_host_gateway_role (gateway/run.py:5331-5346) hace que quien pierde la carrera por el bloqueo termine con EX_TEMPFAIL (75), porque «Todos los supervisores que generamos reintentan el código 75 y, en el reintento, ya existe el registro del propietario». Cinco resultados en gateway/host_attach.py: ATTACH, RESCAN->ATTACH (rescan-profiles mediante el socket de control), REPLACE_HOST, REFUSE («Nunca iniciar un segundo proceso silenciosamente»), START (los gateway independientes por profile coexisten «hasta que se fuerce esa migración (#109417)»). Mitad de Desktop: apps/desktop/electron/host-backend-attach.ts («Conectarse al backend de Hermes que se ejecuta en el host —solo multiplexación, mitad de Desktop—»; la secuencia de E/S lee el registro de procesos iniciados desde la raíz de la máquina, valida un candidato mediante «disponibilidad HTTP -> token de sesión servido -> autenticación WebSocket» y mantiene «una barrera a nivel del host para que dos aplicaciones que se inicien simultáneamente produzcan un solo backend en lugar de dos»; HOST_SPAWN_GATE_STALE_MS = 60_000). Operación del conector: tools/connectors/operation.py:1, textualmente: «Una operación de conexión propiedad del backend por cada llamada a manage_connections. Solo datos, sin E/S.»; OPERATION_DEADLINE_SECONDS = 300.0 con el comentario «No es una clave de configuración: una espera ajustable por el usuario con límites restrictivos era una fuente de errores (PR1 incluyó una, pero no se integró)»; la herramienta registrada como manage_connections (tools/connectors/tool.py:16,48,113); required_env por destino «({name, prompt, required}); la tarjeta dibuja un campo por entrada y retiene su verbo hasta que todas las obligatorias contengan texto»; la tarjeta de tres interfaces mencionada en tests/hermes_cli/test_mcp_catalog_env_boundary.py:330 («El backend de la tarjeta del conector —tarjeta de configuración de Desktop/TUI/CLI— aplica la misma separación exclusiva para secretos»). stream-json: hermes_cli/_parser.py:247-249 en el analizador de chat: --format con las opciones text/stream-json, valor predeterminado text y ayuda textual «’stream-json’ emite eventos JSON delimitados por saltos de línea (JSONL), implica –quiet y no puede combinarse con –tui»; docstring del módulo hermes_cli/stream_json.py: «un objeto JSON por línea de stdout… system/init -> deltas de text / tool_use / tool_result -> un sobre result terminal (código de salida, texto final y estadísticas de tokens). Los diagnósticos y session_id permanecen en stderr», _TOOL_OUTPUT_CAP = 5000, salida con código 2 para las combinaciones prohibidas, stream_json_requested en hermes_cli/stream_json.py:23, que acepta query o query_file antes de terminar con código 2 (el punto de entrada de Fire en cli.py:1703-1705 comprueba la consulta ya resuelta); --query-file PATH en hermes_cli/_parser.py:218-222, dentro de un grupo mutuamente excluyente con -q (ayuda textual: «Lee la única consulta desde un archivo en lugar de la línea de comandos (‘-’ lee stdin). Es seguro para texto arbitrario: el shell no interpreta nada»), leído por _read_query_file (hermes_cli/main.py:1735-1762), presente desde la etiqueta v2026.8.19; pruebas de contrato en tests/hermes_cli/test_stream_json.py (incluida «nunca debe llegar a stdout con stream-json»). skills.auto_load: hermes_cli/config_defaults.py:1435, valor predeterminado [], comentario textual: «Nombres de skill fijados como completamente cargados en cada sesión nueva (CLI, TUI, gateway, cron, API). Se resuelven una sola vez cuando se construye por primera vez el prompt del agente; los nombres ausentes o deshabilitados generan una advertencia y se omiten; HERMES_IGNORE_RULES suprime la lista, al igual que el resto del contexto inyectado automáticamente». decline: gateway/config.py:137-139: comentario textual «’pair’ envía por DM un código de vinculación, ‘ignore’ descarta silenciosamente y ‘decline’ envía una negativa cortés una sola vez y luego guarda silencio ante ese remitente durante gateway.pairing.DECLINE_DEDUPE_SECONDS (#88028)», UNAUTHORIZED_DM_BEHAVIORS = {"pair", "ignore", "decline"}, valor predeterminado del campo "pair" (:626), unauthorized_dm_decline_message vacío -> DEFAULT_UNAUTHORIZED_DM_DECLINE_MESSAGE (la respuesta citada en la sección Vinculación); DECLINE_DEDUPE_SECONDS = 24 * 3600 y marcas de negativa compatibles con alias en gateway/pairing.py:37,565-576; resolución por plataforma y valor predeterminado de Email en get_unauthorized_dm_behavior (gateway/config.py:803-809: «Email tiene forma de bandeja de entrada, por lo que su valor predeterminado es "ignore", salvo que su propio unauthorized_dm_behavior habilite otra opción —un valor predeterminado global no lo hace—»). La propia clave, con pair/ignore y la regla de Email, es anterior a este periodo (presente en v2026.9.14, gateway/config.py:564,736-742; introducida por #1919 en marzo de 2026); solo decline es nueva. Valor predeterminado efectivo: _get_unauthorized_dm_behavior en gateway/authz_mixin.py:699-740, con este orden según su docstring: «configuración explícita por plataforma; Email -> “ignore”; valor global explícito distinto del predeterminado; dm_policy del adaptador (pairing -> “pair”, allowlist/disabled -> “ignore”); cualquier allowlist configurada -> “ignore”…; de lo contrario, “pair”» (#9337), y el valor global solo se consulta cuando != "pair". Estructura de YAML: las claves por plataforma bajo platforms.<name> se promueven a PlatformConfig.extra (gateway/config.py:456-460, #10206), la clave de nivel superior o la clave anidada gateway.unauthorized_dm_behavior se enlaza mediante gateway/config_loader.py:39-46,102, y hermes gateway setup escribe platforms.<name>.unauthorized_dm_behavior mediante write_platform_config_field (hermes_cli/config.py:2061-2069; hermes_cli/gateway_setup_wizard.py:182-184,219-249, opción «Rechazar cortésmente a remitentes desconocidos —un mensaje único y luego silencio—»). El mensaje de rechazo solo es global (gateway/run_inbound.py:139). discovery_concurrency: hermes_cli/config_defaults.py:526, valor predeterminado 4; tools/mcp_tool_discovery.py:27-40 («mcp.discovery_concurrency lo reemplaza, 0 = sin límite (#117373)»; un valor no entero o negativo registra «no es un entero no negativo; se usará %d» y utiliza el valor predeterminado); semántica de límite, no de barrera, fijada por tests/tools/test_mcp_tool.py:2813 («limita las conexiones simultáneas —siguen siendo concurrentes y todos los servidores» se conectan). Límites y reintento de session_search: tools/session_search_tool.py:578,621-635,708-725: after, «Límite inferior inclusivo para la hora de inicio de la sesión. Fecha/fecha y hora ISO (p. ej., 2026-06-01) o duración relativa (7d, 24h, 2w = dentro de los últimos N)»; before, «Límite superior exclusivo para la hora de inicio de la sesión. Fecha/fecha y hora ISO (un valor que solo contiene una fecha representa la medianoche UTC de ese día) o duración relativa (7d = anterior a una semana)»; ambos son «Solo para definir el alcance del descubrimiento», donde «sort es un sesgo de clasificación, no un límite», y los nuevos parámetros se «añaden después de detail» para mantener la estabilidad del esquema; reintento con OR flexible en hermes_state_search.py:1151-1163, comentario textual: «el AND implícito entre términos hace que una consulta parafraseada de varias palabras no encuentre una oración almacenada a la que le falte siquiera UNA palabra… Cuando tanto la consulta exacta como las alternativas por subcadena no devuelvan resultados, reintenta el índice unicode61 haciendo coincidir CUALQUIER término… Se activa únicamente cuando no hay resultados, de modo que las coincidencias conserven la semántica de coincidencia exacta; las consultas con OR/NOT explícito, de un solo término y dirigidas a CJK no se modifican»; conjunto de pruebas específico tests/hermes_state/test_search_or_relaxed_fallback.py. set-journal-mode: analizador en hermes_cli/subcommands/sessions.py:177, ayuda textual: «Convierte state.db sin conexión entre journal_mode=WAL y DELETE —con todos los procesos que lo usan detenidos—»; docstring de hermes_cli/sessions_cmd_journal_mode.py: la ruta de autoservicio sin conexión para #100896 (antes, «la única vía de escape era ejecutar manualmente el comando no documentado PRAGMA journal_mode=DELETE»), «se niega a continuar mientras CUALQUIER proceso ajeno mantenga abierto el archivo o un archivo auxiliar (foreign_state_db_holders), cambia el modo sin esperar a que terminen los procesos que lo tienen abierto (_set_journal_mode_no_wait) y luego verifica los bytes 18/19 del encabezado que SQLite escribe para el modo»; despacho marcado como «sin conexión: no debe abrir el almacén que convierte» (hermes_cli/sessions_cmd.py:982); hermes doctor lo recomienda con --db para almacenes no predeterminados (hermes_cli/doctor_platform.py:148,163). Descripción textual del analizador: «Ejecuta esto con el gateway, el dashboard y todos los CLI detenidos: se niega a continuar mientras algún proceso mantenga abierto el archivo, cambia el modo y verifica el encabezado del archivo»; ayuda de --force: «Solo Windows: continúa sin analizar qué procesos mantienen abierto el archivo —esa función no existe allí— después de detener manualmente todos los procesos de Hermes» (hermes_cli/subcommands/sessions.py:176-189), aplicado en _refusal (sessions_cmd_journal_mode.py:40-44: «no se puede demostrar que la base de datos esté inactiva en Windows; no existe un análisis de procesos que la mantengan abierta»). Oleada de Desktop: campo de fuente apps/desktop/src/app/settings/chat-font-setting.tsx (CONFIG_PATH = 'desktop.font_family', guardado automático tras 550 ms) con themes/chat-font.ts (sugerencias OpenDyslexic, Atkinson Hyperlegible, Lexend, Inter, IBM Plex Sans, Source Sans 3, Noto Sans, Segoe UI y SF Pro Text; un valor vacío usa la tipografía del tema), aplicado mediante themes/context.tsx:279, que reemplaza el token del tema --dt-font-sans; actualizaciones del motor en apps/desktop/src/app/settings/local-models-settings.tsx y su prueba (un botón «Actualizar motor» cuando el entorno local administrado informa update_available, que ejecuta installLocalRuntime como una tarea runtime-install con informes de progreso; la prueba «mantiene visible una actualización explícita fallida, con un reintento directo y sin modelos preparados»); desinstalación desde el centro de Plugins en apps/desktop/src/app/capabilities/plugins/plugins-tab.tsx y su prueba («desinstala mediante plugins.manage remove solo después de aceptar el diálogo de confirmación»; los plugins independientes de Desktop mediante uninstallDiskPlugin en el cargador de Electron). Catálogos de video: plugins/video_gen/fal/__init__.py:43-44,99-101: ltx-2.5 («LTX 2.5», «Modelo de audio y video de código abierto de Lightricks. Audio nativo, hasta 20 s/4K (i2v) y preajustes de movimiento de cámara.», nivel económico, lightricks/ltx-2.5/text-to-video/fast y /image-to-video/fast, relaciones de aspecto 16:9/9:16, duraciones enteras; :128, «fal rechaza LTX 2.5 por encima de 10 s a 1440p/2160p») y kling-o3 («Kling O3 (Estándar)», «Modelo de vanguardia de Kuaishou. Narración nativa con varias tomas, audio opcional, entre 3 y 15 s.», nivel premium, duración como cadena entre 3 y 15, i2v deriva la relación de aspecto de la imagen, generate_audio es un selector real); pruebas de payload en tests/plugins/video_gen/test_fal_plugin.py:641,681; fila del catálogo en website/docs/reference/toolsets-reference.md:72. Ampliación del catálogo: plugin-catalog/ en v2026.9.14 = 9 entradas + removed.yaml; en v2026.9.21 = 228 entradas + removed.yaml; estructura de entrada según plugin-catalog/hermes-tailscale.yaml (nombre, repositorio, sha hexadecimal de 40 caracteres, descripción, responsable de mantenimiento, tier: community, categoría, docs_url y capacidades); modelo de admisión y publicación en hermes_cli/plugin_catalog.py:4-10,33 («fijado a un SHA de commit exacto de 40 caracteres. La presencia en el directorio ES» la admisión; website/scripts/extract-plugins.py publica /docs/api/plugin-catalog.json; LIVE_CATALOG_URL se obtiene y almacena en caché bajo ~/.hermes/cache/plugin-catalog.json); páginas del sitio web en website/plugins/plugin-catalog-pages/index.js («/docs/plugins/, una página por entrada»; «/docs/plugins/by/, una página por responsable de mantenimiento»; «un PR del catálogo integrado es la única manera de que una página aparezca, cambie o desaparezca», y el sitio «se degrada, nunca falla») y readme.js (el README de cada entrada se renderiza «desde el commit FIJADO» mediante una URL sin procesar en el sha, «nunca desde la punta de una rama», de modo que la página muestra exactamente el README que revisó quien evaluó el catálogo; renderizado durante la compilación con lista de elementos permitidos que elimina HTML sin procesar, límite de 512 KB y hosts restringidos a raw.githubusercontent.com y gitlab.com; se puede excluir mediante readme: false); slugs de autores y marcas de fecha de incorporación/actualización basadas en la fecha del committer en website/scripts/extract-plugins.py:80,142; los diez plugins comunitarios mencionados en el lanzamiento están presentes como entradas bajo esa etiqueta y con los slugs enumerados en 50. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  52. Notas de la versión Hermes Agent v0.21.5, etiqueta v2026.9.24, fecha de lanzamiento indicada: 24 de septiembre; publicada el 2026-09-24T10:09:38Z. Propósito, textualmente: «Versión de parche. Esta etiqueta reúne las aproximadamente 460 solicitudes de incorporación de cambios fusionadas desde v0.21.4 en una versión estable etiquetada para los consumidores posteriores (imágenes Docker, Hermes Cloud, implementaciones alojadas). Las notas completas y revisadas de este periodo se posponen hasta v0.22.0». Estadísticas medidas en el commit de la etiqueta f97608f178 («tarea: publicar v0.21.5 (2026.9.24)»): «1.610 commits sin fusiones» distribuidos entre «4.828 archivos modificados» (+164.132 / -149.440), «460 solicitudes de incorporación de cambios fusionadas» y «475 incidencias cerradas». Las comprobaciones en un clon local reproducen exactamente las cifras de commits y diferencias (git rev-list --count --no-merges v2026.9.21..v2026.9.24 = 1.610; 1.638 con fusiones; git diff --shortstat = 4.828 archivos, +164.132 / -149.440); los recuentos de solicitudes de incorporación de cambios e incidencias no se verificaron de forma independiente. La lista del cuerpo, omitida de la documentación deliberadamente, menciona GPT-6 «Sol/Terra/Luna» y Claude Opus 5.5 en los catálogos de Nous y OpenRouter, la detención, el inicio y el reinicio por profile mediante gateway.standalone, y una oleada de plugins de Desktop SDK; no menciona Hindsight. Ruta de actualización, textualmente: «hermes update (instalaciones mediante git), o vuelve a ejecutar el comando de una sola línea del instalador» y «las imágenes se compilan a partir de esta etiqueta (nousresearch/hermes-agent:v2026.9.24)». ↩↩↩↩

  53. Elementos de v0.21.5 verificados en el código fuente de la etiqueta v2026.9.24 (guía v1.22, 24 de septiembre de 2026). Hindsight: el commit 4cbf862abe «tarea(memory): eliminar el proveedor Hindsight incluido (se trasladó al catálogo de plugins)» (22 de septiembre) es antecesor de la etiqueta; en dicha etiqueta, plugins/memory/ contiene siete directorios de proveedores (byterover, holographic, honcho, mem0, openviking, retaindb, supermemory), frente a ocho en v2026.9.21; el commit 73c598e319 «compilación: eliminar el extra hermes-agent[hindsight]» lo quitó de pyproject.toml. plugin-catalog/hindsight.yaml: repo: https://github.com/vectorize-io/hindsight, maintainer: vectorize-io, tier: community, requires_hermes: ">=0.21.4". Migración: el docstring de hermes_cli/memory_provider_migration.py (líneas 1-14) menciona dos hooks: «hermes update» e «inicialización del agente»; la línea 75 imprime «El proveedor de memoria ‘{name}’ se trasladó fuera del núcleo; se instaló su plugin desde el catálogo»; recover_at_startup() (línea 110) «respeta security.allow_lazy_installs»; se invoca desde hermes_cli/update_cmd_deps.py:535-536 y agent/agent_init.py:1315-1316. Efectos en disco y comandos de verificación: memory-providers.md:482-490. Multiplex: hermes_cli/gateway_multiplex_mode.py, línea 10: «Un false explícito queda RETIRADO»; y líneas 43-44: «gateway.multiplex_profiles: false está retirado y se reescribió como true» (commit b936546561, 23 de septiembre). gateway.standalone: hermes_cli/profiles.py:979-982, «El profile DEFAULT nunca es standalone: ES el host, y se emite una advertencia una vez por proceso si la clave está configurada allí» (commit 0238c9d740). Estacionamiento: commit 4c342c05de «detener, iniciar y reiniciar un profile bajo el multiplexor del host»; multi-profile-gateways.md:120-138, 233-244 («una capa temporal de compatibilidad»; «gateway.standalone tiene prioridad»). Modelos: hermes_cli/models_catalog_static.py, líneas 32 y 36-37 de OPENROUTER_MODELS (anthropic/claude-opus-5.5, openai/gpt-6-sol, -sol-pro, gpt-6-luna, -luna-pro); la lista nous de la línea 162 deriva de esta. No aparece ningún ID de modelo gpt-6-terra en los catálogos de selección de la etiqueta, por lo que aquí solo se incluyen Sol y Luna. Proveedores: CANONICAL_PROVIDERS, en la línea 314, se analiza como 39 entradas (recuento del AST, sin cambios); plugins/model-providers/ contiene 38 directorios tanto en v2026.9.21 como en v2026.9.24, frente a 39 en v2026.9.14. El commit 998f614c7f «función(proveedores): eliminar el nivel opencode-free sin clave» (18 de septiembre) eliminó el plugin; su mensaje dice: «El nivel gratuito de OpenCode ahora devuelve HTTP 403 para el tráfico anónimo que proviene de fuera del cliente OpenCode». hermes_cli/auth.py:1255-1259 conserva un error para opencode-free, free y opencode_free que remite a opencode-zen y opencode-go. Compatibilidad: COMPAT_MANIFEST.md, compat_manifest.json y hermes_cli/plugin_compat.py están presentes en la etiqueta y en main en aa8a33d22d (24 de septiembre). git diff v2026.9.21 v2026.9.24 -- hermes_cli/plugin_compat.py está vacío (COMPAT_REMOVAL_DATE en la línea 32; la comprobación «Solo booleanos literales» en las líneas 296-303). Del par de manifiestos solo se eliminaron las entradas correspondientes al plugins.memory.hindsight eliminado (-7 / -12 líneas). ↩↩↩↩↩↩↩↩

  54. Notas de la versión Hermes Agent v0.20.3 (etiqueta v2026.8.16.2, fecha de lanzamiento indicada: 16 de agosto; publicada el 17 de agosto de 2026) y notas de la versión v0.20.4 (etiqueta v2026.8.18, 18 de agosto de 2026); ambas obtenidas mediante GitHub API el 20 de agosto de 2026 (versión preliminar: false). v0.20.3, textualmente: «la migración SDK a MCP 2.x y la compatibilidad con el protocolo sin estado del 28 de julio de 2026, el plugin Bot Mode (hermes-bots) incluido con el protocolo central de compañeros de equipo, el plugin del proveedor CommandCode, el refuerzo de la propiedad del entorno de ejecución Python de subprocesos (aislamiento de PYTHONHOME/PYTHONPATH) y los contratos del entorno de ejecución Cua Driver 0.20 para el uso de la computadora». v0.20.4, textualmente: «el trabajo de superficies de vidrio/translucidez en Desktop (vidrio mate, selector de efecto esmerilado, preselección en macOS), la barra lateral con pestañas SESSIONS|BOTS y opciones para ocultar o mostrar cada bot, […] el análisis consultivo de nivel 1 de NVIDIA SkillEvaluator al instalar skills (comprobaciones de licencia y seguridad)». Ambas versiones: «Las notas completas y revisadas de este periodo se publicarán con v0.21.0». ↩↩↩↩↩↩↩↩↩↩↩↩↩

  55. Notas de la versión Hermes Agent v0.20.0, «The Herald Release», etiqueta v2026.8.3, 3 de agosto de 2026, con las etiquetas de estabilización v2026.8.13 y v2026.8.16. Textualmente, según la versión: «Se requiere Node 26 en instaladores/reparación/actualización»; «se retiraron los canales brew + pip/rueda de PyPI (el instalador de shell / Docker / Nix son los canales compatibles)»; «límite de iteraciones predeterminado: 90 → 500»; «se eliminó la fuente claude-marketplace». El requisito mínimo de Node se confirmó de forma independiente en el código fuente del instalador, en scripts/install.sh: NODE_VERSION="26" y la validación «Node.js $(node –version) es demasiado antiguo (Hermes requiere Node >=26)»; su comentario de cabecera también documenta el comando canónico de una sola línea curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash. Cabe señalar el conflicto: la página de instalación de la documentación aún indica Node v22 y está desactualizada respecto de ambos. Niveles de plataforma tomados de compatibilidad con plataformas; fuentes de skills y taps predeterminados tomados de skills; el recuento de 28 plataformas se obtuvo enumerando la tabla comparativa de mensajería, que no publica ningún total oficial. Todo se obtuvo y verificó el 16 de agosto de 2026. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  56. Notas de la versión v0.19.0 de Hermes Agent, «The Quicksilver Release», etiqueta v2026.7.20, 20 de julio de 2026; la más reciente al 21 de julio de 2026. Estadísticas desde la versión v0.18.0: unos 2.245 commits, aproximadamente 1.065 PR fusionados, cerca de 3.300 incidencias cerradas y más de 450 colaboradores de la comunidad. Eje central del rendimiento: reducción de alrededor del 80 % en el TTFT del primer turno y disminución del tiempo de envío→despacho en frío de unos 4,3 s a unos 0,9 s en CLI/gateway/TUI/escritorio/cron (PR #59332); razonamiento transmitido en vivo de forma predeterminada con display.show_reasoning activado y renderizado de la respuesta por token (PR #59389); una oleada de unas 20 PR para acelerar la aplicación de escritorio, incluido un renderizado de Markdown en streaming 14 veces más rápido; Markdown incremental en la TUI. Las instalaciones mediante pip/Homebrew quedaron obsoletas y ahora solo muestran la advertencia «unsupported legacy»; está previsto dejar de publicar en PyPI/Homebrew (PR #57225). Interfaz conectable SecretSource con proveedores Bitwarden y 1Password, referencias op://, varias bóvedas, precedencia determinista y procedencia por variable (PR #59498). Aprobaciones inteligentes de forma predeterminada (revisor LLM independiente para cada comando marcado), reglas de denegación definidas por el usuario que se mantienen incluso en modo YOLO y /deny <reason> (PRs #62661, #59164, #54518); se reincorporó el escalamiento de aprobación mediante pre_tool_call en plugins (PR #60504). Facturación desde la terminal con /subscription + /topup y pestaña de facturación en la aplicación de escritorio (PR #51639). Archivos de transcripción en vivo de subagentes y delegación duradera en segundo plano (PRs #67479, #63494); registro de obligaciones de entrega en state.db (PR #67181); max_async_children quedó obsoleto en favor de límites unificados de concurrencia para la delegación (PR #56955). Enrutamiento del gateway basado en profile + GATEWAY_MULTIPLEX_PROFILES + traslado del índice de enrutamiento a state.db, con sessions.json como espejo heredado opcional (PRs #64835, #65700, #60589, #59203). Proveedores/modelos: Fireworks AI como opción de primera clase en la posición n.º 2 del selector (PR #62593), DeepInfra, Upstage Solar, compatibilidad integral con GPT-5.6 Sol/Terra/Luna + Pro (PR #61616), disponibilidad general de grok-4.5, kimi-k3 (kimi-k2.x retirado), integración completa de Claude Sonnet 5, además de enabled: false por proveedor + excluded_providers (PR #67971); niveles de esfuerzo de razonamiento max/ultra, con ajustes por modelo/posición de MoA y /reasoning limitado a la sesión (PRs #62650, #64458). CLI/MCP: hermes sessions export para Markdown/Quarto/HTML/solo prompt/traza de HF con --redact (PR #60186), /model --once (PR #67113), invocaciones apiladas de skills mediante comandos slash (PR #57987), --safe-mode, hermes config get/unset (PR #65540), hermes serve verdaderamente sin interfaz gráfica (PR #55923), nomenclatura MCP mcp__server__tool (PR #52750). Se excluyó el enfoque promocional de la versión; los elementos revertidos durante el período (firewall de salida iron-proxy, skill dynamic-workflow y acciones de proveedor de memoria) no se registraron deliberadamente como publicados. Verificación de la sesión actual: 21 de julio de 2026. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  57. Etiqueta de la versión v0.18.1 de Hermes Agent y etiqueta de la versión v0.18.2, 7–8 de julio de 2026. Compilaciones acumulativas de parches de infraestructura para la rama v0.18; la corrección sustancial de v0.18.2 elimina la versión fijada de WhatsApp Baileys y adopta la 7.0.0-rc13 para producir compilaciones de Docker confiables. Ambos períodos de parches se consolidan en las notas de la versión v0.19.0, donde están documentados por completo. ↩

  58. Notas de la versión v0.15.1 de Hermes Agent y notas de la versión v0.15.2 de Hermes Agent. v0.15.1 (29 de mayo de 2026, 01:12 UTC) es la corrección urgente de Velocity publicada el mismo día: corrige el bucle de recarga con error 401 del dashboard en modo loopback; Docker ahora requiere HERMES_DASHBOARD_INSECURE=1 de forma explícita; los comandos independientes de MCP (npx, npm, node) se resuelven en contenedores Docker; se restauraron las etiquetas de origen y la barra lateral de categorías de la página Skills; los workers de Kanban responden a SIGTERM; el catálogo de Skills.sh pasó de 858 a 19.932 entradas mediante el mapa del sitio. 28 commits, 21 PR fusionados y 9 colaboradores. v0.15.2 (29 de mayo de 2026, 13:37 UTC) es una corrección urgente exclusiva del empaquetado que incluye los manifiestos plugin.yaml en las distribuciones wheel y sdist, de modo que las instalaciones desde PyPI funcionen sin cargar el código fuente por separado. 4 colaboradores. ↩

  59. Notas de la versión v0.15.0 de Hermes Agent y la página de versiones de Hermes Agent. «The Velocity release», etiqueta v2026.5.28. Estadísticas: 1.302 commits, 747 PR fusionados y 321 colaboradores de la comunidad. Refactoriza run_agent.py en un 76 % (de 16.083 a 3.821 líneas distribuidas en 14 módulos). Añade la plataforma Kanban multiagente (descomposición automática, topología de enjambre, ajustes de modelo por tarea, tareas programadas y administración de worktrees). session_search se rediseñó para ser 4.500 veces más rápido y se eliminó la dependencia de LLM. Defensa contra promptware para impedir inyecciones de prompts de la clase Brainworm en tres puntos críticos de seguridad. La integración con Bitwarden Secrets Manager sustituye varias claves API específicas de cada proveedor por un único token de arranque. Los paquetes de skills permiten cargar varias skills con un solo comando slash. Orquestador de sesiones en la TUI para administrar varias sesiones desde una sola ventana de terminal. Compatibilidad con Krea 2 (Medium/Large) y el plugin FAL para generar imágenes. La ronda de integración con xAI añade un plugin de búsqueda web, OAuth upstream, detección de modelos retirados y pausas naturales de TTS en la salida de voz. Una versión de parche mencionada en GitHub corrige el bucle de recarga con error 401 del dashboard, el requisito de que --insecure de Docker tenga definida explícitamente la variable de entorno HERMES_DASHBOARD_INSECURE=1, la resolución de comandos independientes de MCP (npx, npm, node) en Docker, el renderizado de la página Skills, el manejo de SIGTERM en los workers de Kanban, el catálogo completo de Skills con 19.932 entradas mediante el mapa del sitio y un pequeño lote de correcciones relacionadas con la entrega de .md, la seguridad de las sondas del gateway, la ocultación de URLs web, la capacidad de visión de los workers de Kanban y los valores predeterminados de observación retrospectiva. ↩↩↩↩

  60. Notas de la versión v0.11.0 de Hermes Agent. 23 de abril de 2026. «The Interface release»: reescritura completa de la CLI interactiva con React/Ink y un backend Python JSON-RPC (tui_gateway); arquitectura de transporte conectable (agent/transports/); integración nativa con AWS Bedrock mediante Converse API; cinco nuevas rutas de inferencia (NVIDIA NIM, Arcee AI, Step Plan, Google Gemini CLI OAuth, Vercel ai-gateway); GPT-5.5 mediante Codex OAuth; QQBot como la 17.ª plataforma de mensajería, con configuración mediante escaneo de código QR; superficie ampliada de plugins (comandos slash, despacho de herramientas, bloqueo de ejecución y transformación de resultados); /steer <prompt> para orientar al agente durante una ejecución, inyectando contexto después de la siguiente llamada a una herramienta sin interrumpir la caché del prompt; hooks de shell para eventos del ciclo de vida sin plugins Python; modo de entrega directa mediante webhook que reenvía las cargas útiles directamente al chat de una plataforma; delegación más inteligente con roles de orquestador + profundidad de generación configurable + coordinación de archivos; sistema de plugins del dashboard, cambio de tema en vivo, i18n y adaptación a dispositivos móviles. Estadísticas desde v0.9.0: 1.556 commits · 761 PR fusionados · 1.314 archivos modificados · 224.174 inserciones · 29 colaboradores de la comunidad. Consulta también: etiqueta de la versión de Hermes Agent v0.11.0 en GitHub. ↩↩↩

  61. Notas de la versión 0.10.0 de Hermes Agent. 16 de abril de 2026. «La versión de Tool Gateway». Integración con Nous Tool Gateway para suscriptores de pago de Nous Portal, que ofrece acceso administrado a la búsqueda web de Firecrawl, la generación de imágenes con FAL / FLUX 2 Pro, OpenAI TTS y la automatización del navegador mediante Browser Use, sin claves adicionales de API. Activación individual para cada herramienta mediante el nuevo campo de configuración use_gateway. Durante la ejecución, se da prioridad al gateway sobre las claves directas de API cuando ambos están configurados. Integración completa con hermes tools y hermes status. Reemplaza la variable de entorno obsoleta HERMES_ENABLE_NOUS_MANAGED_TOOLS. Implementación a cargo de @jquesnelle (emozilla). El CLI de Hermes Agent sigue teniendo licencia MIT y siendo completamente de código abierto; el gateway es una integración con el producto de suscripción Portal existente, no un muro de pago para el CLI. Consulta también Nous Portal para conocer los precios de la suscripción y registrarte. ↩↩↩