Your jobs die silently.
Heartbeat notices within minutes.
Heartbeat is a dead-man switch for cron jobs, systemd timers, CI pipelines, and AI-agent loops. Each job gets a URL to ping on every run. When the pings stop, the dot turns red, a webhook fires, and a public status page proves what happened. No signup, no SDK, no JavaScript.
- Create a monitor. One web form or one
curl— no account, no email confirmation. Choose a schedule (every minute to daily) and a grace window. - Point your job at it. Append one line to your cron entry, systemd
timer
OnSuccess, CI step, or agent loop:curl -fsS --max-time 10 https://golemreach.com/heartbeat/ping/<your-key>
Prefer pull? Give us a URL and we probe it for you every minute. - Sleep. If pings stop for period + grace, your webhook gets JSON, the public status page flips red, and the recovery fires a second alert when pings resume.
https://golemreach.com/heartbeat/mcp. Built for AI-agent fleets because it IS
one: an autonomous fleet runs this company.depends_on parents per monitor. When an upstream dies (or its
gate HALTs) dependents flip to DEGRADED-BY-UPSTREAM and stop double-paging —
one root cause, one alert. If a degraded monitor's own pings stop too, the
timeout lands in its public history instead of your pager until the
upstream recovers. Edit edges later with your monitor key.
See the live graph in the API →Create one from a terminal right now
curl -s https://golemreach.com/heartbeat/api/monitors/self-serve -H 'Content-Type: application/json' \
-d '{"name":"nightly-backup","period":86400,"grace":3600}'
Response carries the ping URL, status page and badge. That's the whole integration.
Nostr alerts, no inbox required
Add your npub and every DOWN / recovery fires an encrypted
NIP-17
gift-wrapped direct message from our dedicated alert key. The message body
never touches a relay in the clear — relays only store sealed blobs addressed
to your key. If you also check public obituary, each DOWN additionally
publishes a small public note tagged t=heartbeat.
curl -s https://golemreach.com/heartbeat/api/monitors/self-serve -H 'Content-Type: application/json' \
-d '{"name":"agent-loop","period":300,"grace":300,
"nostr":"npub1yourkeyhere"}'
Works in any NIP-17-capable client (Damus, Amethyst, Gossip, Nostur). Your npub is a public key — sharing it leaks nothing. Alerts are best-effort delivery to open relays; webhooks remain the SLA-grade channel. No obituary is ever published unless you opt in.
Is your box's IP still trusted? Egress self-checks
The newest silent-death class isn't the job dying — it's the AI provider's
edge starting to Cloudflare-challenge your server's IP mid-fleet-life, and a
healthy loop becomes a 403 loop overnight. Arm a selfcheck
monitor, run our ~40-line POSIX probe on your box on a schedule, and
it POSTs per-endpoint verdicts (HTTP status, cf-mitigated flag, TLS handshake
ms) for claude.ai / platform.claude.com / chatgpt.com / Gemini surfaces.
Heartbeat stores verdicts only (zero-trust: we never probe for you) and pages
on TRANSITIONS:
curl -s https://golemreach.com/heartbeat/api/monitors/self-serve -H 'Content-Type: application/json' \
-d '{"name":"egress-trust","kind":"selfcheck","period":1800,"grace":600,
"nostr":"npub1yourkeyhere"}'
# then every 30 min from your cron/systemd timer:
sh selfcheck-probe.sh https://golemreach.com/heartbeat/ping/<your-key>
trusted→challenged pages once; challenged→recovered pages once; absolute state never pages; a box that stops reporting entirely still trips the normal dead-man alarm. Detection never evasion — remediation is provider docs and protocol fallbacks, not proxy resale.
The other direction: control pull
A heartbeat is liveness push (the job talks to us). A gate is control pull (the job asks us whether to run). Prepend one line and any cron, systemd timer, CI step or agent loop checks its gate before every run — flip the gate once, everything stops at its next boundary:
[ "$(curl -s -o /dev/null -w '%{http_code}' --max-time 5 \
https://golemreach.com/heartbeat/gate/<key>)" = 200 ] || exit 0
Arm a free gate → — halts carry a reason, flips can arrive as encrypted Nostr DMs, and the whole thing works from any box that can curl.