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
HEALTHCHECKthat pings only while the app is healthy, onedocker runfor 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.