v0.21.4

Hermes Agent v0.21.4


Overview

v0.21.4 — The One-Gateway Patch. Publicada el 21 de septiembre de 2026. Desde la v0.21.3: 5.071 commits sin merge · 5.169 archivos modificados (+312.961 / −62.855) · 1.812 PR fusionados · 2.116 incidencias cerradas, medido en el commit 4b8a8134009a8727a289bcabeb0019fedd353128.

Este tag existe por los consumidores posteriores: las imágenes Docker, Hermes Cloud y los despliegues alojados se construyen desde el tag de release más reciente, así que las correcciones de esta ventana tienen que aterrizar en una versión estable antes de que los usuarios de la nube puedan recibirlas. El cuerpo del release dice explícitamente que el texto completo y curado se aplaza a la v0.22.0, que documentará todo desde la v0.21.0 en adelante — highlights, áreas funcionales y créditos de contribuidores. Esta página deja constancia de para qué sirve el tag y de los cambios de la ventana que ya están vivos en tu máquina y todavía no se han documentado en ninguna parte.


Destacados

1. Convergencia de la topología del gateway: un solo gateway anfitrión por máquina

El mayor cambio arquitectónico de la ventana. Exactamente un proceso hermes gateway run por host y por usuario del sistema operativo, que sirve a todos los profiles; el gateway run de un profile secundario ahora se adhiere al proceso anfitrión (imprime su PID y el conjunto de profiles servidos, salida 0) en lugar de arrancar uno segundo. gateway start --all y restart --all se refieren a ese único multiplexor del host, y nunca barren un gateway que esté ejecutando otro profile.

El viejo interruptor gateway.multiplex_profiles: false queda retirado: aún se parsea, pero ya no puede fijar un proceso de gateway aparte — se resuelve como una clave sin definir y registra un aviso. Un profile con nombre no puede instalar una nueva unidad de gateway sin --force, y --standalone se ha eliminado. La ruta de actualización es hermes gateway migrate --multiplex --dry-run para leer el plan, y después hermes gateway migrate --multiplex para aplicarlo — la convergencia se define por la topología, no por el flag de configuración, así que volver a ejecutar el comando es la vía de recuperación tras una migración interrumpida. PRs #118273, #118097, #118433.

2. Conectores: conecta una aplicación desde la conversación

Un usuario pide por chat conectar Notion y el backend realiza toda la conexión: recoge los valores, muestra el enlace de inicio de sesión, y el agent puede llamar a la nueva herramienta en el mismo turno. El escritorio, hermes --tui y la CLI clásica dibujan el mismo paso de configuración. El repositorio incluye un catálogo de 65 servidores MCP revisados, 55 de ellos con OAuth (#111008).

3. Superficie de CLI y de agent: salida estructurada, skills fijados y modo journal

  • hermes chat -q "..." --format stream-json emite eventos JSONL en stdout (init / text / tool_use / tool_result / result), y el sobre final lleva las estadísticas de token y un código de salida — así CI puede consumir una ejecución sin raspar la pantalla (#90411).
  • skills.auto_load en config.yaml fija skills como completamente cargados al inicio de cada nueva session, en agentes de CLI, TUI, gateway, cron y API; la inyección se resuelve una vez por agent y es estable byte a byte, así que la caché de prompt sobrevive (#92048).
  • hermes sessions set-journal-mode delete|wal convierte state.db (u otro almacén mediante --db) entre el modo journal WAL y DELETE en frío: se niega mientras algún proceso mantenga el archivo abierto, nombra a cada titular y vuelve a leer los bytes de cabecera para verificar (#117684).

4. Aislamiento de profiles: una tanda de correcciones P1

“Un backend, muchos profiles” amplifica los errores de delimitación de ámbito, y esta ventana cerró una tanda de ellos. #118275 hace que cada ruta REST respete el profile que nombra la petición — antes, POST /api/memory/reset?profile=worker_beta borraba el MEMORY.md del profile de arranque, y las rutas destructivas ahora devuelven 400 cuando el destino no tiene nombre en un host con varios profiles. #118373 restaura la resolución OAuth del profile raíz para los profiles con nombre, y arregla los fallos No Codex credentials stored posteriores a la actualización. #118246 hace que el escritorio se adhiera al backend del host en lugar de lanzar un hermes serve por profile.

Mejoras

  • mcp.discovery_concurrency limita la concurrencia de conexión MCP en el arranque (por defecto 4, 0 para ilimitado): con 8 servidores stdio el pico medido baja de 8 a 4, y desaparece la tormenta de procesos (#117956).
  • Mensajes directos no autorizados con tres estados: gateway.unauthorized_dm_behavior gana decline, con unauthorized_dm_decline_message para el texto, y anulaciones por plataforma.
  • Ventana temporal de session_search: nuevos límites after / before (fechas ISO o duraciones relativas como 7d / 24h / 2w), más un reintento con coincidencia OR relajada cuando la coincidencia estricta no encuentra nada.
  • Escritorio: selector de fuente para el chat y la interfaz (#111226), minimizar a la bandeja (#118441), invocación del HUD con un toque de tecla modificadora (#118446), un cajón de pila de estado por chat (#118407), desinstalación de plugins y actualización del motor local con un clic.
  • Un solo reinicio del gateway por actualización: hermes -p X update y hermes -p Y update reinician entre ambos el gateway del host una vez, y el aviso llega a cada profile servido (#118108).
  • Actualizaciones de catálogo: LTX 2.5 y Kling O3 Standard se unen a la familia de vídeo de FAL; el catálogo de plugins suma una tanda de plugins de la comunidad, y cada plugin y cada autor tienen ahora su propia página con el README fijado a un commit revisado.

Correcciones

  • Un 429 del gateway gestionado en image_generate y en el vídeo de FAL se reconoce como límite de tasa y se reintenta una vez, en lugar de informar de que “puede que el modelo aún no esté habilitado” (#118311).
  • Un aviso posterior a la actualización dirigido a una plataforma que nunca se conecta deja de reintentar, en lugar de registrarse cada 2 segundos para siempre (#118312).
  • La llamada de auto-título ya no compite con la respuesta del turno en un servidor de modelo autoalojado de una sola ranura (#117494).
  • Cuando un provider rechaza una imagen, solo se recorta la copia de la petición — la session ya no se marca como sin soporte de visión (#118316).
  • El TimeoutError de un worker de compresión ya no se confunde con un timeout de sondeo (#118319); el mantenimiento de sessions corre en su propio pool, así que no puede dejar sin recursos a los cuerpos de los turnos (#118318); el historial de la conversación sobrevive a la recuperación con códec ASCII (#118313).
  • La limpieza de objetos git de solo lectura en Windows (checkpoints, plugins, catálogo MCP, distribuciones de profile) ya no falla (#117609).

Actualización

hermes update                      # instalaciones por git
# Docker / Hermes Cloud: las imágenes se construyen desde este tag
docker pull nousresearch/hermes-agent:v2026.9.21

En una máquina con varios profiles, empieza por hermes gateway status y luego lee una vez hermes gateway migrate --multiplex --dry-run.

← Hermes Agent Changelog