Guardian es un proceso liviano de Node.js que corre al lado de tu agente. No tiene IA, usa cero tokens, y tiene un solo trabajo: mantener al agente online y dejarte administrarlo desde el chat.
Qué vigila
Cada 30 segundos, Guardian:
- Corre
tmux capture-pane -psobre la sesión del agente - Escanea el output capturado buscando patrones de error (
API Error:,Overloaded,Could not process, etc.) - Busca mensajes entrantes marcados con
← discord,← telegram, etc. para saber que el agente está recibiendo tráfico - Chequea indicadores de "trabajando" (Baked, Crunching, marcadores de tool-use) para distinguir atascado de idle
Si la sesión está muerta, reinicia. Si los errores se acumulan y no está pasando trabajo, marca el agente como atascado y reinicia tras un check fallido adicional.
Política de reinicios
- Máximo 3 reinicios por cada 30 minutos. Pasado eso, Guardian deja de intentar y te pagea por tu canal.
- Cada reinicio se loguea en
~/workspace/memory/guardian.logy el estado se escribe en/tmp/sento-guardian-<agent>.json. - En un reinicio limpio, Guardian manda una notificación ✅: "el agente está online de nuevo."
Alerta por canal
Guardian detecta qué canal usa tu agente (Discord, Telegram o Slack), lee el bot token del .env del plugin, y usa la API correspondiente para mandarte un mensaje directo:
- Discord: webhook si hay configurado, si no Bot API al canal monitor
- Telegram:
sendMessagea tu chat monitor - Slack:
chat.postMessagea tu canal monitor
Comandos interactivos desde el chat
Guardian también chequea el canal monitor por mensajes del usuario, así podés administrar el agente sin SSH:
restart— Guardian detiene y reinicia el agente, resetea el contadorlogs— tira las últimas 15 líneas del output de tmux al canalstatus— imprime un resumen de salud (vivo / atascado / contador de reinicios / estado)
Por qué no tiene IA
Porque cualquier cosa con IA puede fallar. El punto entero del Guardian es ser lo que sigue vivo cuando el agente no lo está. Node.js, regex, tmux capture-pane. Ese es el stack completo.
Archivos para conocer
src/templates/guardian.jsen el repo de Sentō — el template del Guardian (se renderiza por agente)~/workspace/memory/guardian.log— log del Guardian/tmp/sento-guardian-<agent>.json— estado persistente (lista de reinicios, flag de estado)~/.claude/channels/<canal>/.env— leído por Guardian al arrancar para agarrar el token
Cómo arranca y persiste
- Al instalar:
sento initarranca el Guardian víanohup node guardian.js &y agrega una línea de cron@rebootpara que vuelva al rebootear. - Al rebootear: la entrada de cron re-ejecuta el script de inicio, Guardian lanza, agente lanza.
- Sin systemd, sin launchd por defecto — nohup + tmux + cron es el patrón confiable más simple entre distros y contenedores.