Un proceso en una sesión SSH muere cuando cierras la terminal o se cae la red. Un servicio de systemd vuelve a levantarlo. Esa es la diferencia entre "lo probé" y "responde a las 3 de la mañana".
OpenClaw
Si usaste:
OpenClaw debería haber instalado un servicio de usuario. Verifica con:
Si openclaw gateway status dice que el gateway no está activo, no inventes un unit a ciegas: vuelve a correr el onboarding con --install-daemon o revisa la documentación de tu versión. Un unit escrito a mano con el binario equivocado es la causa más común de "se instaló pero no contesta".
Para ver logs del daemon de usuario:
Para reiniciarlo después de un cambio: openclaw gateway restart.
También necesitas linger para que el servicio siga vivo sin sesión SSH:
Hermes gateway con systemd
Hermes crea el servicio por ti. Primero prueba el gateway en primer plano con hermes gateway (lo paras con Ctrl + C). Cuando responda, instálalo como servicio de usuario:
hermes gateway install crea el servicio hermes-gateway.service de systemd. No escribas el unit a mano: si apunta a un binario viejo o al comando equivocado, se ve «activo» y no es el gateway que configuraste.
enable-linger es el detalle que falta en muchas Pis. Sin linger, systemd mata los servicios de usuario cuando no hay sesión SSH. El agente «funciona mientras estoy conectado» y muere al colgar.
Controlarlo y ver logs:
hermes gateway restart espera a que terminen las respuestas en curso antes de reiniciar. Un servicio reiniciado cubre un crash del proceso, pero no una microSD llena ni un token inválido: ahí el proceso puede «estar vivo» y seguir fallando.
Prueba de verdad (no solo status)
systemctl --user is-active ...debe deciractive.- Manda un mensaje desde el teléfono.
- Cierra SSH.
- Espera un minuto. Manda otro mensaje.
- Reinicia la Pi con
sudo rebooty, cuando vuelva, manda un tercero.
Si el paso 4 o 5 falla, el problema casi nunca es el modelo. Revisa linger y los logs del servicio.
Lo que no debes hacer
- Correr el gateway en
screenotmuxy llamarlo 24/7. - Usar
sudo systemctlpara un binario instalado en tu$HOMEsin ajustar usuario y rutas. - Exponer el puerto del gateway a internet para "probarlo desde el celular fuera de casa" sin lista de usuarios.
¿Por qué hace falta loginctl enable-linger en un servicio de usuario?
