Guía: Cómo desplegar Hermes Agent en Railway con Git-Ops
Configurar y administrar un servidor VPS no es para todo el mundo. A muchos desarrolladores les encanta la idea de tener un agente autónomo de IA corriendo las 24 horas del día, pero les horroriza la idea de tener que conectarse por SSH, gestionar firewalls, renovar certificados de seguridad o actualizar dependencias de Linux.
Tienen toda la razón. Si tu foco es construir el comportamiento de tu agente, tu tiempo no debería perderse gestionando sistemas operativos en consolas oscuras.
Para los desarrolladores que quieren un despliegue profesional sin fricciones, la solución moderna se llama Railway.
Hoy te quiero enseñar paso a paso cómo desplegar Hermes Agent en Railway mediante Git-Ops (despliegue automático al hacer push en GitHub) y cómo configurar volúmenes persistentes para que tu agente no pierda su memoria. Como vimos en nuestra guía de despliegue de Hermes Agent en un VPS con Docker Compose, las arquitecturas persistentes son clave para evitar la amnesia agéntica, pero Railway nos permite implementarlo con un solo clic.
Las ventajas de Railway para la Era Agéntica
Railway es una plataforma de nube (PaaS) que elimina la complejidad de la infraestructura. Para proyectos agénticos con frameworks como Hermes, aporta ventajas críticas:
- Git-Ops Nativo: Cada vez que haces
git pusha tu rama principal en GitHub, Railway compila la nueva versión, realiza los tests y redespliega de forma automática. - Volúmenes Persistentes Sencillos: Permite montar un disco duro virtual en caliente con un solo clic, permitiendo que tu base de datos SQLite y tus nuevas Skills sobrevivan a los despliegues.
- Escalabilidad de recursos: Puedes ajustar la CPU y la RAM del contenedor de tu agente desde un panel visual intuitivo sin reiniciar servidores.
Paso 1: Preparar tu Repositorio en GitHub
Ollama y Hermes Agent se pueden empaquetar de forma muy sencilla en un contenedor Docker. Para desplegar en Railway, necesitas un repositorio de GitHub (puede ser privado) con tres archivos clave:
1. El archivo Dockerfile
Este archivo indica a Railway cómo compilar la imagen de tu agente:
# Usar la imagen oficial de Hermes Agent
FROM nousresearch/hermes-agent:latest
# Directorio de trabajo
WORKDIR /app
# Copiar archivos de configuración y la carpeta de habilidades
COPY hermes.config.json ./
COPY skills/ ./skills/
# Variables de entorno por defecto
ENV NODE_ENV=production
# Ejecutar el agente en segundo plano usando el archivo de configuración
CMD ["hermes", "start", "--config", "hermes.config.json"]
2. El archivo hermes.config.json
Aquí declaras el comportamiento de tu agente y los canales activos (ej. Telegram):
{
"agent": {
"name": "RailwayGuard",
"persistence": {
"provider": "sqlite",
"path": "/app/data/memory.db"
}
}
}
(Nota que la ruta de la base de datos apunta a /app/data, que es donde montaremos el disco duro persistente).
Paso 2: Configurar las Variables de Entorno en Railway
Una vez que conectas tu repositorio de GitHub a tu proyecto en el panel de Railway, la plataforma detectará el Dockerfile e iniciará la compilación. Antes de que termine, debes ir a la pestaña Variables de tu servicio y añadir tus credenciales y tokens privados:
OPENROUTER_API_KEY: Tu clave para acceder a los LLMs (como Claude 3.5 Sonnet).TELEGRAM_BOT_TOKEN: El token de tu bot de control.TELEGRAM_ADMIN_CHAT_ID: Tu identificador de chat para evitar que extraños den órdenes a tu agente.NOTION_API_KEY: Si usas Notion como CRM o base de datos externa vía MCP.
Paso 3: Configurar el Volumen Persistente (Crucial)
Por defecto, los contenedores de Railway son efímeros. Si haces un cambio en tu código y realizas un nuevo deploy, Railway destruirá el contenedor viejo y levantará uno nuevo. Si no configuras persistencia, tu agente olvidará todas las conversaciones pasadas y las habilidades que haya auto-aprendido.
Para evitar la amnesia agéntica:
- En el panel visual de tu servicio en Railway, haz clic en Settings.
- Desplázate hasta la sección Volumes y haz clic en Add Volume.
- Configura el Mount Path (ruta de montaje) exactamente como:
/app/data. - Guarda los cambios.
A partir de este momento, Railway mantendrá un disco de almacenamiento persistente montado en esa carpeta. Aunque realices 50 despliegues al día por Git-Ops, la base de datos de memoria del agente quedará intacta.
Este flujo de Git-Ops y persistencia en la nube es la base de las automatizaciones avanzadas que implementamos en el curso de Construye con IA y que exploramos a nivel de producción en el nuevo curso de Agentes IA Autónomos en Producción con Hermes Agent.
Conclusión: La nube sin dolores de cabeza
El paradigma de Git-Ops te permite centrarte en mejorar las instrucciones, prompts y scripts de tu agente de IA localmente. Con hacer un push en tu rama de Git, Railway se encarga de compilar, asegurar la persistencia en disco y poner tu sistema agéntico a operar las 24 horas del día sin necesidad de gestionar servidores manualmente.
Si quieres debatir con otros desarrolladores senior sobre cómo optimizar tus despliegues en la nube y compartir arquitecturas de automatización con IA, te espero en Dominicode Labs.
Preguntas Frecuentes (FAQ)
¿Cómo gestiona Railway las actualizaciones de Skills autogeneradas?
Si tu agente genera una nueva habilidad a través del Self-Improving Loop, este script se guardará en la carpeta local /skills. Para evitar perderlas al redesplegar, se recomienda mapear la carpeta /app/skills a otro volumen persistente de Railway o configurar un script de backup que sincronice estas habilidades con tu repositorio de forma segura.
¿Railway tiene algún costo para este tipo de despliegues?
Railway ofrece un modelo de pago por consumo bastante económico (a partir de una tarifa plana básica de $5 USD al mes que incluye créditos de cómputo). Dado que la inferencia de lenguaje se hace a través de APIs externas, el consumo de CPU y RAM de Hermes Agent en Railway es mínimo y se mantendrá dentro de los límites más bajos.
¿Cómo puedo verificar que el volumen persistente funciona?
Puedes realizar una prueba conversacional con tu bot en Telegram, pedirle que recuerde un dato específico, realizar un redespliegue de tu servicio desde el panel de Railway y volver a preguntarle. Si el agente recuerda el dato previo, significa que tu base de datos SQLite se está leyendo correctamente desde el volumen montado en /app/data.
¿Se pueden usar sandboxes de Docker efímeros en Railway?
Sí, pero requiere configurar soporte para Docker-in-Docker (DinD) en las variables del servicio de Railway para permitir que el agente levante contenedores hijos de diagnóstico de manera aislada y segura, tal como se detalla en el módulo avanzado de despliegue del curso.
Por Bezael Pérez — Developer senior con más de 15 años de experiencia y fundador de Dominicode.
