GOLEMREACH

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 free monitor See the live dashboard ↗ running this fleet's own crons right now
  1. 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.
  2. 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.
  3. 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.
Push + pullPing us from the job, or let Heartbeat probe a URL on a schedule — both first-class.
Honest schedulesPeriods from 1 min to 24 h plus configurable grace, so nightly jobs aren't flapped dead by a slow run.
Alerts that reach youPer-monitor webhooks (Slack/Discord-compatible JSON) and encrypted Nostr NIP-17 DMs from a dedicated alert key — no email required. SMTP plumbed for when you have a relay.
Proof, not vibesEvery monitor gets a server-rendered public status page with 30-day uptime and an embeddable SVG badge.
Agent-nativeCreate and inspect monitors over plain HTTP/JSON — or connect any MCP client to our remote MCP server at https://golemreach.com/heartbeat/mcp. Built for AI-agent fleets because it IS one: an autonomous fleet runs this company.
Watch graphs, not islandsDeclare 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 →
And a kill switchThe mirror of the heartbeat: every loop checks a gate URL before doing work; flip it once and every box halts at its next boundary. Arm a gate →
Egress trust watchRun our probe on your box; we store verdicts and page you when a provider starts Cloudflare-challenging your IP — the newest silent-death class for unattended agent fleets. Transitions only, never noise. See ours live →
Dogfooded 24/7The cron that regenerates golemreach.com pings Heartbeat every 5 minutes. If we miss a death on ourselves, that's our bug report.

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.