REPLACEMENT BRIEF

cron monitoring

Can AI replace Cronitor?

EDITORIAL ANSWERYESCurated prompt

A heartbeat URL that alerts when a job misses its window is roughly a hundred lines of code. Build it if you have a place to run it that will not fail along with the jobs it watches.

Reviewed · DeepFeather editorial

known limits their status pages and team features; alert routing (SMS, PagerDuty)

Build an automated heartbeat monitoring daemon that accepts HTTP pings from scheduled jobs, evaluates grace intervals, and triggers alerts on missed runs.

Build the personal version →

AT A GLANCE

price
$10/mo
listed annual price
$120/yr
replaceable scope
Build an automated heartbeat monitoring daemon that accepts HTTP pings from scheduled jobs, evaluates grace intervals, and triggers alerts on missed runs.
build time
2–4 h
Build promptreviewed prompt · not run

the prompt

Curated prompt
Build me a cron-job monitor like Cronitor / Healthchecks. Requirements:

- Each monitored job gets a unique ping URL (/ping/:uuid). The job's crontab
  line just appends `&& curl -fsS <url>` · document this.
- Define jobs in SQLite via a basic-auth /admin page: name, expected period
  (e.g. every 60 min) and grace time. Store every ping with timestamp.
- A scheduler loop checks each job: if now > last_ping + period + grace, the job
  is LATE → send one alert webhook (Discord/Slack/Telegram, URL in .env) with
  the job name and how late it is. Alert again on recovery. No alert spam ·
  one per state change.
- /admin dashboard: each job as a row with green/amber/red status dot, last ping
  time ("7 min ago"), and a 24h ping histogram as inline SVG.
- Support /ping/:uuid/fail for explicit failure reports with an optional body
  shown in the alert.
- Python or Node, single process, systemd unit included.
Copy or open in an agent

The prompt stays readable first. Choose a launch option when you are ready.

$ open in your agent (prompt prefilled, you press enter) or copy it raw

Build Pack

Build a Cronitor replacement: the plan

What to build, what to skip on purpose, and how to tell it works. Use any agent or prompt you like — the acceptance tests decide whether it worked.

Estimated time
2–4 h
Estimated monthly cost
$0–6/mo

Editorial estimate, not a measured run · Reviewed

In scope

  • A unique ping URL per job (/ping/:uuid) that a crontab line calls after the job succeeds
  • An explicit failure endpoint (/ping/:uuid/fail) with an optional body that appears in the alert
  • Jobs defined in SQLite with a name, expected period and grace time; every ping stored with a timestamp
  • A scheduler loop that marks a job late once last ping + period + grace has passed
  • One webhook alert per state change (late, failed, recovered) to Discord, Slack or Telegram
  • A basic-auth /admin dashboard: status dot, "last ping 7 min ago" and a 24-hour ping histogram

Non-goals

  • Cron-expression parsing — jobs are period-based
  • SMS, phone or PagerDuty escalation and on-call routing
  • Public status pages, teams or multiple users
  • Monitoring the monitor: if this machine is down, nobody is alerted

Recommended stack

Runtime
Python or Node, one processOne service to keep alive, no queue or worker fleet
Storage
SQLiteJobs and ping history with zero database operations
Process manager
systemd unitRestarts on crash and on boot
Alerts
Incoming webhook URL from .envDiscord, Slack and Telegram all accept a plain HTTP POST

Data model

  • jobsid (uuid)nameperiod_secondsgrace_secondsstatelast_ping_atstate is up, late or failed; alerts fire only when it changes
  • pingsidjob_idtskind (ok/fail)bodyIndex on (job_id, ts) for the 24-hour histogram

Steps

  1. Service and schemaStart the single-process app and create the jobs and pings tables, with an index on (job_id, ts).
  2. Ping endpoints/ping/:uuid records an ok ping; /ping/:uuid/fail records a failure with the request body. Unknown uuid → 404.
  3. Scheduler loopEvery 30–60 seconds, mark a job late when now > last_ping + period + grace, and up again when a ping arrives.
  4. State-change alertsPOST to the webhook only on transitions (up → late, any → failed, late/failed → up), with the job name and how late it is.
  5. Admin dashboardBasic-auth /admin to add and edit jobs, showing a status dot, relative last-ping time and a 24-hour histogram as inline SVG.
  6. Package and documentShip a systemd unit, an .env example and a README showing the `&& curl -fsS <url>` crontab pattern.

Acceptance tests

  • Append `&& curl -fsS <ping url>` to a crontab line that runs every minutePings appear and the job shows green
  • Stop the job and wait period + graceExactly one late alert arrives
  • Start the job againOne recovery alert, then silence while it stays healthy
  • curl /ping/:uuid/fail with a bodyThe failure alert includes that body text
  • Kill the processsystemd restarts it and jobs and history are still there

Only you can do this

  • Run it on a different machine from the jobs it watches
  • Create the Discord, Slack or Telegram webhook and put its URL in .env
  • Add the ping to each real crontab line
  • Choose a period and grace time that fit each job

What drives the cost

$0 on a machine you already run. Otherwise one small VPS; the upper bound assumes a low-end plan of a few dollars a month, so check your provider's price.

what AI can build

Build an automated heartbeat monitoring daemon that accepts HTTP pings from scheduled jobs, evaluates grace intervals, and triggers alerts on missed runs.

The prompt was editor-reviewed; no completed build is recorded.

The honest tradeoff

why people still pay

Customers pay for status pages, team features, alert routing to SMS and PagerDuty, and a monitor hosted independently of their own infrastructure.

what you lose

their status pages and team features

alert routing (SMS, PagerDuty)

cron expression insights

Start with existing software

prior art · use these instead of building, if you'd rather

EVIDENCE LEDGER

What this page can prove

The verdict judges replaceability. The evidence level records what DeepFeather actually checked.

Read the methodology →
evidence level
Curated prompt

The prompt was editor-reviewed; no completed build is recorded.

price reference$10/mo

Current catalog reference

price checked
replacement boundaryBuild an automated heartbeat monitoring daemon that accepts HTTP pings from scheduled jobs, evaluates grace intervals, and triggers alerts on missed runs.

known limits · their status pages and team features; alert routing (SMS, PagerDuty)

editorial reviewreviewed

BUILD FEEDBACK

Did you try this build?

Report the outcome. Submissions enter a manual evidence queue and never auto-upgrade the verdict.

← back to the build pack scope

questions

Can AI replace Cronitor?

Likely for the core workflow. This is an editorial catalog judgment, not a verified build; validate any result against your own acceptance criteria.

How much does Cronitor cost?

Cronitor is listed at about $10/month (paid plan, checked 2026-07-29), or $120 per year. This is a pricing reference, not evidence of a completed replacement or realized savings.

What do I lose by replacing Cronitor?

Honestly: their status pages and team features; alert routing (SMS, PagerDuty); cron expression insights. If any of those are load-bearing for you, keep paying.

Is there an open-source alternative to Cronitor?

Yes — Healthchecks (excellent open-source cron monitoring). Using prior art is also a valid exit; the prompt is for when you want it exactly your way.