GOLEMREACH

Instrument anything that can curl.

A Heartbeat monitor is just a URL your job hits every run. If the pings stop, you get alerted. No SDK, no agent to install, no account to make. Every example below is a real command you can paste today.

  • Create a monitor. Go to /new for a form, or self-serve from an agent:
    curl -sS https://golemreach.com/heartbeat/api/monitors/self-serve \
      -H 'Content-Type: application/json' \
      -d '{"name":"nightly-etl","period":3600,"kind":"push"}'
    The response gives you a ping_url like https://golemreach.com/heartbeat/ping/<key> and a public https://golemreach.com/heartbeat/status/<name> page. For a server you cannot make outbound calls from, set "kind":"pull" and a "target" URL — Heartbeat probes it for you.
  • Make your job hit that URL on every run. One line, appended to the job. Success and failure are both signal.
  • Watch the status page. It shows state, 30-day uptime %, schedule and last success. Embed the badge https://golemreach.com/heartbeat/badge/<name>.svg anywhere.
  • cron Append the ping to the job so a silent miss is impossible:
    */15 * * * * /opt/etl/run.sh \
      && curl -sS https://golemreach.com/heartbeat/ping/KEY >/dev/null
    Missed runs (exit non-zero before the &&) never ping, so they page — exactly the failure you care about.
    systemd timer In the .service, ping on success:
    [Service]
    ExecStartPre=-curl -sS https://golemreach.com/heartbeat/ping/KEY >/dev/null
    ExecStart=/opt/worker/run.sh
    ExecStartPost=-/bin/sh -c 'curl -sS https://golemreach.com/heartbeat/fail/KEY >/dev/null || true'
    Use ExecStartPost to record a fail when the main process exits non-zero.
    GitHub Actions (scheduled) Workflows silently die — 60-day auto-disable, queue delays, dropped runs. A ping survives all of it:
    on:
      schedule:
        - cron: '*/15 * * * *'
    jobs:
      ping:
        runs-on: ubuntu-latest
        steps:
          - run: curl -sS https://golemreach.com/heartbeat/ping/KEY >/dev/null
    Store the URL as a repo secret and reference ${{ secrets.HB_URL }} to keep it out of logs.
    Unattended opencode / Claude Code loop Loops crash overnight and grep-and-hope is not a monitor. Ping once per loop turn:
    # in the loop wrapper, after each turn:
    curl -sS https://golemreach.com/heartbeat/ping/KEY >/dev/null
    Better: a Stop-event HTTP hook (opencode plugin / Claude Code settings.json hook) that pings on every turn boundary. If the loop stalls, pings stop, you get paged. No dashboard to babysit. Full opencode / Claude Code recipe ↗
    Windows Task Scheduler The unserved half — bulk-arm every enabled task with one ping URL. Full recipe + LastTaskResult table:
    powershell -Command "Invoke-RestMethod 'https://golemreach.com/heartbeat/ping/KEY'"
    Monitor Windows Task Scheduler ↗
    Run-gate (kill switch) The mirror of a heartbeat: check the gate BEFORE work. One flip halts every loop at its next boundary:
    [ "$(curl -s -o /dev/null -w '%{http_code}' https://golemreach.com/heartbeat/gate/KEY)" = 200 ] || exit 0
    We dogfood this: our own fleet stops via a hosted gate.

    Get alerts where you already are

    Honest posture

    Heartbeat is a dead-man switch, not a metrics platform. It tells you one thing reliably: the pings stopped. It does not sample your job's internals. For that, pair it with your existing logs. Free while in beta; a $5 USDC pass lifts the rate limits — see pricing.