Leccion 4 de 5Gratis16 min

Corre el agente como servicio 24/7

Usa systemd para reiniciar el agente si falla

Ultima actualizacion: 02 de septiembre de 2026

Un proceso en una sesion SSH muere cuando cierras la terminal o se cae la red. Un servicio de systemd vuelve a levantarlo. Esa es la diferencia entre "lo probe" y "responde a las 3 de la manana".

OpenClaw

Si usaste:

Daemon OpenClaw
$openclaw onboard --install-daemon

OpenClaw deberia haber instalado un servicio de usuario. Verifica con:

Estado OpenClaw
$openclaw status openclaw doctor

Si el status dice que el daemon no esta activo, no inventes un unit a ciegas: vuelve a correr el onboarding con --install-daemon o revisa la documentacion de tu version. Un unit escrito a mano con el binario equivocado es la causa mas comun de "se instalo pero no contesta".

Para ver logs del daemon de usuario:

Logs OpenClaw (si el unit se llama openclaw)
$journalctl --user -u openclaw --since today

El nombre exacto del unit puede variar. Lista los units de usuario si no aparece:

Buscar el unit de OpenClaw
$systemctl --user list-units --type=service | rg -i 'openclaw|claw'

Hermes gateway con systemd

Crea un servicio de usuario. Sustituye ExecStart por la ruta real de which hermes:

# ~/.config/systemd/user/hermes-gateway.service
[Unit]
Description=Hermes Gateway
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
ExecStart=%h/.local/bin/hermes gateway start
Restart=always
RestartSec=10
WorkingDirectory=%h/agents
Environment=HOME=%h

[Install]
WantedBy=default.target

Restart=always cubre un crash del proceso. No cubre una microSD llena ni un token invalido: ahi el proceso puede "estar vivo" y seguir fallando.

Activalo:

Activar servicio Hermes
$mkdir -p ~/.config/systemd/user systemctl --user daemon-reload systemctl --user enable --now hermes-gateway.service loginctl enable-linger $USER

enable-linger es el detalle que falta en muchas Pis. Sin linger, systemd mata los servicios de usuario cuando no hay sesion SSH. El agente "funciona mientras estoy conectado" y muere al colgar.

Ver logs:

Logs del servicio
$systemctl --user status hermes-gateway.service journalctl --user -u hermes-gateway.service -f
⚠️

Ruta del binario

Si which hermes muestra otra ruta, cambia ExecStart antes de enable --now. Un unit que apunta a un binario viejo se ve "activo" y no es el gateway que editaste.

Prueba de verdad (no solo status)

  1. systemctl --user is-active ... debe decir active.
  2. Manda un mensaje desde el telefono.
  3. Cierra SSH.
  4. Espera un minuto. Manda otro mensaje.
  5. Reinicia la Pi con sudo reboot y, cuando vuelva, manda un tercero.

Si el paso 4 o 5 falla, el problema casi nunca es el modelo. Revisa linger, WantedBy=default.target y que el working directory exista.

Lo que no debes hacer

  • Correr el gateway en screen o tmux y llamarlo 24/7.
  • Usar sudo systemctl para un binario instalado en tu $HOME sin ajustar usuario y rutas.
  • Exponer el puerto del gateway a internet para "probarlo desde el celular fuera de casa" sin lista de usuarios.
🧠Verifica tu conocimiento

Por que hace falta loginctl enable-linger en un servicio de usuario?