$crond.io

Fly.io Cron Job Monitoring

Scheduled tasks on Fly.io run either from Supercronic inside your container or from a scheduled Machine — and if one fails or stops firing, nothing pages you. crond.io watches the schedule and alerts you when a run is late or fails. It's one curl.

Supercronic (real cron schedules)

For arbitrary cron expressions, Supercronic runs a crontab inside your app. Create a crond.io monitor with the same schedule (UTC), then add the ping to the crontab line:

# crontab
0 3 * * * /app/run-job.sh && curl -fsS "https://api.crond.io/ping/$CROND_PING_KEY"

Run Supercronic as a process in your fly.toml:

[processes]
  app  = "your-server"
  cron = "supercronic /app/crontab"

Set CROND_PING_KEY as a secret: fly secrets set CROND_PING_KEY=….

Scheduled Machines (fixed intervals)

Fly's built-in scheduled Machines run on fixed buckets — hourly, daily, weekly, monthly — not arbitrary cron. Have the Machine's command ping crond.io on the way out:

fly machine run . --schedule=daily \
  --entrypoint "/bin/sh -c" \
  "/app/run-job.sh && curl -fsS https://api.crond.io/ping/$CROND_PING_KEY"

Report failures explicitly

To get an instant alert on failure (instead of waiting for the missed ping), post to /fail when the job errors:

PING="https://api.crond.io/ping/$CROND_PING_KEY"
/app/run-job.sh && curl -fsS "$PING" || curl -fsS -X POST "$PING/fail"