Open-source uptime monitoring.
Self-hosted with Pulse.

Multi-protocol monitoring and heartbeat checks for cron jobs. Real-time alerts on your infrastructure.

Monitor websites, APIs and infrastructure over HTTP/S, HTTP/3, TCP, UDP, WebSocket, gRPC, DNS, ICMP, SMTP and QUIC. Run Pulse on your infrastructure with PostgreSQL and TimescaleDB; no hosted monitoring service required.

Pulse Dashboard · example
Demo data
Uptime
99.97%
Monitors
12
Avg Latency
38ms
HTTPS api.example.com
42ms UP
gRPC auth-service:443
18ms UP
TCP redis-primary:6379
3ms UP
DNS ns1.internal
12ms UP
SMTP mail.example.com:587
1.2s SLOW

Built for production

Website, API and infrastructure monitoring

Multi-protocol monitoring

HTTP/S, HTTP/3, TCP, UDP, WebSocket, gRPC, DNS, ICMP, SMTP and QUIC — plus separate heartbeat monitoring for scheduled jobs.

Real-time WebSocket

Live dashboard updates via diff/patch WebSocket messages. No polling, no stale data.

Self-hosted & Secure

Keep monitoring data on your infrastructure. Encrypted credentials, hashed API tokens and admin-created accounts with admin or read-only roles help control access.

Smart Notifications

Email and webhook alerts for downtime, recovery, slow responses and expiring SSL certificates, with deduplication, retry backoff and delivery logs.

Prometheus Metrics

Native /metrics endpoint. Track uptime, latency, and notification delivery with your existing Grafana stack.

Single Container

The web UI is embedded in the Go binary. Docker Compose runs the Pulse application alongside PostgreSQL with TimescaleDB for monitoring history.

REST API & MCP server

Automate monitor management through the versioned REST API and OpenAPI contract. Connect AI assistants through the separate MCP server, with read-only access by default.

History & incident investigation

Explore uptime, response times, incidents and check failures. Set per-monitor history retention from 1 to 365 days and organize monitors with tags.

13 interface languages

Use Pulse in English, Arabic, Belarusian, German, Spanish, French, Italian, Japanese, Korean, Portuguese, Russian, Turkish or Chinese, with RTL support and light, dark and system themes.

Cron jobs & scheduled tasks

Heartbeat monitoring for cron jobs

Use heartbeat push monitoring for scheduled tasks, backups and CI jobs. A task calls a token-scoped ping URL after a successful run; Pulse detects missed runs after the configured grace window and sends downtime and recovery alerts.

Heartbeat event history and a status timeline help investigate missed runs. Send an explicit failure ping when a job fails, and configure history retention for each heartbeat. Follow the heartbeat setup guide for shell, cron and CI examples.

Common questions

About self-hosted uptime monitoring

What is Pulse?

Pulse is an open-source, self-hosted uptime monitoring platform for websites, APIs and infrastructure. It combines multi-protocol health checks, a real-time dashboard, email and webhook alerts, a REST API and a separate MCP server.

Is Pulse free to self-host?

Pulse is available under the Apache License 2.0. You can run it on your own infrastructure. You provide the server and database, plus an SMTP server or webhook destination if you want notifications.

Which protocols can Pulse monitor?

Pulse supports HTTP/HTTPS, HTTP/3, TCP, UDP, WebSocket, gRPC, DNS, ICMP, SMTP and QUIC checks for websites, APIs and infrastructure. Heartbeat monitoring detects missed runs from scheduled jobs.

Does Pulse need an external database?

Yes. Pulse serves its API and embedded web UI from one application binary or container, and requires PostgreSQL with TimescaleDB for configuration and time-series history. The Docker Compose file includes the database service.

Can I monitor cron jobs and scheduled backups?

Yes. Create a heartbeat and have your cron job, backup script or CI task call its token-scoped ping URL after success. Pulse detects missed pings after the configured grace window and supports explicit failure pings, downtime and recovery alerts, and event history.