beacon/ v1.0.0
v1.0.0self-hosted uptime monitoring · open source

Your site is down.
You don't know yet.

Beacon is a self-hosted uptime monitor. HTTP, TCP, ping, DNS, and push checks. Real-time heartbeats over WebSockets. Runs on your server — your data, your rules.

coming soon
// MIT licensed// one docker command// your data, your server
https://beacon.acme.io/monitors/google
beacon · acme team
beaconv1.0.0
Search monitors…⌘K
Monitors · 8
+ new
api.acme.io
HTTP · 187 ms
acme.io
HTTP · 142 ms
google
HTTP · 218 ms
billing.acme.io
HTTP · 842 ms
db-primary :5432
TCP · 12 ms
docs.acme.io
HTTP · 203 ms
acme.io DNS
DNS · 8 ms
nightly-backup
PUSH ·
J
John Doe
john@acme.io
monitors/google
UP
google
HTTP · https://google.ca · every 20s
⚙ Configure
Pause
Run check now
Uptime · 30d
99.92%
Avg response
218 ms
p95
412 ms
Last incident
6d ago
Overview
Heartbeats
Incidents (3)
Response time
SSL
Settings
Uptime Tracker
Last 90 heartbeats · 20s interval
updegradeddown
30m ago20m ago10m agonow
Response Time
ms · p50 / p95
1h
24h
7d
30d
6004503001500
00:0004:0008:0012:0016:0020:00now
Response distribution
last 24h · 4,320 checks
p50
218 ms
p90
341 ms
p95
412 ms
p99
684 ms
SSL Certificate
valid
cn*.google.ca
issuerGTS CA 1C3
chainvalid
expiresin 42 days
Incidents
last 30 days
#247googleresolved6d ago
#246googleresolved14d ago
#245googleresolved21d ago
Notification channels
Fires on down, degraded, and recovery
slack#incidentsenabled
emailoncall@acme.ioenabled
telegram@acme-opsenabled
webhookhooks.acme.io/beaconenabled
Live log
ws://connected
02:14:46.118GET google.ca · timeout (>10s)
02:14:46.410retry 1/3 · timeout
02:14:46.702retry 2/3 · timeout
02:14:46.920confirmed DOWN · #247 opened
02:14:48.100NOTIFY → slack · email · webhook
02:17:12.411recovered · 200 · 204ms
5
check types
20s+
configurable interval
ws://
real-time heartbeats
$0
self-hosted forever
// what's in the box

The whole kit. Not an upsell ladder.

[01]
Five check types
HTTP(S), TCP, ping, DNS, and push. Assert status codes, response bodies, latency, keyword matches. Works whether you're watching a public API or a box on your LAN.
monitor: api.acme.io
type: http
interval: 20s
expect: status 200
[02]
SSL certificate monitoring
Every HTTPS monitor tracks its cert automatically. Beacon alerts you when a cert gets close to expiry — 30, 14, and 3 days out. No more surprises at 2am.
cert: *.acme.io
expires: 2026-07-14
issuer: Let's Encrypt
chain: valid
[03]
Public status pages
One click to publish a status page per group of monitors. Custom domain, custom branding, logo, favicon, and custom CSS. Incident history included.
status.acme.io
├─ api up
├─ web up
└─ workers degraded
[04]
Teams & roles
Owner, Admin, Member, Viewer. Every monitor change goes into an audit log. Maintenance windows suppress alerts for scheduled work.
role: admin
audit: on
windows: 3 scheduled
[05]
Notifications
Email, Slack, Discord, Telegram, and signed webhooks. HMAC-SHA256 on every webhook, custom headers, your choice of target.
slack → #incidents
email → oncall@acme.io
webhook → HMAC-SHA256
[06]
Organized monitoring
Tags, groups, search, and bulk actions. Pause, resume, or delete fifty monitors at once. Export to JSON; import somewhere else.
tags: [prod, edge]
group: billing
bulk: pause 12 →
// an incident looks like this

From ping to page in 2.8 seconds.

Heartbeat fails → retry → confirm DOWN → fan out to every channel you've wired up. Broadcast over WebSockets so the dashboard updates live.

02:14:06.102GET api.acme.io/health · 200 · 187ms
02:14:26.131GET api.acme.io/health · 200 · 194ms
02:14:46.118GET api.acme.io/health · timeout (>10s)
02:14:46.410retry 1/3 · timeout
02:14:46.702retry 2/3 · timeout
02:14:46.920confirmed DOWN · incident #247 opened
02:14:48.100NOTIFY → slack#incidents · email · webhook
02:14:48.920ws:// heartbeat broadcast · status.acme.io flipped
// diff against the alternatives

Same job. Less nonsense.

beacon
pingdom
uptimerobot
License
open source (MIT)
proprietary
proprietary
Hosting
self-host only
SaaS only
SaaS only
Data ownership
your database
their cloud
their cloud
Check types
HTTP, TCP, ping, DNS, push
HTTP, TCP
HTTP
Real-time dashboard
WebSockets
polling
polling
Status pages
included · custom domain
$29/mo
add-on
Teams & audit log
included
enterprise
Price · 50 monitors
$0 self-hosted
$79/mo
$49/mo
// the stack

Boring technology. On purpose.

Laravel
the backbone
Inertia + React
typed frontend
TypeScript
no surprises
PostgreSQL
your database
Redis
queues + cache
WebSockets
live heartbeats
Docker
one command up
MIT license
fork it tomorrow
// ready?

Self-host in one command.
Own every byte.

./self-host →
read the docs