Volver al blog
    GratisClaude CodeOllama

    Instala y domina Hermes, el agente de IA que aprende contigo

    Hermes Agent es gratis, de código abierto y se instala en una línea. Lo que no tiene nadie más: crea sus propias skills a partir de lo que hace y recuerda entre sesiones. Te cuento cómo instalarlo, sacarlo a tu Telegram y cerrarle las puertas antes de dejarlo encendido.

    JSJaime SerranoProgramador Full-Stack18 min
    Compartir

    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.

    HermesOpenClawClaude Code
    Qué esAgente personal que aprendeAsistente de mensajería, el más maduro en canalesAgente de terminal para construir cosas
    SkillsLas instala del hub y las crea él con la experienciaArchivos que escribes y mantienes túCarpetas que escribes tú o instalas
    MemoriaDos archivos más una base de datos con búsquedaArchivos MarkdownCLAUDE.md por proyecto
    ModeloCualquiera: Nous Portal, OpenRouter, Anthropic, OpenAI, Google, localCualquiera, con tu claveClaude, con tu suscripción
    PrecioGratis; pagas el modeloGratis; pagas el modeloCon 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#

    MensajeArreglo
    hermes: command not foundLa terminal no ha recargado el PATH. source ~/.bashrc (o ~/.zshrc), o cierra y abre la terminal
    El instalador se para descomprimiendoFalta xz-utils en Linux. Instálalo y repite
    uv: command not foundcurl -LsSf https://astral.sh/uv/install.sh | sh y repite
    Permission deniedHas 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 arrancaNo 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#

    ArchivoQué guarda
    config.yamlLa configuración que no es secreta: modelo, terminal, compresión, herramientas, aprobaciones
    .envClaves de API y tokens de bots. Solo secretos, y con permisos 600
    auth.jsonCredenciales de inicio de sesión de Nous Portal
    SOUL.mdLa 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#

    ComandoQué hace
    /helpLista todos los comandos de tu versión
    /new · /resetConversación nueva · borrar el historial de la actual
    /modelCambiar de proveedor o modelo sin salir
    /tools · /skillsEncender o apagar herramientas · cargar o descargar skills
    /personalityAplicar un preajuste de personalidad
    /memoryConsultar o actualizar la memoria persistente
    /reasoning-effortCuánto piensa antes de actuar: sube para lo difícil, baja para lo rutinario
    /compressionGestionar la compresión de contexto cuando la sesión se alarga
    /rollbackDeshacer cambios en archivos desde un punto de control
    /approveAprobar una operación pendiente
    /image · /browser · /voiceAdjuntar imagen · navegar · configurar la voz
    /status · /save · /stopEstado · 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 vez
    • session, durante esta conversación
    • always, siempre: añade el patrón a command_allowlist
    • deny, 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]
    FormatoEjemplos
    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#

    BackendAislamientoPara qué
    localNinguno; se apoya en las aprobacionesTu ordenador, contigo delante
    dockerContenedor con recursos limitadosUn gateway que trabaja solo. El contenedor es la frontera, y por eso ahí no pide aprobaciones
    sshOtra máquinaSeparar la mensajería de la ejecución
    modal, daytona, vercel_sandbox, singularitySandbox en la nube o en HPCEscalar 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 docker con límites de CPU, memoria y disco, y usuario sin privilegios.
    • Secretos en ~/.hermes/.env con permisos 600, y nada más ahí.
    • Revisar de vez en cuando command_allowlist y los registros de ~/.hermes/logs/.
    • Actualizar con hermes update. hermes doctor avisa además de paquetes de Python comprometidos.
    • Cinturón y tirantes: gateway en una máquina y ejecución en otra por ssh, y security.allow_lazy_installs: false para 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íntomaCausa y arreglo
    Respuestas vacías o cortadasProveedor mal configurado o clave caducada. hermes model y vuelve a elegir
    Un modelo local da timeout con contextos grandesEn .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 nadieNo hay lista de permitidos: el gateway deniega por defecto. Añade tu ID o usa emparejamiento
    Responde en privado pero no en el grupoPrivacidad de grupo activada en BotFather. Desactívala, saca al bot y vuelve a meterlo
    Las tareas programadas no se ejecutanEl 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 desconectaVuelve a escanear el QR. Si se repite, es el riesgo de la vía no oficial
    Un comando de esta guía no existehermes 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.

    Comentarios

    0 comentarios

    Crea una cuenta gratuita para unirte a la conversación.

    Todavía no hay comentarios. ¿Te ha servido, o lo ves de otra forma? Cuenta cómo lo aplicas en tu trabajo: lo que se comenta aquí acaba dando pie a los siguientes artículos.