Infrastructure
Monitoring
Made Simple
Self-hosted uptime monitoring with real-time WebSocket updates, beautiful status pages and multi-region distributed monitoring. Monitor websites, databases, games and more.
Everything You Need for Reliable Monitoring
A complete monitoring solution with real-time updates, beautiful status pages and flexible alerting - all self-hosted and privacy-respecting.
Real-Time WebSocket
Instant status updates via WebSocket connections. No polling, no delays - see changes as they happen.
Beautiful Status Pages
15 stunning themes, responsive design and customizable branding. Public or password-protected pages.
Hierarchical Groups
Organize monitors into nested groups with customizable health strategies: any-up, all-up or percentage.
Custom Metrics
Track up to 3 custom numeric values per monitor. Player counts, connections, memory usage - anything you need.
Multi-Channel Alerts
Discord, Email, Ntfy, Telegram and Webhook notifications. Down, still-down and recovery alerts.
Multi-Region Monitoring
Deploy PulseMonitor agents globally for distributed monitoring. Check from multiple locations simultaneously.
Historical Data
Raw pulses for 24h, hourly aggregates for 90 days, daily aggregates forever. Powered by ClickHouse.
Hot Reload
Update configuration without restarts. Add monitors, change intervals or modify groups on the fly.
Self-Hosted & Private
100% self-hosted. Your data stays on your infrastructure. No external dependencies or tracking.
Monitor Any Service
From web endpoints to databases, email servers to game servers. PulseMonitor supports 16 protocols out of the box with configurable timeouts and authentication.
Built for Scale & Reliability
A modular architecture with distributed monitoring agents, real-time WebSocket updates and high-performance ClickHouse storage.
Up and Running in Minutes
Simple TOML configuration makes setup straightforward. Add monitors, groups and status pages with just a few lines.
# ClickHouse connection [clickhouse] url = "http://user:pass@clickhouse:8123/uptime_monitor" # Define a monitor [[monitors]] id = "api-prod" name = "Production API" token = "tk_prod_api_secret" interval = 30 maxRetries = 2 resendNotification = 12 notificationChannels = [] # Optional: Configure PulseMonitor for automated checks [monitors.pulse.http] method = "GET" url = "https://api.example.com/health" timeout = 10 # Create a group [[groups]] id = "production" name = "Production Services" strategy = "percentage" degradedThreshold = 50 interval = 30 children = ["api-prod"] # Create a status page [[status_pages]] id = "public" name = "Production" slug = "public" items = ["production"]
See It In Action
Check out our live status page powered by Uptime Monitor - monitoring real production services.
status.passky.org View Live Status Page