Open-source cron job monitoring built on Cloudflare Workers. One curl, instant alerts.
Your cron jobs fail silently. Your backup script stopped 3 days ago, and you only find out when you need the backup.
CronPulse fixes this. Add one curl to your cron job. If it stops pinging, you get alerted.
# Add this to the end of any cron script:
0 2 * * * /usr/local/bin/backup.sh && curl -fsS https://cron-pulse.com/ping/YOUR_CHECK_IDTry free at cron-pulse.com — 10 checks, no credit card.
| CronPulse | Healthchecks.io | Cronitor | Better Stack | |
|---|---|---|---|---|
| Price (50 checks) | $5/mo | $17/mo | ~$100/mo | $29/mo |
| Open Source | AGPL-3.0 | BSD-3 | No | No |
| Infrastructure | Cloudflare Edge (300+ nodes) | Single server | Cloud | Cloud |
| Ping response | <5ms | ~50ms | ~100ms | ~100ms |
| Self-hostable | Yes (Cloudflare Workers) | Yes (Docker) | No | No |
| Setup | One curl | One curl | SDK/curl | Agent/curl |
CronPulse isn't "better" than these tools — it's a different tradeoff. Cheapest price, fastest ping, edge-native architecture. If you need 25+ integrations, Healthchecks.io is great. If you want simple + cheap + fast, try CronPulse.
- Sign up at cron-pulse.com
- Create a check, get your ping URL
- Add it to your cron job:
# Success ping (job completed)
curl -fsS https://cron-pulse.com/ping/YOUR_CHECK_ID
# Start signal (job started)
curl -fsS https://cron-pulse.com/ping/YOUR_CHECK_ID/start
# Fail signal (job failed)
curl -fsS https://cron-pulse.com/ping/YOUR_CHECK_ID/failnpx cron-pulse-cli init "DB Backup" --every 1h
# Creates check and outputs ready-to-use crontab line- uses: nicepkg/cronpulse/github-action@main
with:
check-id: ${{ secrets.CRONPULSE_CHECK_ID }}
signal: successgit clone https://github.com/nicepkg/cronpulse.git
cd cronpulse && npm install
# See self-hosting section below- One-line integration —
curlat the end of your script. No SDK, no agent, no config file. - Ping in <5ms — Database writes happen asynchronously via
waitUntil(). Your cron job doesn't wait. - Graceful degradation — If KV is down, falls back to D1. If D1 is down, ping still returns 200. Your cron job never breaks because the monitor broke.
- Start/Success/Fail signals — Track job duration, not just completion.
- Cron expression parsing —
0 2 * * *auto-calculates the expected interval. - Multiple alert channels — Email (Resend), Slack (Block Kit), Webhooks (HMAC signed).
- Status badges —
for your README. - Public status pages — Share uptime with your users.
- Check groups & tags — Organize hundreds of checks.
- Incident timeline — Full history of downs and recoveries.
- REST API — Manage everything programmatically.
- Import/Export — Backup your config as JSON.
- Maintenance windows — Suppress alerts during planned downtime.
Your Cron Job
→ curl /ping/CHECK_ID
→ Cloudflare Workers (nearest of 300+ edge nodes, <5ms)
→ KV (read config, sub-ms) → D1 fallback if KV miss
→ D1 (write ping, async via waitUntil)
Cron Triggers (every 1 min)
→ D1 (query overdue checks)
→ Send alerts (Email / Slack / Webhook)
One Worker. No servers, no containers, no orchestration. Total infra cost: ~$5-6/month.
You need a free Cloudflare account.
# 1. Clone and install
git clone https://github.com/nicepkg/cronpulse.git
cd cronpulse && npm install
# 2. Create Cloudflare resources
wrangler d1 create cronpulse-prod
wrangler kv namespace create KV
# 3. Configure
cp wrangler.toml.example wrangler.toml
# Edit wrangler.toml with your D1 database_id and KV namespace id
# 4. Set secrets
wrangler secret put SESSION_SECRET
wrangler secret put RESEND_API_KEY # optional, for email alerts
# 5. Initialize and deploy
npm run db:init:remote
npm run deployYour instance is live at https://cronpulse.<your-subdomain>.workers.dev.
| Component | Technology |
|---|---|
| Compute | Cloudflare Workers |
| Database | Cloudflare D1 (SQLite at the edge) |
| Cache | Cloudflare KV |
| Scheduler | Cron Triggers |
| Framework | Hono |
| Resend |
- Database backups — Know immediately when your backup script fails
- SSL certificate renewal — Catch renewal failures before expiry
- Data pipelines — Monitor ETL jobs, data syncs, report generation
- CI/CD pipelines — GitHub Action integration for workflow monitoring
- Server maintenance — Log rotation, cleanup scripts, health checks
- Payment processing — Subscription billing jobs, invoice generation
Full docs: cron-pulse.com/docs
# Create a check
curl -X POST https://cron-pulse.com/api/v1/checks \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "DB Backup", "period": 86400, "grace": 3600}'
# Send a ping
curl -fsS https://cron-pulse.com/ping/CHECK_ID
# List checks
curl https://cron-pulse.com/api/v1/checks \
-H "Authorization: Bearer YOUR_API_KEY"We welcome contributions! Check out CONTRIBUTING.md and our good first issues.
- Server: AGPL-3.0 — Use, modify, and self-host freely. Public modifications must be open-sourced.
- CLI + GitHub Action: MIT — Use anywhere, no restrictions.
For managed hosting: cron-pulse.com