nano-api / pulse

A cron job that stops
does not tell anyone

So the job pings on success, and the missing ping is what gets reported. I built this twice before with a table and a second cron job watching the first one, which is a second cron job that can also stop.

Take a key Curl walkthrough

Free. Signup is one curl and the key comes back in the response. No form, no card, nobody to ask.

POST /v1/ping/nightly-backup
Monitor nightly-backup has not pinged for 96s (expected every 30s + 0s grace).

One line in your crontab

0 3 * * * /usr/local/bin/backup.sh && \
  curl -fsS -X POST -H "Authorization: Bearer $NANO_API_KEY" \
    https://pulse.nano-api.com/v1/ping/nightly-backup

The && is the trick: if the job fails, the ping never happens, and silence is what gets alerted on. First ping creates the monitor; ?interval=86400&grace=3600 sets the window.

Why an uptime check misses this

An uptime check

  • Pings your server, sees HTTP 200
  • Silent when the nightly export never ran
  • Blind to queue workers, CronJobs, laptop scripts
  • Needs your job reachable from the internet

NanoPulse

  • Waits for the job itself to report success
  • Alerts on absence, which is the part a prober cannot see
  • Works anywhere curl works
  • Takes a payload: "12,043 rows exported"

How it works

  1. 1

    Ping on success

    One HTTP call at the end of the job. GET or POST.

  2. 2

    A sweep notices

    Every minute, at the edge, it checks who has gone quiet.

  3. 3

    It says so once

    On the way down, and again on recovery. Transitions only.

What the alert looks like

Any HTTPS webhook works; a Slack incoming webhook needs no configuration, because the body is Slack-shaped. The text says which failure it is: silence, or the job reporting its own failure.

notified: true on the event means the receiver answered 2xx, so you can tell "nobody was told" from "nobody read it".

alerts app
  1. Monitor nightly-backup has not pinged for 99s (expected every 30s + 30s grace). 02:06
  2. Schedule nightly-report failed: endpoint returned HTTP 500 (3 attempts). 02:07
  3. Monitor nightly-backup is reporting again. 02:14

Using it with the others

Relay runs the job for you; Lock keeps it to one copy. Put a ping at the end and a missing Relay run is an alert too.

How to, in curl What this is