Dead man's switch for cron jobs and background processes. Each heartbeat has a unique ping URL — if the ping doesn't arrive within the expected time, status changes to "down".
Heartbeat expects a ping at a set interval. No ping = alarm. Simple and reliable principle.
Each heartbeat generates a token (hb_*). Your cron job pings GET or POST to /hb/{token}.
Expected interval (period) + additional tolerance (grace) for network delays and clock drift.
pending (no pings), up (pinged on time), down (deadline exceeded). Status computed on-demand.
Enough even for complex systems with many scheduled tasks.
Change name, period, or grace without resetting last ping and status.
Set a name (e.g., "Nightly backup"), expected interval (e.g., 60 min), and grace (e.g., 5 min).
System generates a unique URL: /hb/hb_abc123xyz. Shows example cURL and crontab configuration.
At the end of your script add: curl -s https://your-instance/hb/hb_abc123xyz
Dashboard shows status: green (up), red (down), gray (pending). Sidebar badge counts "down" heartbeats.
Your AI agent can check heartbeat statuses, create new ones, and modify configuration — 5 MCP tools.
Available MCP tools
list_heartbeats
All heartbeats with computed status
get_heartbeat
Details with ping URL, period/grace, status
create_heartbeat
New heartbeat with name, period, and grace (in minutes)
update_heartbeat
Change name, period, or grace
delete_heartbeat
Remove heartbeat