OpenClaw

Monitore os cron jobs do OpenClaw

O OpenClaw roda as suas automações dentro do Gateway. Se o Gateway cai, nada dispara e ninguém avisa. O CronObserver vigia de fora e avisa quando um job falha, trava ou nem começa.

Sem cartão. Plano gratuito com 3 monitores depois do teste.

O agendador do seu agente não pode ser o próprio vigia

A documentação do OpenClaw é clara: as automações rodam dentro do processo do Gateway, e o Gateway precisa estar no ar para os horários dispararem. Os alertas de falha também saem desse mesmo Gateway. Quando o processo morre, a máquina dorme ou o servidor reinicia na hora errada, o job não roda e o alerta que avisaria também não.

Um monitor por heartbeat inverte a lógica: o job prova que rodou chamando uma URL. Se o CronObserver não recebe o sinal no horário, ele avisa você, de fora da máquina.

1. Crie um monitor no CronObserver

Use o mesmo horário do job, uma tolerância para atrasos normais e um tempo máximo para execuções que travam. Copie a URL de check-in: o token no fim é o segredo.

Schedule:     cron  0 2 * * *   (same time zone as the job)
Grace period: 10 min
Max runtime:  30 min
Alerts:       email (Free) · Slack, Teams, webhook (Orbital)

Check-in URL: https://cronobserver.com/checkin/<token>

2. Envolva o job num script

O script sinaliza o início e depois o sucesso ou a falha, com o código de saída. No sucesso, ele imprime NO_REPLY, que o OpenClaw entende como nada a publicar no chat.

#!/bin/sh
# ~/jobs/nightly-report.sh   (chmod +x)
CO="https://cronobserver.com/checkin/${CRONOBSERVER_TOKEN:?set CRONOBSERVER_TOKEN}"

curl -fsS -m 10 --retry 3 -o /dev/null -X POST "$CO/start"
if python3 "$HOME/jobs/nightly_report.py"; then   # your job
  curl -fsS -m 10 --retry 3 -o /dev/null -X POST "$CO"
  echo NO_REPLY                     # nothing posted to chat on success
else
  rc=$?
  curl -fsS -m 10 --retry 3 -o /dev/null -X POST "$CO/fail" \
    -H 'Content-Type: application/json' \
    -d "{\"exitCode\":$rc,\"message\":\"nightly_report.py failed\"}"
  exit "$rc"                        # OpenClaw records the run as error
fi

3. Agende como automação de comando

Um payload de comando roda o script no servidor do Gateway sem chamar o modelo. Código de saída 0 registra a execução como ok no OpenClaw; qualquer outro registra erro e chega ao CronObserver como /fail.

# Command payload: runs on the Gateway host, no model call
openclaw cron create "0 2 * * *" --name nightly-report \
  --command "$HOME/jobs/nightly-report.sh" \
  --command-env CRONOBSERVER_TOKEN=<token> \
  --no-deliver

# Run it once now and watch the check-ins arrive
openclaw cron run <job-id>
openclaw cron runs --id <job-id>

Quando você recebe alerta

  • O job falhou: o /fail chega com o código de saída e a mensagem, e o alerta sai na hora.
  • O job travou: ele chamou /start, mas nem o sucesso nem o /fail chegaram dentro do tempo máximo.
  • O job nem rodou: nenhum check-in até o horário mais a tolerância, por exemplo porque o Gateway estava fora do ar.
  • Ele voltou: o próximo check-in de sucesso encerra o incidente.

Bom saber

  • Testado no OpenClaw 2026.11.3 com um Gateway de verdade: a execução acima gerou check-ins de início, sucesso e falha na produção.
  • O OpenClaw guarda o --command-env na definição do job e no histórico. O token de check-in só permite check-ins, mas você pode ler o token de um arquivo dentro do script.
  • Se uma execução estoura o --timeout-seconds do OpenClaw, o script é encerrado antes de mandar o /fail. O tempo máximo do monitor pega esse caso.
  • O mesmo script serve para um prompt de agente: chame a CLI do seu agente no lugar do nightly_report.py.

Baseado na documentação do OpenClaw: docs.openclaw.ai/cron · docs.openclaw.ai/automation/cron-jobs/payloads · docs.openclaw.ai/automation/cron-jobs/how-it-works

O OpenClaw é um projeto de terceiros. O CronObserver não tem vínculo nem aval do projeto; esta página usa check-ins HTTPS simples.

Outras plataformas de agentes: Hermes Agent · OpenAI dots · Documentação do check-in