Open source · Self-hosted · Enterprise-ready · MIT License

Uptime monitoring
with a status page built in

Relay alerts you and your users when something breaks — through a beautiful public status page with incident management, team RBAC, REST API, PagerDuty/OpsGenie, and maintenance windows. One tool, zero duct tape.

<20 MB
Docker image
5
Monitor types
REST
API included
RBAC
Team access
90d
Uptime history

Monitor privately. Share publicly.

Try the live demos below — latency ticks update in real time, uptime bars show tooltips on hover, and both panels stay in sync.

Admin Dashboard
Real-time monitor overview with dark mode
Live

Dashboard

4
Total
3
Up
1
Down
API Services
API Gateway
155ms Up
Auth Service
61ms Up
Infrastructure
Database
23ms Up
Media Server
Down
Public Status Page
Shareable with your users
Interactive
Acme Status Incident History →
Major Outage
API Gateway
99.98% Up
Auth Service
100% Up
Database
99.95% Up
Media Server
97.12% Down

Everything you need. Nothing you don't.

Built for self-hosters who want Statuspage.io quality without the SaaS bill or the second tool.

HTTP, TCP, TLS, DNS & Heartbeat

Check APIs, ports, certificate expiry, DNS resolution, and cron jobs — all from one dashboard. Per-monitor latency thresholds trigger degraded state.

Live WebSocket Dashboard

Status updates stream in real time via HTMX WebSocket. No page reloads, no polling. Monitor cards flash when state changes.

90-Day Uptime Bars

Visual history per monitor with daily segments — identical to Statuspage.io. Grouped by service category on both dashboard and status page.

Incident Management

Post incidents, add timeline updates, and mark resolved. Auto-opens incidents on monitor failure, auto-closes on recovery. Full public history page.

Email Subscribers

Double opt-in with one-click unsubscribe. Notify users automatically when your status page changes state.

Single Go Binary

No Node, no Python, no runtime dependencies. Templates and assets embedded at build time. Runs on any Linux box or Raspberry Pi.

SQLite WAL Mode

Zero ops database. Back up with cp relay.db relay.db.bak. No Postgres to run. Configurable retention up to 90 days.

Distroless Docker Image

Under 20 MB production image. No shell, no attack surface. Docker healthcheck built in. Auto-TLS with the included Caddy compose file.

Dark Mode

Full dark mode toggle with localStorage persistence. Respects prefers-color-scheme on first visit. Applies to both the admin dashboard and status page.

Ready for your entire team

Features that large teams and production deployments actually need — without the SaaS price tag.

Maintenance Windows

Schedule maintenance windows before deployments. Monitors keep running and results are recorded — but no alerts fire and no incidents are auto-created. Scoped globally or per-monitor.

PagerDuty & OpsGenie

Native integrations with PagerDuty Events API v2 and OpsGenie Alerts API (US and EU regions). Triggers open, resolves close — plus the existing Slack, webhook, and SMTP channels.

Audit Log

Every admin action is recorded: who created, updated, or deleted a monitor; who posted an incident update; who changed a user's role. Paginated and searchable.

Monitor Groups

Assign monitors to named groups (API, Database, CDN, Auth) that appear as separate sections on the dashboard and public status page — just like enterprise Statuspage.

Pause & Test Now

Pause any monitor with one click — checks stop, no alerts fire, status shows as paused. The "Test Now" button fires an immediate probe and shows the result inline, before saving.

Per-Monitor Alert Routing

Assign specific alert channels to each monitor. Route your database alerts to PagerDuty, API alerts to Slack, and TLS expiry to email — independently, per monitor.

Latency Metrics API

Time-bucketed P50/P95 latency data for any monitor over any window up to 720 hours. Pull into Grafana, Datadog, or your own dashboards via the REST API.

Five ways to watch your stack

http URLs & APIs Status codes, keywords, latency thresholds
tcp Ports & services Any TCP socket — databases, Redis, SMTP
tls Cert expiry Alert days before your cert expires
dns DNS resolution Verify record resolution & IP matching
heartbeat Cron jobs POST /ping/:id from your cron — miss = alert

Two enterprise tools in one

Self-hosters usually need Uptime Kuma and Statuspage.io. Relay replaces both — and adds enterprise features they don't have.

Uptime Kuma Statuspage.io Relay
Self-hosted
Public status page
Grouped components
Email subscribers paid
Incident management
REST API paid
Team RBAC paid
PagerDuty / OpsGenie paid
Maintenance windows
Audit log paid
Slack / webhook alerts paid
Docker image size~200 MB< 20 MB
Free

Up and running in 30 seconds

One Docker command. No config file required. Status page at /, admin dashboard at /admin, REST API at /api/v1/.

Read the docs →
docker run -d \
  --name relay \
  --restart unless-stopped \
  -p 8080:8080 \
  -v relay-data:/data \
  -e RELAY_SECRET=$(openssl rand -hex 16) \
  -e RELAY_ADMIN_PASS=yourpassword \
  -e RELAY_SITE_NAME="Acme Status" \
  ghcr.io/rohzzn/relay
MIT License Self-hosted Enterprise-ready

Ready to relay your uptime?

Free, open source, and built for teams who care about their users and their stack.