¿Qué es Hermes Agent y por qué Docker es la forma correcta de ejecutarlo?
Hermes Agent es un agente de IA autónomo de Nous Research con un circuito de aprendizaje incorporado. A diferencia de los agentes sin estado que comienzan de nuevo en cada ejecución, Hermes crea una biblioteca de habilidades persistente. Cada tarea completada puede convertirse en una habilidad reutilizable, lo que hace que el agente sea considerablemente más capaz con el tiempo.
Ejecutar Hermes sin sistema operativo funciona, pero crea problemas reales:
- El estado de las habilidades y el historial de conversaciones están vinculados al sistema de archivos de una sola máquina.
- Reproducir el entorno en las reconstrucciones de VPS requiere trabajo manual
- El aislamiento del proceso No significa que un subproceso fuera de control puede afectar a su host
Docker resuelve los tres. Un contenedor configurado correctamente le brinda portabilidad, aislamiento y, con la estrategia de volumen adecuada, un estado de aprendizaje persistente que sobrevive a las actualizaciones de imágenes.
Two Docker Modes Explained: elija antes de comenzar
La mayoría de las guías omiten esta decisión por completo y pasan a docker run. No. Los dos modos tienen perfiles operativos y de seguridad significativamente diferentes.
| Mode 1: Contenedor interior de Hermes | Mode 2: Docker como terminal Sandbox | |
|---|---|---|
| que corre donde | Hermes + its runtime live inside the container | Hermes corre sobre el anfitrión; Docker crea contenedores sandbox desechables para tareas de terminal |
| Isolation | Hermes itself está aislado | Only the output of terminal tasks está aislado |
| State management | Volumes handle everything | Host filesystem holds Hermes state |
| Recommended para | VPS production, team deployments | Local dev, quick experimentation |
| DOCKER_HOST needed | No | Yes (sibling container setup) |
Rule of thumb: Si está implementando en un VPS o desea un entorno de producción reproducible, use el Modo 1. Si está ejecutando Hermes localmente y desea que active los entornos sandbox de Docker para la ejecución de código, use el Modo 2.
Mode 1 — Hermes corriendo dentro de un contenedor
Hermes y todas sus dependencias viven dentro de la imagen. Usted administra el estado a través de volúmenes con nombre. La política de reinicio del contenedor lo mantiene activo durante los reinicios. Este es el patrón de producción más común.
- Separación limpia del host: sin escrituras accidentales en su máquina
- Portabilidad total; volver a implementar en cualquier lugar con el mismo archivo de redacción
- Gastos generales ligeramente mayores que ejecutar de forma nativa
Mode 2: Docker como entorno de pruebas de backend de terminal
Aquí, Hermes se ejecuta directamente en el host (o en un contenedor) y llama al demonio Docker para que active contenedores efímeros para la ejecución del shell. Lo configura configurando DOCKER_HOST para que Hermes pueda comunicarse con el demonio:
export DOCKER_HOST=unix:///var/run/docker.sock # Linux
export DOCKER_HOST=tcp://host.docker.internal:2375 # Windows/Mac (Docker Desktop)
Nota de seguridad: Montar el socket Docker dentro de un contenedor otorga acceso casi raíz al host. Haga esto únicamente en entornos donde confíe completamente en la carga de trabajo del contenedor.
Prerequisites and Environment Setup
Antes de extraer cualquier imagen, confirme:
- Docker Engine 24+ o Docker Desktop 4.26+
- Una clave API de LLM lista: OpenAI (
OPENAI_API_KEY), Anthropic (Anthropic_API_KEY) o un punto final Ollama local - Acceso a Internet saliente en el puerto 443 (para llamadas API LLM)
- Al menos 2 GB RAM asignado al contenedor (se recomiendan 4 GB para configuraciones respaldadas por Ollama)
Windows-Specific Setup (Docker Desktop + WSL2)
Windows es donde la mayoría de las implementaciones de Docker fallan silenciosamente. Esté atento a estos:
Traducción de ruta de volumen
Docker Desktop en Windows traduce rutas a través de WSL2. Utilice rutas de estilo Linux dentro de los archivos de redacción; evite las rutas de estilo de Windows (C:\Users\...) en las definiciones de redacción volumes:.
# Correct — Docker Desktop translates this automatically
volumes:
- hermes_data:/root/.hermes
Socket versus tubería con nombre
En Windows, Docker expone una canalización con nombre, no un socket Unix. Para Mode 2, establezca:
DOCKER_HOST=npipe:////./pipe/docker_engine
Límites de memoria WSL2
Docker Desktop en Windows tiene como valor predeterminado WSL2 al 50% de la RAM del host. Si Hermes se siente lento, agregue un .wslconfig en su perfil de usuario de Windows:
[wsl2]
memory=4GB
processors=2
Inicio rápido: ejecute Hermes Agent con Docker en 5 minutos
Extraiga la imagen oficial y ejecute el asistente de configuración:
# Pull the latest image
docker pull nousresearch/hermes-agent:latest
# Run with a persistent volume for state
docker run -it \
-v hermes_home:/root/.hermes \
-e OPENAI_API_KEY=your_key_here \
nousresearch/hermes-agent:latest
El asistente de configuración se lanza en la primera ejecución. Le pedirá que:
- Seleccione su proveedor de LLM (OpenAI, Anthropic, Ollama o punto final personalizado)
- Ingrese su clave API o URL de punto final
- Configurar el backend del terminal (nativo o Sandbox Docker)
Una vez completada, verifique que la sesión esté funcionando:
> hello
Hermes debería responder y confirmar que su biblioteca de habilidades esté inicializada. Si ve skill store empty en un contenedor nuevo, es lo esperado: las habilidades se acumulan con el uso.
Production Deployment with Docker Compose
El comando simple docker run funciona para realizar pruebas. Para cualquier cosa persistente, use Compose.
version: "3.9"
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes-agent
restart: unless-stopped
stdin_open: true
tty: true
environment:
# Use environment secrets — never hardcode keys in compose files
OPENAI_API_KEY: ${OPENAI_API_KEY}
Anthropic_API_KEY: ${Anthropic_API_KEY}
HERMES_LOG_LEVEL: info
volumes:
- hermes_home:/root/.hermes # Config + conversation history
- hermes_skills:/root/.hermes/skills # Skill store — see next section
deploy:
resources:
limits:
memory: 2G
cpus: "1.5"
healthcheck:
test: ["CMD", "hermes", "--health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
volumes:
hermes_home:
hermes_skills:
Guarde sus claves API en un archivo .env (nunca comprometido con el control de versiones):
OPENAI_API_KEY=sk-...
Anthropic_API_KEY=sk-ant-...
Preservar las habilidades de Hermes en las reconstrucciones de contenedores
Esta es la preocupación de producción que más se pasa por alto. Hermes almacena las habilidades aprendidas por separado de la configuración general. Monte estas rutas explícitamente:
| Camino | Contiene | ¿Debe persistir? |
|---|---|---|
| /raíz/.hermes | Config, session history | Yes |
| /root/.hermes/skills | Learned skill library | Critical |
| /root/.hermes/memoria | Long-term memory store | Yes |
Al actualizar la imagen:
docker compose pull
docker compose up -d # Named volumes persist automatically
Advanced Topology: configuración de Host-Docker (contenedor hermano)
Esta arquitectura se utiliza cuando se desea que Hermes orqueste contenedores hermanos para la ejecución de código aislado (por ejemplo, ejecutar código enviado por el usuario de forma segura).
┌─────────────────────────────────┐
│ Docker Host │
│ │
│ ┌──────────────┐ │
│ │ hermes-agent │◄──socket──────┤── /var/run/docker.sock
│ │ container │ │
│ └──────┬───────┘ │
│ │ docker run (sibling) │
│ ┌──────▼───────┐ │
│ │ sandbox-1 │ (ephemeral) │
│ └──────────────┘ │
└─────────────────────────────────┘
Redacte la configuración para esta topología:
services:
hermes:
image: nousresearch/hermes-agent:latest
restart: unless-stopped
environment:
OPENAI_API_KEY: ${OPENAI_API_KEY}
DOCKER_HOST: unix:///var/run/docker.sock
HERMES_TERMINAL_BACKEND: docker
volumes:
- hermes_home:/root/.hermes
- /var/run/docker.sock:/var/run/docker.sock # Socket mount
group_add:
- "999" # docker group GID — adjust to match your host
Notas de seguridad para la producción:
- Restrinja el acceso al socket utilizando un proxy de socket Docker (por ejemplo,
Tecnativa/docker-socket-proxy) para limitar qué llamadas API puede realizar Hermes. - Nunca exponga el socket Docker en entornos multiinquilino
- Configure
userns-remapen el demonio Docker si necesita un aislamiento de host más fuerte
Connecting Hermes to Claude via Telegram Bot
La guía escrita No actualmente cubre esto; solo se muestra en forma de video. Aquí está la configuración completa.
Step 1: Crear un bot Telegram
Hable con @BotFather en Telegram:
/newbot
→ Name: Hermes Agent
→ Username: your_hermes_bot
→ Save the token: 123456:ABC-DEF...
Step 2: Obtenga su token Claude OAuth
En su consola Anthropic, genere una clave API con el alcance claude-3-5-sonnet o claude-opus-4. Configúrelo como Anthropic_API_KEY.
Step 3: agregue la configuración Telegram a su archivo de redacción
environment:
Anthropic_API_KEY: ${Anthropic_API_KEY}
HERMES_LLM_PROVIDER: Anthropic
HERMES_TELEGRAM_TOKEN: ${TELEGRAM_BOT_TOKEN}
HERMES_TELEGRAM_ALLOWED_USERS: "your_telegram_user_id"
Step 4: Encuentre su ID de usuario Telegram
Mensaje @userinfobot en Telegram: responde con su ID de usuario numérico.
Step 5: Iniciar el bot
docker compose up -d
Envía un mensaje a tu bot en Telegram. Hermes responderá a través del backend Claude. La restricción HERMES_TELEGRAM_ALLOWED_USERS garantiza que solo su cuenta pueda interactuar con el agente.
Implementación de múltiples arquitecturas (ARM64 / Oracle Free Tier / Raspberry Pi)
La imagen nousresearch/hermes-agent se envía como un manifiesto de múltiples arcos. Se admite ARM64: ejecútelo explícitamente en hosts ARM:
# Oracle Free Tier (Ampere A1) or Raspberry Pi 4/5
docker pull --platform linux/arm64 nousresearch/hermes-agent:latest
# Verify the architecture
docker inspect nousresearch/hermes-agent:latest | grep Architecture
Oracle Always Free Tier es la mejor opción de alojamiento sin costo para Hermes en 2026. La instancia Ampere A1 le brinda 4 núcleos ARM64 y 24 GB de RAM, más que suficiente para una implementación persistente de Hermes con un proveedor de LLM remoto.
Problemas conocidos específicos de ARM:
- Algunas cuantificaciones del modelo Ollama (Q8) se ejecutan más lentamente en ARM; prefiero Q4_K_M para inferencia local
- Si presiona
exec format error, confirme que está usando la marca--platform linux/arm64 - Docker Desktop en Apple Silicon maneja ARM de forma nativa: no se necesita bandera de plataforma
¿Gestionar flujos de trabajo de agentes complejos? EasyClaw lo tiene cubierto
Ejecutar Hermes Agent en Docker es una configuración poderosa, pero orquestar múltiples agentes de IA, administrar canales de habilidades y mantener la memoria persistente en flujos de trabajo complejos es donde la mayoría de los equipos chocan contra un muro. EasyClaw es una plataforma de agentes de IA nativa de escritorio creada exactamente para esto: coordinación de múltiples agentes de nivel de producción sin los dolores de cabeza de la infraestructura.
- Orquestación visual para canalizaciones de múltiples agentes: sin disputas YAML
- Memoria persistente y bibliotecas de habilidades que sobreviven a las sesiones.
- Se ejecuta completamente en su máquina: sin bloqueo de la nube ni fuga de datos
- Integraciones nativas con Telegram, Slack y webhooks personalizados
- Programación, monitoreo e inspección de registros integrados
Solución de problemas comunes de Hermes Agent Docker
Una tabla de referencia para los fallos que es más probable que encuentre:
| Falla | Síntoma | Diagnóstico | Arreglar |
|---|---|---|---|
| Image pull error | manifest unknown |
docker pull nousresearch/hermes-agent:latest falla |
Check Docker Hub para etiquetas válidas actuales; prueba --platform linux/amd64 |
| Volume permission denied | El contenedor sale con error de permiso el /root/.hermes |
docker run --rm -v hermes_home:/data busybox ls -la /data |
docker volume rm hermes_home y recrear, o arreglar con chown a través de un contenedor de inicio de Busybox |
| LLM auth failure | 401 Unauthorized en registros |
docker logs hermes-agent | grep -i auth |
Verify API key está configurado correctamente en .env; comprobar si hay espacios iniciales/finales |
| El asistente de configuración se bloquea | Wizard prompts but accepts no input | N / A | Asegúrese de que los indicadores -it estén configurados en docker run; redactar requiere stdin_open: true + tty: true |
| LLM unreachable | Connection refused a Ollama o punto final local |
docker exec hermes-agent curl http://host.docker.internal:11434 |
Utilice host.docker.internal en lugar de localhost; agregue --add-host si es necesario |
| Skills not persisting | Skill library empty after rebuild | docker volume ls — comprobar que existe volumen |
Asegúrese de que el volumen hermes_skills tenga el nombre (no el montaje vinculado) y el archivo de redacción haga referencia a él |
| Error de formato ARM exec | exec /usr/local/bin/hermes: exec format error |
docker inspect image | grep Architecture |
Vuelva a tirar con --platform linux/arm64 |
| Socket permission denied | permission denied /var/run/docker.sock |
ls -la /var/run/docker.sock en el host |
Agregue un usuario de contenedor al grupo de Docker a través de group_add en redactar |
Frequently Asked Questions
P: ¿Sobrevivirán mis habilidades de Hermes a un docker compose pull && up -d?
R: Yes: siempre y cuando sus habilidades estén almacenadas en un volumen con nombre (no en un montaje vinculado ni en un volumen anónimo). La configuración de redacción de esta guía utiliza hermes_skills como volumen con nombre, que Docker conserva automáticamente en las actualizaciones de imágenes.
P: ¿Puedo ejecutar varias instancias de Hermes en el mismo host?
R: Sí. Asigne a cada instancia un container_name distinto y volúmenes con nombre separados. También deberá asegurarse de que no entren en conflicto en ningún puerto expuesto. Cada instancia acumula su propia biblioteca de habilidades independiente.
P: ¿Hermes Agent admite LLM locales a través de Ollama dentro de Docker?
R: Sí. Ejecute Ollama como un servicio independiente en la misma pila de redacción y apunte a Hermes a http://Ollama:11434 (usando el DNS interno de Docker). Evite apuntar a localhost desde el interior de un contenedor; use el nombre del servicio o host.docker.internal para Ollama del lado del host.
P: ¿Es seguro montar el conector Docker en el contenedor Hermes?
R: El montaje del socket otorga al contenedor privilegios casi raíz sobre su host. Es aceptable en un VPS de un solo usuario donde usted controla todas las cargas de trabajo. En entornos compartidos o de múltiples inquilinos, utilice un proxy de socket (por ejemplo, Tecnativa/docker-socket-proxy) para incluir en la lista blanca solo las llamadas API que Hermes necesita.
P: ¿Cuál es la especificación mínima del servidor para una implementación de producción de Hermes?
R: Con un proveedor LLM remoto (OpenAI/Anthropic), 1 vCPU y 2 GB RAM son viables. Para un backend Ollama autohospedado, necesitará al menos 8 GB de RAM y una CPU razonablemente moderna. El nivel gratuito Ampere A1 de Oracle (4 núcleos, 24 GB) cubre cómodamente ambos escenarios sin costo alguno.
P: ¿Cómo hago una copia de seguridad de las habilidades y la memoria aprendidas de Hermes?
R: Utilice docker run --rm -v hermes_skills:/data -v $(pwd):/backup busybox tar czf /backup/hermes-skills-backup.tar.gz /data. Ejecute esto como una tarea cron programada en su host para realizar copias de seguridad automáticas antes de cualquier actualización de la imagen.
Reflexiones finales: lista de verificación y próximos pasos
El ciclo de aprendizaje es lo que separa a Hermes de cualquier otro agente que haya ejecutado en Docker. La configuración anterior garantiza que el bucle realmente acumula (no se reinicia) cada vez que envía una actualización.
Antes de llamar a una implementación lista para producción, confirme:
- ☐ Volúmenes con nombre creados para
hermes_homeyhermes_skills - ☐ Claves API almacenadas en
.env, no codificadas en redacción - ☐
restart: unless-stoppedpolítica activa - ☐ Superación del control de salud:
docker inspect hermes-agent --format='{{.State.Health.Status}}' - ☐ Rotación de registros configurada (
max-size,max-file) - ☐ Límites de recursos establecidos para evitar el agotamiento de la memoria
- ☐ Asistente de configuración completado y primera sesión de chat verificada
- ☐ (Si Mode 2) Se confirma el montaje del socket Docker y se considera el proxy del socket
Próximos pasos para obtener valor de inmediato:
- Ejecute algunas tareas reales (resumen de archivos, revisión de código, investigación web) para inicializar la biblioteca de habilidades.
- Después de 10 a 15 tareas, ejecute
hermes skills listpara ver qué se ha aprendido - Revise GitHub de Nous Research para obtener documentos de configuración de agentes que cubren plantillas de habilidades personalizadas y ajuste de memoria.
- Si está en la capa gratuita Oracle, configure un
docker compose pull && docker compose up -dbasado en cron para actualizaciones de imágenes sin tiempo de inactividad y al mismo tiempo conserva el estado aprendido.