Hermes Flightplan #1: La guía definitiva para un agente de IA en Telegram siempre activo (código completo para copiar y pegar)

@witcheer
INGLÉShace 4 semanas · 22 jun 2026
111K
232
34
5
759

TL;DR

Esta guía ofrece un recorrido integral para implementar el agente de IA Hermes en un VPS o Mac, incluyendo integración con Telegram, recuperación automática tras fallos y una configuración segura mediante Nous Portal.

Quieres un agente de IA al que puedas enviar mensajes desde tu teléfono, uno que siga funcionando después de que cierres la laptop y que regrese por sí solo después de un reinicio. Hermes Agent hace esto: funciona como una puerta de enlace con la que te comunicas a través de Telegram, y una vez que lo configuras correctamente, se reinicia solo después de un bloqueo o un corte de energía.

Construí la misma configuración en dos equipos, un VPS en la nube económico y el Mac Mini en mi escritorio, para poder escribir todo el proceso sin omitir nada. Es una sola ruta. El equipo solo cambia lo que escribes en dos lugares: el comando de instalación y la parte que mantiene viva la puerta de enlace. Todo lo demás es idéntico.

Todo lo siguiente se ejecutó en mi propio hardware. La ruta de Linux es un Hetzner CX23 (x86, 2 vCPU, 4 GB de RAM, 40 GB de disco) en Ubuntu 24.04.4 LTS. La ruta de Mac es un Mac Mini M4 en macOS 15. Ambos ejecutaron Hermes Agent v0.16.0.

Lo que tendrás al final

  • Hermes Agent instalado, ejecutándose como un usuario normal, no como root
  • Un bot de Telegram al que le envías mensajes desde tu teléfono, bloqueado solo para tu cuenta
  • La puerta de enlace ejecutándose como un servicio administrado, para que regrese después de un bloqueo o reinicio
  • En el VPS, un equipo reforzado: SSH solo con clave, sin inicio de sesión como root, un firewall

Elige tu equipo

Un VPS es la forma más económica. Cualquier equipo x86 con 4 GB de RAM y unos 20 GB de disco libre puede ejecutar esto; el mío es un Hetzner CX23 a $7.79/mes (precios de Hetzner EE. UU., 2026-06-18). Alquílalo y siempre estará encendido por definición.

Un Mac que ya posees es la otra opción. Cualquier Mac con chip Apple Silicon que permanezca encendido funciona, y el costo de funcionamiento es cero más allá del modelo. La desventaja es que la capa de durabilidad es más complicada en macOS, lo que cubro al final.

Necesitas una clave SSH en tu propia máquina (ssh-keygen -t ed25519 si no tienes una), una cuenta de Telegram y un modelo para el agente. Esta guía apunta a Nous Portal, que es OAuth, por lo que no hay una clave API que guardar en un archivo. Hermes necesita un modelo con al menos 64k de contexto.

Paso 1: Prepara el equipo

en un VPS

Crea el servidor en tu proveedor: Ubuntu 24.04, una instancia x86 (no Arm, consulta la nota de costo) y pega tu clave pública SSH al crearlo.

Un equipo público nuevo necesita unos minutos de refuerzo antes de ponerle un agente. El script secure-box.sh de la receta lo hace en una sola pasada: una actualización de apt, un archivo de intercambio de 2 GB, un usuario sudo no root con tu clave, SSH solo con clave con inicio de sesión root desactivado y un firewall que solo permite SSH. Edita las dos variables al principio, cópialo, ejecútalo como root:

bash
1scp secure-box.sh root@<tu-ip-vps>:
2ssh root@<tu-ip-vps> 'bash secure-box.sh'

Esta imagen de Ubuntu se envió con PasswordAuthentication configurado en yes, aunque creé el equipo con una clave SSH. El script lo desactiva. Antes de cerrar la sesión de root, abre una segunda terminal y confirma que el nuevo usuario inicia sesión, para que un error no te deje fuera:

bash
1ssh hermes@<tu-ip-vps>

Desde aquí eres hermes, no root.

en un Mac

No hay paso de refuerzo. Es tu máquina en tu propia red, no un equipo público. Instala Homebrew si no lo tienes (el instalador lo usa en el siguiente paso) y ya estás listo.

Paso 2: Instala Hermes

La instalación es un solo comando, el mismo en ambos equipos, ejecutado como tu usuario normal:

bash
1curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
2source ~/.bashrc
3hermes --version

El instalador detecta tu sistema operativo y extrae su propio conjunto de herramientas (uv, Python 3.11, Node.js 22, ripgrep, ffmpeg, un Playwright Chromium para herramientas del navegador) en ~/.hermes, por lo que nunca toca tu Python del sistema. En mi equipo Hetzner instaló Hermes Agent v0.16.0 en Python 3.11.15.

Este es el paso pesado. En el VPS, llevó el disco de 1.2 GB usados a 7.8 GB, unos 6.6 GB, la mayor parte del motor del navegador y Node. Planea tener 20 GB libres y deja de preocuparte. Si se ejecuta a través de un comando SSH simple sin terminal, el instalador imprime "Setup wizard skipped (no terminal available)", lo cual está bien, la configuración es el siguiente paso.

En un Mac, se ejecuta el mismo comando, con un detalle: instala Homebrew primero. Con Homebrew presente, el instalador extrae git y sus dependencias sin necesidad de confirmación. Sin él, recurre a las herramientas de línea de comandos de Apple, que pueden abrir un diálogo de macOS que debes hacer clic, y un diálogo no es bueno a través de SSH (esto está en la rama de macOS del instalador). Después de eso, el flujo es el mismo que el anterior.

Paso 3: Apúntalo a un modelo

bash
1hermes setup --portal

Esto es OAuth contra Nous Portal: imprime una URL y un código, lo apruebas en el navegador, y ahora el equipo se comunica con un modelo sin una clave API en un archivo. Nous Portal tiene un nivel gratuito, y ejecuté todo en un modelo gratuito. Si prefieres traer tu propio proveedor, ejecuta hermes model y elige uno; la clave entonces reside en ~/.hermes/.env.

Paso 4: Comunícate con él

en un VPS

En el momento en que tu SSH se cae, una sesión en primer plano muere con él. tmux mantiene la sesión activa: inicia dentro de tmux, desvincúlate y sigue ejecutándose.

bash
1sudo apt-get install -y tmux
2tmux new -s hermes # luego, dentro: hermes

Desvincúlate con Ctrl-b y luego d, y reconéctate más tarde desde cualquier lugar:

bash
1ssh hermes@<tu-ip-vps>
2tmux attach -t hermes

El primer arranque del agente interactivo lleva un momento. El mío tardó unos 30 segundos en cargar el modelo y las habilidades antes de que apareciera el mensaje. Una vez que está activo, los comandos de barra funcionan.

/goal es el que vale la pena mostrar: establece un objetivo permanente en el que el agente trabaja a lo largo de los turnos, con un modelo juez que verifica después de cada turno si se ha completado.

bash
1/goal verifica la RAM total y el espacio libre en disco de este equipo usando herramientas de shell, luego informa ambos en una línea y marca el objetivo como completado

El mío ejecutó el comando de shell por sí mismo y regresó con "RAM total del VPS: 3.7 Gi, espacio libre en disco: 28 G" en unos 15 segundos. Eso es el agente usando sus propias herramientas.

Mantén dos ideas separadas: tmux mantiene una sesión interactiva abierta a través de una conexión SSH caída, pero no a través de un reinicio. Para una puerta de enlace no supervisada que sobreviva a un reinicio, quieres un servicio administrado, que es el paso 6.

en un Mac

Estás sentado frente a la máquina, por lo que puedes ejecutar hermes en una terminal. tmux aún ayuda si te conectas por SSH desde tu laptop, pero aquí es opcional.

Paso 5: La puerta de enlace de Telegram

Esta parte es idéntica en ambos equipos. Crea un bot: envía un mensaje a @BotFather en Telegram, envía /newbot y copia el token. Obtén tu ID de usuario numérico de @userinfobot. Luego configura la puerta de enlace:

bash
1hermes gateway setup

Elige Telegram, pega el token y establece los usuarios permitidos en tu ID numérico para que solo tú puedas comunicarte con él. El token se guarda en ~/.hermes/.env, el resto en ~/.hermes/gateway.json.

La configuración solo escribe la configuración. No inicia nada, por lo que el bot permanece en silencio, y eso sorprende a la gente: nada está consultando Telegram todavía. Inícialo en primer plano una vez para verificar que se conecta:

bash
1hermes gateway run

Quieres ver, en el registro:

bash
1gateway.run: Connecting to telegram...
2[Telegram] Connected to Telegram (polling mode)
3gateway.run: ✓ telegram connected

El modo de sondeo significa que la puerta de enlace se comunica con Telegram; nada se conecta a tu equipo, por lo que el firewall no necesita ningún puerto de entrada más allá de SSH. Envía un mensaje a tu bot; debería responder. Luego detén la puerta de enlace en primer plano con Ctrl-C, porque no puedes tener dos cosas sondeando el mismo token al mismo tiempo, y el siguiente paso lo ejecuta como un servicio.

Paso 6: Haz que sobreviva a un reinicio

Este es el único lugar donde los dos equipos divergen.

en un VPS: systemd

hermes gateway install registra la puerta de enlace como un servicio de systemd para que se reinicie en caso de bloqueo y regrese después de un reinicio. En esta versión, el instalador hace dos preguntas [Y/n] y no hay una bandera para omitirlas. Ejecútalo a través de un comando SSH no interactivo, lo natural al scriptear un equipo, y no obtiene respuesta, se aborta y no instala nada. Introduce las respuestas en stdin:

bash
1printf 'n\nY\n' | hermes gateway install

Las dos preguntas son "¿iniciar la puerta de enlace ahora?" y "¿iniciar automáticamente al iniciar sesión/al arrancar?". La n y luego Y dice: no lo inicies en este momento, pero actívalo al arrancar. El instalador también activa la persistencia de la sesión de usuario, que es lo que permite que un servicio de usuario se ejecute antes de que hayas iniciado sesión. Confírmalo, porque esto es lo que hace que "sobrevive al reinicio" sea verdadero y no solo "sobrevive al cierre de sesión":

bash
1loginctl show-user $USER -p Linger # queremos: Linger=yes

Inícialo y verifícalo:

bash
1hermes gateway start
2systemctl --user status hermes-gateway

Quieres active (running) y NRestarts=0. En mi equipo, la puerta de enlace usó unos 280 MB y toda la máquina se situó en unos 556 MB, cómodo en 4 GB.

Ahora la prueba real. Reinicia y no lo toques:

bash
1sudo reboot

El mío regresó en unos 15 segundos, la puerta de enlace se había iniciado por sí sola, se reconectó a Telegram y respondió al siguiente mensaje con el historial de la conversación anterior al reinicio intacto. Ese es el objetivo principal.

en un Mac: launchd y un vigilante

macOS usa launchd, no systemd, y hay una trampa. En macOS 15 con Hermes v0.16.0, hermes gateway start puede fallar al registrar el servicio de launchd y recurrir, sin decírtelo, a un proceso en segundo plano no supervisado. Ves esto:

bash
1Bootstrap failed: 5: Input/output error
2⚠ launchd cannot manage the gateway on this macOS version (launchctl exit 5)
3✓ Started gateway as a background process instead
4 It will NOT auto-start at login or auto-restart on crash.

Si tenías un trabajo de launchd funcionando antes, el comando lo descargó, y la alternativa funciona bien hasta el primer bloqueo o reinicio, luego tu agente desaparece sin nada que te lo diga. launchctl sin procesar funciona donde falla la CLI, incluso a través de SSH:

bash
1launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/ai.hermes.gateway.plist
2launchctl print gui/$(id -u)/ai.hermes.gateway | grep state # queremos: state = running

El plist inicia la puerta de enlace al iniciar sesión, pero no la reinicia en caso de bloqueo. Un vigilante de cron cierra ambas brechas, y cron se ejecuta al arrancar sin necesidad de inicio de sesión. La receta incluye gateway-watchdog.sh; verifica cada 5 minutos si el proceso de la puerta de enlace está activo y lo reinicia si no lo está. Instálalo en un horario:

bash
1(crontab -l 2>/dev/null; echo '*/5 * * * * $HOME/scripts/gateway-watchdog.sh >/dev/null 2>&1') | crontab -

He visto esta secuencia recuperar una puerta de enlace degradada en mi propio Mac Mini. Reinícialo y confirma que la puerta de enlace regresa en menos de cinco minutos sin iniciar sesión.

Verifica tu configuración

  1. El servicio está activo: systemctl --user status hermes-gateway en Linux (active (running)), o launchctl print gui/$(id -u)/ai.hermes.gateway | grep state en macOS (state = running)
  2. Envía un mensaje a tu bot: te responde e ignora a cualquiera que no esté en tus usuarios permitidos
  3. En Linux, loginctl show-user $USER -p Linger muestra Linger=yes
  4. Reinicia el equipo, espera, envía un mensaje al bot nuevamente sin iniciar sesión: responde

Costo

En el VPS, el equipo es el único gasto. El mío es un Hetzner CX23 a $0.012/hora, con un tope de $7.79/mes (precios de Hetzner EE. UU., 2026-06-18; el CX22 de la UE tiene la misma forma y es más barato).

En el Mac, es una máquina que ya posees, cero servicios adicionales. El modelo es gratuito en el nivel gratuito de Nous Portal en ambos casos.

Aquí, la memoria no es el límite: la puerta de enlace usó unos 280 MB, todo el equipo unos 556 MB, por lo que 1 GB de RAM es suficiente. El disco es el límite real: la instalación es de unos 6.6 GB, por lo que una imagen de 1 GB o 10 GB es ajustada, dale 20 GB. Y usa x86, es la opción segura.

Ejecútalo tú mismo y qué sigue

Ambos equipos tienen una receta completa con los scripts exactos, ejecutables tal cual:

Ahora tienes un agente siempre activo en Telegram que sobrevive a un reinicio.

El próximo Flightplan se basa en esto: trabajos programados que te envían un mensaje solo cuando algo importa, un espacio de trabajo sincronizado con git que el agente lee y escribe, y el flujo de borrador y aprobación que mantiene a un humano en cada acción pública.

Gracias por leer

Guardar con un clic

Lee artículos virales en profundidad con IA en YouMind

Guarda la fuente, haz preguntas concretas, resume el argumento y convierte un artículo viral en notas reutilizables en un único espacio de trabajo con IA.

Explora YouMind
Para creadores

Convierte tu Markdown en un artículo de 𝕏 impecable

Cuando publicas tus propios textos largos, dar formato en 𝕏 a imágenes, tablas y bloques de código es un fastidio. YouMind convierte un borrador completo en Markdown en un artículo de 𝕏 impecable y listo para publicar.

Prueba Markdown a 𝕏

Más patrones por descifrar

Artículos virales recientes

Explorar más artículos virales