Heartbeat monitoring for scheduled jobs. Ping a URL when your cron runs; alert when the ping is late or missing. Works with any scheduler: system cron, BullMQ, pg_cron, GitHub Actions, or your own. Replaces Cronitor and Sentry Crons.
Set your license key with nself license set nself_pro_... before installing. Ships with ɳSelf v1.1.0.
nself license set nself_pro_...
nself plugin install nself-cron-monitor
nself build
nself start# 1. Create a monitor (POST /cron/monitors)
# Returns a unique heartbeat URL like:
# https://api.yoursite.com/cron/heartbeat/abc123
# 2. Ping start + finish in your job
curl https://api.yoursite.com/cron/heartbeat/abc123?state=start
# ... do work ...
curl https://api.yoursite.com/cron/heartbeat/abc123?state=finish
# System cron wrapper
* * * * * curl -s api.yoursite.com/cron/heartbeat/abc123?state=start && /usr/local/bin/my-job && curl -s api.yoursite.com/cron/heartbeat/abc123?state=finish| Variable | Required | Default | Description |
|---|---|---|---|
PLUGIN_CRON_GRACE_SECONDS | No | 60 | Extra time after schedule before marking a check as missed |
PLUGIN_CRON_MAX_RUNTIME_SECONDS | No | 3600 | Default max runtime before alerting on a hung job |
| Endpoint | Method | Description |
|---|---|---|
/cron/monitors | GET / POST | List or create cron monitors |
/cron/heartbeat/:token | GET | Heartbeat ping (add ?state=start|finish|fail) |
/cron/monitors/:id/history | GET | Recent run history for a monitor |
/health | GET | Plugin health check |
Cronitor free tier: 5 monitors. Paid: $12/mo for 25 monitors. nself-cron-monitor: unlimited monitors, $0.99/mo as part of the ɳSentry bundle, history stored in your own Postgres.
Port: 3839 | Bundle: ɳSentry ($0.99/mo) or ɳSelf+ ($3.99/mo) | Ships: v1.1.0