Pulse is a modern, opinionated monitoring platform: uptime checks, real-time dashboards over WebSockets, full incident lifecycle, branded status pages. One docker compose up on a single VM — scales to multi-region probes when you need it.
Opinionated defaults wherever they're sensible. Configuration sprawl is a failure mode, not a feature.
One mental model for every kind of check. Tag, schedule, set the cadence, decide what "down" means. Monitor docs →
The dashboard updates the instant a worker reports. No polling, no stale tabs, no refresh dance during an incident. How it works →
Detected → investigating → identified → monitoring → resolved. With timelines, comments, severity, and postmortems. Incident docs →
One bundled worker out of the box. Enroll more in any region when you want multi-vantage probes — Pulse aggregates per majority, all, or any-region rules. Workers & regions →
Slack, Email, Discord, Telegram, PagerDuty, webhooks. Combine with tag scopes, severity, time-of-day, mute windows. Alert routing docs →
One toggle to publish. Custom domain, subscriber emails, RSS, components grouped by service. Status page docs →
Most installs run a single worker on the same VM as the API — that's the default and it's perfectly fine. When you outgrow it, drop a stateless worker binary in any region and it joins the fleet automatically. Multi-region is an opt-in toggle in Settings; the schema, scheduler, and aggregator are ready when you need them.
Down-rule (once you're multi-region): Majority of regions, all, or any. Pulse never alerts on a single regional blip.
Every incident is a timeline. Severity changes, status transitions, comments, channel deliveries, and customer-facing updates — all in one place.
Subscribe by email, Slack, or RSS. Components grouped by service. 90 days of uptime, visible to anyone.
One docker compose up and you're monitoring. Self-hosted, MIT-licensed, your data stays on your hardware.