Qué vas a conseguir
- Instalar Hermes Agent y dejarlo hablando con tu modelo en menos de media hora
- Saber elegir quién pone el modelo: la suscripción de Nous, tu propia clave o uno local
- Sacarlo de la terminal a tu Telegram, con tareas que corren solas de madrugada
- Cerrarle las puertas antes de dejarlo encendido en un servidor
0 €
es lo que cuesta Hermes. El modelo lo pagas aparte, y ahí sí hay factura
Qué es Hermes y por qué importa#
Hermes Agent es un agente de IA de código abierto, con licencia MIT, que Nous Research publicó en febrero de 2026. Se instala en tu ordenador, en un servidor de cinco dólares al mes o en un móvil Android, y trabaja con el modelo que tú elijas: Claude, GPT, Gemini, los modelos de Nous o uno que corras en tu casa.
Herramientas tiene más de cuarenta, pero eso hoy lo tiene cualquiera. Lo que no tiene nadie más es el bucle de aprendizaje.
Cuando Hermes resuelve algo que huele a repetible, guarda el procedimiento como una skill y la va afinando cada vez que vuelve a usarla. Mantiene notas sobre tu entorno y un perfil sobre ti que sobreviven al cierre de la terminal. Y un solo proceso, el gateway, lo conecta a Telegram, Discord, Slack, WhatsApp, Signal, email y Home Assistant a la vez.
| Hermes | OpenClaw | Claude Code | |
|---|---|---|---|
| Qué es | Agente personal que aprende | Asistente de mensajería, el más maduro en canales | Agente de terminal para construir cosas |
| Skills | Las instala del hub y las crea él con la experiencia | Archivos que escribes y mantienes tú | Carpetas que escribes tú o instalas |
| Memoria | Dos archivos más una base de datos con búsqueda | Archivos Markdown | CLAUDE.md por proyecto |
| Modelo | Cualquiera: Nous Portal, OpenRouter, Anthropic, OpenAI, Google, local | Cualquiera, con tu clave | Claude, con tu suscripción |
| Precio | Gratis; pagas el modelo | Gratis; pagas el modelo | Con Claude Pro o Max |
Lo que se suele creer
«Lo pruebo una tarde y ya veo si me sirve»
Hermes mejora con el uso porque aprende de él. La primera semana es peor que la décima, así que juzgarlo el primer día es juzgar la versión que menos sabe de ti. Dale un par de semanas de tareas reales antes de decidir.
Y es un proyecto joven que publica versiones cada pocas semanas. Si un comando
de esta guía no aparece en tu instalación, primero hermes update y luego la
documentación oficial(se abre en una pestaña nueva).
Si vienes de OpenClaw o de Claude Code#
No hace falta que empieces de cero. hermes claw migrate trae la configuración
de OpenClaw, y --dry-run te enseña qué haría antes de tocar nada.
hermes import-agent lee la de Claude Code o la de Codex.
Antes de instalar#
Cuatro cosas, y ninguna es complicada.
Sistema. Linux, macOS, Windows por PowerShell o por WSL2, y Android con Termux. Un VPS Linux barato sirve para tenerlo encendido siempre. Ojo con el Mac: la documentación oficial soporta solo Apple Silicon. En un Intel no cuentes con ello.
Requisitos previos. Git. En Linux, además, curl y xz-utils. Y ya. El
instalador se trae su propio Python 3.11 por uv, Node, ripgrep y ffmpeg,
así que no tienes que instalar nada de eso a mano ni tocar el Python del
sistema. Si además quieres la aplicación de escritorio, hace falta
build-essential (o g++).
Permisos. Sin sudo. El código va a ~/.hermes/hermes-agent/, el comando a
~/.local/bin/hermes y tus datos a ~/.hermes/. Todo dentro de tu carpeta. Hay
un modo root que instala en /usr/local para máquinas compartidas, pero no es
lo que quieres en tu portátil.
Modelo. Cualquiera con 64.000 tokens de contexto o más. Esto no es una recomendación de rendimiento: Hermes comprueba el contexto al arrancar y rechaza los que no lleguen. Con menos no hay sitio para el trabajo de varios pasos con herramientas.
Quién pone el modelo#
Hermes no cobra nada; el modelo sí. Tres caminos, y se cambian después con un comando, así que esta decisión no te ata.
Nous Portal, para empezar. La suscripción de Nous Research: un solo inicio de sesión da acceso a más de 300 modelos (Claude, GPT, Gemini, DeepSeek, los Hermes de Nous) y al Tool Gateway, que pone búsqueda web, generación de imágenes, voz y navegador sin más claves. Hay un nivel gratuito. Plus son 20 $ al mes con 22 $ de crédito, Super 100 $ con 110 $ y Ultra 200 $ con 220 $. El crédito sin gastar se arrastra hasta un tope (10 $, 50 $ y 100 $), y hay bonus al darte de alta y al renovar. Se configura con un comando y no gestionas ninguna clave.
Tus propias claves. Una clave de Anthropic, OpenAI, Google u OpenRouter, que
reúne cientos de modelos bajo una sola. Pagas por uso y la clave se guarda en
~/.hermes/.env. Es la vía si ya tienes claves o quieres control fino del
gasto; las herramientas que necesitan servicios externos te pedirán la suya.
Un modelo local. Ollama, vLLM o llama.cpp, en tu máquina o en una GPU
alquilada. Gratis por token, privado y exigente: necesitas un modelo con 64k de
contexto que corra decentemente. En hermes model eliges «Custom endpoint» y
pones la dirección (con Ollama, http://localhost:11434/v1).
Instalar#
Lanza el instalador
En Linux, macOS, WSL2 y Android con Termux, una sola línea. Descarga el código,
crea un entorno de Python aislado con uv, instala Node si no tienes una
versión reciente y deja el comando en ~/.local/bin. Tarda unos minutos.
No lo ejecutes con sudo: no lo necesita y te dejaría los archivos con el dueño
equivocado.
En Windows, decide la vía
La instalación nativa por PowerShell es reciente. Si algo se resiste, la vía rodada es WSL2 con Ubuntu y el comando del paso anterior. Para Mac y Windows hay además un instalador de escritorio con ventana en la web oficial: instala exactamente lo mismo.
Recarga la terminal y comprueba
hermes doctor revisa el entorno, detecta lo que falta y te dice cómo
arreglarlo. Es el primer comando que hay que lanzar cada vez que pase algo raro.
Va bien si hermes --version imprime un número y doctor no saca nada en rojo.
Que se queje de que falta un proveedor de modelo es normal: eso es lo siguiente.
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
En Windows nativo, el mismo instalador por PowerShell:
iex (irm https://hermes-agent.nousresearch.com/install.ps1)
Cuando termine, recarga la terminal. Este es el bloque que dice si ha ido bien:
source ~/.bashrc # en Mac con zsh: source ~/.zshrc
hermes --version
hermes doctor
Lo que se suele creer
«Con sudo se instala más limpio, y luego ya cambio permisos»
El instalador no pide permisos de administrador porque no los necesita: todo va
a tu carpeta de usuario. Lanzarlo con sudo te deja ~/.hermes y
~/.local/bin con dueño root, y a partir de ahí Hermes no puede escribir su
propia configuración. El síntoma llega después y no se parece a la causa.
Si ya lo has hecho: sudo chown -R "$USER" ~/.hermes ~/.local/bin y repite el
instalador sin sudo.
Si algo falla#
| Mensaje | Arreglo |
|---|---|
hermes: command not found | La terminal no ha recargado el PATH. source ~/.bashrc (o ~/.zshrc), o cierra y abre la terminal |
| El instalador se para descomprimiendo | Falta xz-utils en Linux. Instálalo y repite |
uv: command not found | curl -LsSf https://astral.sh/uv/install.sh | sh y repite |
Permission denied | Has usado sudo, o la carpeta de usuario no es tuya. Sin sudo, y comprueba que puedes escribir en ~/.local/bin |
| En un Mac Intel no arranca | No está soportado. La vía es una máquina Apple Silicon, un Linux o un VPS |
Configurar#
Pasa el asistente
hermes setup ofrece tres modos: Quick Setup (Nous Portal, el recomendado si
empiezas), Full Setup (eliges proveedor y claves a mano) y Blank Slate (lo
mínimo, activando cada cosa tú).
Con --portal se abre el navegador, inicias sesión, eliges modelo y el Tool
Gateway queda activado. Las credenciales van a ~/.hermes/auth.json.
Elige el modelo
Si eliges un proveedor con clave, te la pide y la guarda en ~/.hermes/.env.
Para uno local, «Custom endpoint» y la dirección de tu servidor.
Los proveedores que configures se quedan disponibles: cambiar de uno a otro
después es volver a hermes model, o /model en mitad de una conversación.
Enciende las herramientas que vayas a usar
hermes tools abre un menú por conjuntos: terminal, file, web, browser,
vision, image_gen, voz, memoria, tareas programadas y más.
Con Nous Portal, la búsqueda web, las imágenes, la voz y el navegador funcionan sin claves adicionales. Con tus propias claves, cada una te pedirá la suya. La búsqueda en X viene apagada y pide credenciales de xAI.
hermes setup # asistente completo
hermes setup --portal # directo a Nous Portal, en un solo paso
hermes model # menú de proveedor y modelo
hermes tools # encender y apagar herramientas
Dónde vive todo#
| Archivo | Qué guarda |
|---|---|
config.yaml | La configuración que no es secreta: modelo, terminal, compresión, herramientas, aprobaciones |
.env | Claves de API y tokens de bots. Solo secretos, y con permisos 600 |
auth.json | Credenciales de inicio de sesión de Nous Portal |
SOUL.md | La identidad del agente: quién es, cómo habla, qué prioriza. Lo editas tú |
memories/ | MEMORY.md y USER.md, la memoria persistente |
skills/ | Las skills instaladas y las que crea el agente |
sessions/, state.db, logs/ | Conversaciones, la base con búsqueda de sesiones y los registros |
config.yaml mínimo y sensato
2 huecos por rellenar
~/.hermes/config.yamlmodel: [PROVEEDOR]/[MODELO] provider: nous # o anthropic, openrouter, openai…terminal: backend: local # en un servidor, docker timeout: 180approvals: mode: smart # smart | manual | offcompression: enabled: truememory: memory_enabled: true user_profile_enabled: true
Si algo se define en dos sitios, manda la línea de comandos sobre config.yaml,
que manda sobre .env, que manda sobre los valores por defecto.
Primer uso#
Métete en la carpeta de un proyecto de verdad y pídele algo pequeño. hermes
abre la interfaz clásica; hermes --tui la moderna, con paneles.
La primera petición
Mira la carpeta en la que estamos y dime, en cinco líneas, qué es este
proyecto y cuál parece el archivo principal. No modifiques nada.Verás el bucle entero: lista archivos, lee alguno, resume. Para escribir varias
líneas, Alt+Intro (también Ctrl+J o Mayús+Intro). Para interrumpirlo,
escribe el mensaje nuevo y pulsa Intro; Ctrl+C también vale.
Los comandos de barra que vas a usar#
| Comando | Qué hace |
|---|---|
/help | Lista todos los comandos de tu versión |
/new · /reset | Conversación nueva · borrar el historial de la actual |
/model | Cambiar de proveedor o modelo sin salir |
/tools · /skills | Encender o apagar herramientas · cargar o descargar skills |
/personality | Aplicar un preajuste de personalidad |
/memory | Consultar o actualizar la memoria persistente |
/reasoning-effort | Cuánto piensa antes de actuar: sube para lo difícil, baja para lo rutinario |
/compression | Gestionar la compresión de contexto cuando la sesión se alarga |
/rollback | Deshacer cambios en archivos desde un punto de control |
/approve | Aprobar una operación pendiente |
/image · /browser · /voice | Adjuntar imagen · navegar · configurar la voz |
/status · /save · /stop | Estado · exportar la sesión · parar el bucle |
hermes -c # retomar la última
hermes --resume id-o-titulo # retomar una concreta
hermes sessions list # ver las anteriores
hermes journey # qué ha ido aprendiendo, y cuándo
hermes chat -q "Resume este repo en 5 puntos"
hermes -z "¿Qué hora es en Tokio?" # una respuesta y fuera; para scripts
hermes chat --image foto.png -q "¿Qué pone aquí?"
Una sesión por tarea. Lo que quieras que sobreviva va a la memoria, no al chat.
Cuando pide permiso#
Antes de ejecutar algo que pueda hacer daño, Hermes se para y pregunta. En el
modo smart, un modelo auxiliar decide qué es inocuo, qué es claramente
peligroso y qué es dudoso, y solo lo dudoso llega a ti. Respondes una de cuatro:
once, solo esta vezsession, durante esta conversaciónalways, siempre: añade el patrón acommand_allowlistdeny, no. Es lo que pasa si no contestas
Empieza respondiendo once. Pasa a always solo con comandos que veas repetirse
y que entiendas.
Nota
SOUL.md define quién es tu agente y /personality le cambia el tono al vuelo.
Si quieres un Hermes para el trabajo y otro para lo personal, con memorias y
skills separadas: hermes profile create trabajo y luego hermes -p trabajo.
Skills#
Skill
Una carpeta en ~/.hermes/skills/ con un archivo SKILL.md que describe un
procedimiento: cuándo usarlo, los pasos, las trampas y cómo comprobar el
resultado. Puede llevar plantillas y scripts al lado.
En llano: un apunte de «cómo se hace esto aquí», escrito para que lo lea el agente en vez de tener que explicárselo cada vez.
como el manual que le dejas a quien te sustituye en vacaciones. No tiene tu experiencia, pero con el manual hace el trabajo igual.
El formato sigue el estándar abierto de agentskills.io, así que las skills de Claude Code, de OpenAI o de la comunidad funcionan aquí sin tocarlas.
# ~/.hermes/skills/contenido/informe-semanal/SKILL.md
---
name: informe-semanal
description: Informe semanal de métricas de contenido en Notion
version: 1.0.0
metadata:
hermes:
tags: [contenido, notion]
requires_toolsets: [terminal, web]
---
## When to Use
Cuando pidan el informe semanal, el resumen de la semana o las métricas.
## Procedure
1. Leer las publicaciones de los últimos 7 días de la base de Notion.
2. Calcular alcance, retención media y guardados por pieza.
3. Escribir el informe con la plantilla de templates/informe.md.
## Verification
Las cifras coinciden con las de Notion. Si una falta, se marca como
[SIN DATO], no se estima.
Se cargan solas cuando tu petición encaja con su descripción, o a mano:
/informe-semanal hazme el de esta semana. Puedes encadenar hasta cinco en un
mensaje.
Instalar del hub
1 hueco por rellenar
hermes skills browse # ver el catálogo hermes skills search notion # buscar en todas las fuentes hermes skills inspect fuente/ruta/skill # leerla ANTES de instalar hermes skills install fuente/ruta/skill hermes skills list hermes skills check # ¿hay cambios arriba? hermes skills update hermes skills uninstall [NOMBRE]
Las fuentes tienen niveles de confianza. official/ y los repositorios de
openai/, anthropics/, huggingface/ y NVIDIA/ son de confianza;
skills-sh/ y las URLs sueltas son comunidad. Todas pasan por un escáner que
busca exfiltración de datos, inyección de prompt y comandos destructivos. Lo
dudoso se puede forzar con --force después de leerlo. Lo peligroso se bloquea
siempre.
Dejar que las cree él#
Esta es la parte que no tiene nadie más. Puedes provocarla:
Pedirle que guarde lo que acabáis de hacer
1 hueco por rellenar
Lo que acabamos de hacer lo voy a necesitar cada semana. Conviértelo en una skill llamada [NOMBRE], con los pasos exactos que has seguido y la comprobación final de que las cifras coinciden.
Si prefieres revisar antes de que escriba nada en disco:
# en config.yaml
skills:
write_approval: true
# en el chat
/skills pending # qué quiere escribir
/skills diff id # ver el cambio
/skills approve id # o /skills reject id
¿Tienes skills en otras carpetas, las de Claude Code o las de tu equipo? No las
copies: skills.external_dirs en config.yaml con la lista de rutas. Las que
vienen dentro de un repositorio clonado exigen confianza explícita con
hermes skills trust antes de cargarse.
Memoria#
Dos archivos de texto en ~/.hermes/memories/, que el agente mantiene y tú
puedes editar a mano:
MEMORY.md— sus notas sobre tu entorno, tus convenciones, lo que ha aprendido. Tope de 2.200 caracteres, unos 800 tokens.USER.md— tu perfil: preferencias, cómo te comunicas, qué esperas de él. Tope de 1.375 caracteres, unos 500.
Los topes son a propósito, no una limitación técnica: la memoria se carga entera
al arrancar cada sesión, y una memoria corta que se cumple vale más que una
larga que diluye. Cuando se llena, la herramienta devuelve un error y el agente
tiene que consolidar antes de añadir. No se trunca nada en silencio. Si de
verdad los necesitas más grandes, memory_char_limit y user_char_limit los
mueven, pero piénsatelo: estás gastando contexto en cada arranque.
Hay un detalle que confunde a todo el mundo: lo que se guarda durante una sesión queda en disco al momento, pero se ve en la siguiente. El arranque es una foto fija.
Además de esos dos archivos, Hermes puede buscar en todas tus conversaciones
anteriores con búsqueda de texto completo sobre state.db, así que encuentra
cosas que no están en la memoria activa sin gastar contexto en cargarlas.
Hablarle a la memoria
Recuerda que mis vídeos van siempre en español de España, que mi
audiencia no es técnica y que odio las frases de relleno.¿Qué sabes de mí? Enséñame tu USER.md.Busca en nuestras conversaciones anteriores cuándo hablamos del formato
de los guiones y resume lo que decidimos.hermes journey te enseña cómo ha ido creciendo. Y hermes memory conecta
proveedores externos de memoria semántica como Honcho, Mem0 o Supermemory, que
para empezar no necesitas.
Al móvil#
El gateway es un único proceso que conecta Hermes a todas las plataformas a la vez y ejecuta las tareas programadas. Lo configuras una vez por plataforma y lo dejas encendido. Telegram es el más sencillo y el más estable: empieza por ahí.
hermes gateway setup # asistente: plataforma y tokens
hermes gateway # en primer plano, para probar
hermes gateway install # como servicio de usuario
sudo hermes gateway install --system # Linux: que arranque con la máquina
hermes gateway status
hermes gateway stop
En WSL2 los servicios del sistema no siempre funcionan: usa tmux o
nohup hermes gateway run.
Telegram#
Crea el bot
En Telegram, abre @BotFather, escribe /newbot, dale un nombre y un usuario
que termine en bot. Te devuelve el token. Es una contraseña: no lo pegues en
ningún chat.
Averigua tu ID
Escríbele a @userinfobot. No es tu nombre de usuario: es un número.
Configura y arranca
hermes gateway setup, eliges Telegram, pegas el token y tu ID. Arranca con
hermes gateway y escríbele al bot: debería contestar en segundos.
Dentro del chat tienes /new, /model, /status, /skill, /help y /stop.
Telegram, a mano en ~/.hermes/.env
3 huecos por rellenar
TELEGRAM_BOT_TOKEN=[TU_TOKEN] TELEGRAM_ALLOWED_USERS=[TU_ID] # varios, separados por comas TELEGRAM_HOME_CHANNEL=[TU_ID] # a dónde llegan las tareas programadas TELEGRAM_HOME_CHANNEL_NAME="Mis avisos"
En grupos, los bots de Telegram solo ven los comandos. Para que lea todos los
mensajes: en @BotFather, /mybots → tu bot → Bot Settings → Group Privacy →
Turn off, y saca y vuelve a meter al bot en el grupo. Autoriza el grupo con
TELEGRAM_GROUP_ALLOWED_CHATS (los IDs de grupo son negativos) y, si solo
quieres que responda cuando le mencionan, telegram: { require_mention: true }.
El canal «casa» es a dónde van los resultados de las tareas programadas. Desde
el propio chat, /sethome lo fija.
Discord#
En discord.com/developers/applications, New Application. En la pestaña Bot,
activa los Privileged Gateway Intents Server Members y Message Content:
sin el segundo, el bot no lee nada. Reset Token y cópialo, que solo se muestra
una vez.
En Installation, genera el enlace de invitación con los ámbitos bot y
applications.commands, y permisos para ver canales, enviar mensajes, insertar
enlaces, adjuntar archivos y leer el historial.
Tu ID de usuario: Ajustes → Avanzado → Modo desarrollador, y luego clic derecho sobre tu nombre → Copiar ID.
Discord en ~/.hermes/.env
3 huecos por rellenar
DISCORD_BOT_TOKEN=[TU_TOKEN] DISCORD_ALLOWED_USERS=[TU_ID] DISCORD_REQUIRE_MENTION=true # en canales, solo si le mencionas DISCORD_FREE_RESPONSE_CHANNELS=[IDS] # canales donde responde sin mención
WhatsApp#
hermes whatsapp te pregunta el modo (bot, con un número dedicado, o
self-chat, hablando contigo mismo) y muestra un QR. En el móvil: WhatsApp →
Ajustes → Dispositivos vinculados → Vincular un dispositivo.
Lo que se suele creer
«Vincular mi WhatsApp de siempre no tiene riesgo»
WhatsApp no admite bots fuera de su API de empresa, y un número vinculado así
puede acabar bloqueado. Si el número te importa, usa uno secundario o la vía
oficial con hermes whatsapp-cloud.
Además, ~/.hermes/platforms/whatsapp/session es tu sesión de WhatsApp.
Protégela como una contraseña.
WhatsApp en ~/.hermes/.env
1 hueco por rellenar
WHATSAPP_ENABLED=true WHATSAPP_MODE=bot # bot | self-chat WHATSAPP_ALLOWED_USERS=[34600000000] # con prefijo de país, sin el +
Quién puede hablar con tu agente#
Por defecto, nadie. Sin listas de permitidos el gateway rechaza a todo el mundo
y te lo avisa al arrancar. Dos formas de abrir la puerta: las listas por
plataforma (o la global GATEWAY_ALLOWED_USERS), o el emparejamiento, donde un
desconocido que escribe recibe un código de ocho caracteres que caduca en una
hora y tú lo apruebas desde la terminal.
Emparejamiento
2 huecos por rellenar
hermes pairing approve telegram [CÓDIGO] hermes pairing list hermes pairing revoke telegram [ID_USUARIO]
Lo que se suele creer
«Pongo GATEWAY_ALLOW_ALL_USERS y ya lo cierro luego»
En un agente con acceso a la terminal, eso es dar tu ordenador a cualquiera que encuentre el bot. No existe un caso en que compense, ni siquiera durante cinco minutos para probar.
Slack, Signal, email y Home Assistant se configuran con el mismo
hermes gateway setup. Para Slack, hermes slack genera el manifiesto de la app.
Tareas programadas#
Con el gateway encendido, Hermes ejecuta tareas a la hora que le digas, en una sesión nueva cada vez, y te manda el resultado a donde quieras. Se pide en lenguaje normal.
Una tarea, dicha como se le diría a una persona
Cada día laborable a las 8, revisa las novedades de los tres canales
de YouTube de mi lista canales.txt, resume en cinco líneas lo que han
publicado y mándamelo por Telegram. Si no hay nada nuevo, no me escribas.Eso ya crea la tarea. Si prefieres verla y tocarla desde la terminal:
O con control fino
4 huecos por rellenar
hermes cron create "every 2h" "Comprueba que la web responde" hermes cron list hermes cron run [ID] # ejecutarla ahora hermes cron pause [ID] # y resume hermes cron edit [ID] --schedule "weekdays at 9am" hermes cron remove [ID]
| Formato | Ejemplos |
|---|---|
| Una vez, dentro de | "in 30m", "in 2h", "in 1d" |
| Cada | "every 30m", "every 2h", "every hour" |
| Lenguaje natural | "every monday 9am", "daily at 7am", "weekdays at 9am" |
| Expresión cron | "0 9 * * *" a diario a las 9, "0 9 * * 1-5" laborables |
| Fecha exacta | "2026-10-01T09:00:00" |
El resultado va a origin (donde se creó la tarea), a local (se guarda en
~/.hermes/cron/output/), a una plataforma concreta o a all. El gateway mira
el reloj cada minuto.
Así no
Una tarea que toca cosas delicadas
Cada noche a las 3
, actualiza las dependencias del proyecto, haz commit y sube los cambios.Así sí
Una tarea que puede correr sin nadie delante
Cada noche a las 3
, comprueba si hay dependencias desactualizadas en el proyecto y mándame la lista por Telegram. No toques nada.Por qué
a las tres de la mañana no hay nadie para aprobar nada, y approvals.cron_mode: deny deniega por defecto. La primera tarea se queda a medias y por la mañana te encuentras un «no hizo nada» sin explicación. La segunda solo lee, así que termina siempre, y la decisión de tocar algo la tomas tú con la lista delante.
Seguridad#
approvals:
mode: smart # smart (recomendado) | manual (pregunta siempre) | off
timeout: 300 # segundos esperando tu respuesta
cron_mode: deny # qué hacer sin nadie delante
deny: # tus propias prohibiciones, siempre
- "git push --force*"
- "*curl*|*sh*"
Hay una lista negra que no se salta ni con --yolo ni con mode: off: borrar la
raíz del disco, bombas de procesos, formatear discos montados, descargar y
ejecutar desde una tubería. Y hay archivos que el agente no puede escribir
aunque quiera: ~/.ssh, ~/.aws, sus propios auth.json y .env, y los
.env de tus proyectos. HERMES_WRITE_SAFE_ROOT restringe además todas las
escrituras a las carpetas que digas.
Dónde ejecuta los comandos#
| Backend | Aislamiento | Para qué |
|---|---|---|
local | Ninguno; se apoya en las aprobaciones | Tu ordenador, contigo delante |
docker | Contenedor con recursos limitados | Un gateway que trabaja solo. El contenedor es la frontera, y por eso ahí no pide aprobaciones |
ssh | Otra máquina | Separar la mensajería de la ejecución |
modal, daytona, vercel_sandbox, singularity | Sandbox en la nube o en HPC | Escalar o aislar del todo |
terminal:
backend: docker
docker_image: "nikolaik/python-nodejs:python3.11-nodejs20"
container_persistent: true
container_memory: 4096 # MB
container_cpu: 2
cwd: "/opt/data"
Si lo montas en un VPS#
- Listas de permitidos explícitas o emparejamiento. Jamás «permitir a todos».
- Backend
dockercon límites de CPU, memoria y disco, y usuario sin privilegios. - Secretos en
~/.hermes/.envcon permisos 600, y nada más ahí. - Revisar de vez en cuando
command_allowlisty los registros de~/.hermes/logs/. - Actualizar con
hermes update.hermes doctoravisa además de paquetes de Python comprometidos. - Cinturón y tirantes: gateway en una máquina y ejecución en otra por
ssh, ysecurity.allow_lazy_installs: falsepara que ninguna configuración instale dependencias por su cuenta.
Nota
Hermes ya viene con algunas defensas puestas: escanea los archivos de contexto
(AGENTS.md, SOUL.md, .cursorrules) buscando instrucciones inyectadas,
bloquea peticiones a direcciones internas y de metadatos de la nube, y filtra
las variables de entorno que llegan a los servidores MCP. No sustituye a nada de
lo de arriba, pero es más de lo que trae la mayoría.
Mantener#
hermes update # última versión; sincroniza skills de todos los perfiles
hermes backup # zip con configuración, memoria, skills y sesiones
hermes import archivo.zip # restaurar en otra máquina
hermes profile create trabajo # un Hermes aparte, con su memoria y sus skills
hermes profile list
hermes -p trabajo # usarlo
hermes status # agente, autenticación y plataformas
hermes logs # registros del agente y del gateway
hermes insights # tokens, coste y actividad
hermes dashboard # panel web de configuración y sesiones
hermes mcp # conectar servidores MCP
hermes uninstall
Los perfiles exportados no llevan credenciales; para una copia completa,
hermes backup. Y si te pasas al ordenador nuevo: backup en el viejo,
instalador en el nuevo, import. Diez minutos.
Cuando algo no va#
Antes de nada, la secuencia oficial de recuperación. Casi todo se arregla en los dos primeros pasos:
hermes doctor → hermes model → hermes setup → hermes sessions list →
hermes -c → hermes gateway status
| Síntoma | Causa y arreglo |
|---|---|
| Respuestas vacías o cortadas | Proveedor mal configurado o clave caducada. hermes model y vuelve a elegir |
| Un modelo local da timeout con contextos grandes | En .env: HERMES_STREAM_READ_TIMEOUT=1800. Prueba el endpoint por separado antes de culpar a Hermes |
| «Session not found» | hermes sessions list, y confirma que estás en el perfil correcto (-p) |
| El bot no contesta a nadie | No hay lista de permitidos: el gateway deniega por defecto. Añade tu ID o usa emparejamiento |
| Responde en privado pero no en el grupo | Privacidad de grupo activada en BotFather. Desactívala, saca al bot y vuelve a meterlo |
| Las tareas programadas no se ejecutan | El gateway no está encendido. hermes gateway status, e instálalo como servicio |
| Una tarea nocturna «no hizo nada» | Tropezó con una aprobación y, sin nadie delante, denegó. Mira hermes logs |
| WhatsApp se desconecta | Vuelve a escanear el QR. Si se repite, es el riesgo de la vía no oficial |
| Un comando de esta guía no existe | hermes update. hermes --help y /help dicen lo que hay en tu versión |
Para pedir ayuda: hermes dump genera un resumen de tu instalación sin
secretos, listo para pegar. hermes debug share sube un informe con los
registros.
En resumen
- Hermes es gratis y de código abierto; lo que pagas es el modelo, y Nous Portal es la vía más corta para empezar
- Lo que lo separa del resto no son las herramientas, es que guarda lo que aprende: skills propias y memoria entre sesiones
- Antes de dejarlo encendido en un servidor, listas de permitidos y backend Docker. Nunca «permitir a todos»
Verificado contra la documentación oficial de Hermes Agent y la página de planes
de Nous Portal en septiembre de 2026. El proyecto publica versiones cada pocas
semanas: si un comando no coincide, hermes update primero y la documentación
después.