Skip to content

Heartbeat

The dead-man's switch watches a log for hours or days. Heartbeat watches a source minute by minute: a website, a server, a worker, a box in a client's rack. It pings a secret URL; when the pings stop, Fresh Jots tells you — and writes the outage into a note that cannot be edited, moved or deleted.

How it works

Your account comes with a Heartbeats folder holding heartbeat_log_1 … heartbeat_log_N, one slot per source. Open Settings → Heartbeats, switch a slot on, and copy its ping URL into the source — a crontab line is enough:

* * * * * curl -fsS https://freshjots.com/hb/<your-token> >/dev/null

GET or POST, no headers, no body. Fresh Jots checks every slot once a minute. Two silent minutes and you get an email — and a JSON webhook, if you set one on the slot. While the silence lasts the report repeats every nine minutes. The first ping afterwards clears it on its own.

Step-by-step guides for the places where a heartbeat pays off most:

  • A Docker container — a Compose sidecar, a HEALTHCHECK that pings only while the app is healthy, one docker run for the host.
  • Your project's code — where the ping goes so it proves the loop is running, with helpers for Ruby, Python, Node, Go and PHP.
  • Background workers and job queues — the dead worker no uptime monitor sees, caught with a one-minute job in Solid Queue, Sidekiq, Celery or BullMQ.
  • Machines nothing can reach from outside — a home server, a Raspberry Pi, a laptop, a client's box: systemd, launchd, Task Scheduler, an ESP32.

Every runtime on one page, with the JSON report and how to read the record: Heartbeat for programmers →

The record is the proof

Nothing but the checker ever writes into a heartbeat note, and it writes only three kinds of line, all in UTC:

DAY|260930
ON|260930-03-00-00
OFF|260930-03-17-00
ON|260930-03-41-00
DAY|261001

DAY once per day the slot was on, OFF the minute the source was found silent, ON the minute it was heard again. A year of a quiet server is a few hundred bytes; a year of a flaky one is still small enough to read on a phone.

Every line is hashed into the note's chain, timestamped, and folded into the nightly Bitcoin anchor like every other append-only note. The notes themselves are permanent: no rename, no move, no delete, always append-only. So the gaps in the record are evidence — for an SLA dispute, a hosting bill, or your own memory of that night.

Slots per plan

  • Free — 3 slots, no card.
  • Personal — 10 slots.
  • Dev — 25 slots.
  • Team — 25 slots per seat, shared by the workspace, reporting to the team's alert destination.
  • 14-day API trial — 10 slots while the trial runs; the notes stay afterwards, the slots switch off.

Slots start off, so an unused one never pages you. A plan change never removes a note or switches a running slot off; it only decides how many slots you can switch on.