10.1k stars · BSD-3-Clause · v4.4 (2026-08-31), read from /releases/latest · Track this in Scout
Gives every scheduled job a URL to call when it finishes, and alerts you when the call does not arrive.
▶Repo detailsthe review · specs · pros & cons · install
What it is
Healthchecks waits for a signal instead of watching a machine. Each job gets a web address and an expected schedule. Silence is the alarm.
What it is good for. This is the most concrete item on the list, because the failure it catches is a silent one. A scheduled job can stop finishing and nobody notices for weeks. A backup is worse. Restic (Edition 8 #11) has no way to tell you it stopped running, so you would learn about it on the day the disk dies. One extra line at the end of the command closes that hole for good.
- Two minutes per job. You add
&& curl -fsS https://hc-ping.com/your-idto the end of the command and you are done. - The hosted version is free for twenty jobs. For most people that is enough, and it means nothing new to run or update.
- It can alert by email, Telegram, Slack, and ntfy (Edition 7 #4), which you may already have on your phone.
- It only knows what you tell it. A job that finishes normally but writes a broken file still reports success. Make the script check its own output.
- It overlaps Uptime Kuma (Edition 7 #1), which also has this kind of check built in. If Uptime Kuma is already running, use that and skip this.
- Running it yourself is a Django application with Postgres. Use the free hosted version unless you have a firm reason not to.
# Nothing to install for the hosted version. Sign up at healthchecks.io, # create a check, copy its address, then edit your crontab: 0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 https://hc-ping.com/YOUR-ID # If you would rather run it yourself: sudo docker run -d --name healthchecks -p 8000:8000 \ -e SECRET_KEY=a-long-random-string \ -e SITE_ROOT=https://checks.yourdomain.com \ -v $HOME/healthchecks:/data \ healthchecks/healthchecks




