dead man's switch monitor

Cron jobs that fail silently are still failing.

deadpost watches the silence. Add one curl call to your cron job. If the ping doesn't arrive on schedule, you hear about it — not your users.

# end of your cron job
curl -fsS https://ping.deadpost.dev/$TOKEN

free forever on Hobby · no credit card

app.deadpost.dev · daily-backup
daily-backupPROD
healthy
last ping
3 min ago
next expected
in 21 min
streak
847 runs
30-day uptime
99.3%
https://ping.deadpost.dev/a3f9c2b1…
alert · 47 min ago · 14:02 utc
payment-processor-sync stopped pinging
Silent for 47 minutes. Period 15m + 5m grace exceeded.
#ops-alerts · on-call · oncall@acme.io

Sixty blocks. Each one is a check interval.

Green means it ran. Red means it didn't. That's the whole product.

How it works

Setup takes 5 minutes. Curl works — SDKs add more.

step 01

Create a monitor

Give it a name, set how often your job runs, and set a grace period. deadpost generates a unique ping URL.

step 02

Add the ping call

Append one curl line to your cron job — or import a deadpost SDK for automatic duration tracking and exception capture.

$ curl -fsS https://ping.deadpost.dev/TOKEN
step 03

Get alerted on silence

If the ping doesn't arrive within the expected window, deadpost alerts you via email, Slack, or PagerDuty.

SDKs that do more than curl

Wrap your job in one line. Duration tracking, exception capture, bounded retries and offline buffering — in Python, Node, or a single static binary that drops into any crontab.

# Wrap the crontab line you already have. Exit code, stdout and stderr
# all pass straight through — `&&`, `set -e` and cron's mail keep working.
deadpost run -- ./backup.sh

# Tag the numbers that describe the work, not just that it happened:
# a backup that exits 0 having written 2 MB is green everywhere else.
deadpost run --tag rows=1240918 --tag bytes=14002003912 -- ./dump.sh

# Kill a job that hangs, and hear about it as a failure rather than
# as silence. --capture attaches the failing job's output to the alert.
deadpost run --timeout 30m --capture -- ./import.sh

# Several jobs on one box? Name them; -m picks the monitor.
deadpost run -m nightly-etl -- ./etl.sh

# Already a pipeline? Just the heartbeat.
./rotate-logs.sh && deadpost ping
  • Auto duration tracking

    Wrap your job in a scoped run. /start fires on entry, /end on exit, and deadpost knows the difference between "not started yet" and "started an hour ago and never came back".

  • Fail-fast on exceptions

    An exception fires a failure ping immediately and is then re-raised unchanged — same error, same stack. You alert in seconds instead of waiting out the silence window.

  • Reports even when the process dies

    A run still open when the process exits is reported before it goes. A job that starts and then dies would otherwise look alive until its whole period elapsed.

  • Tag the numbers, not just the fact

    Attach rows, bytes, batch sizes to each run. A backup that exits 0 having written 2 MB instead of 14 GB is green everywhere else — tags are how it stops being.

  • Read the SDK docs

more SDKs landing soon

rustphpjavaruby.net

Not just another ping receiver

Three features that solve real problems competitors haven't touched.

rotation

Zero-downtime token rotation

Rotate your ping token without a monitoring gap. The old and new tokens both work during a configurable overlap window. Deploy the new URL at your own pace, then commit.

auto-resume

Pause with auto-resume

Set a monitor to resume automatically after maintenance. No more coming back to a silenced monitor you forgot to re-enable three days later.

detection

Schedule auto-detection

deadpost analyzes inter-ping intervals and suggests the correct period when your monitor is misconfigured. Accept in one click.

Miss thresholds

Alert after N consecutive misses, not the first hiccup. Reduce noise on flaky runners.

Quiet hours

Suppress alerts per monitor, timezone-aware, with overnight-span support. Pending alerts deliver when the window ends.

Duration tracking

Use /start and /end pings to detect slow runs. Alert when a job takes 2.5× longer than its average.

Slack · PagerDuty · webhooks

Route alerts to the right channel per environment. HMAC-signed outbound webhooks with delivery logs.

drops into your existing cron setup

unix crongithub actionskubernetesaws lambdacelery beatsidekiq cron

Simple pricing

No per-alert fees. No overage charges.

Hobby
$0/mo

For personal projects and small scripts.

10 monitors
Email alerts
7-day ping history
All smart alerting features
Token rotation
Start free
most popular
Solo
$19/mo

For developers running production jobs.

50 monitors
Slack + outbound webhooks
90-day ping history
5 team members
Full REST API + API keys
All Hobby features
Start with Solo
Business
$49/mo

For teams with production SLAs.

Unlimited monitors
1-year ping history
PagerDuty (Events API v2)
Audit-ready SLA PDF reports
Unlimited team members
Priority support
All Solo features
Start with Business

all plans bill monthly · cancel anytime · no contracts · prices exclude tax (added at checkout)

Questions

Three things competitors don't ship: zero-downtime token rotation, monitor pause with scheduled auto-resume, and automatic schedule detection from ping history. The core ping model is the same — silence is the signal — but the alerting layer is meaningfully smarter.

Start watching the silence

Free forever on Hobby. No credit card. Five minutes from signup to your first ping.