MULTI-PROTOCOL ALERTING · WORKS WHEN THE INTERNET DOESN'T
Alerts don't stop at the edge of the network.
When your monitoring stack has something to say, OpenAlert makes sure it gets said — over REST, Nostr, Bluetooth mesh, LoRa radio, Wi-Fi or SMS — and can ring your actual phone through py-phone-caller if nothing else gets through. No cloud vendor, no single relay, no missed page.
PURE RUST · v0.2.0 · SINGLE STATIC BINARY · 100+ TESTS
When the network fails
OpenAlert isn't built for the best-case scenario. It's built for these:
Core architecture
OpenAlert standardizes every incoming alert into the Prometheus Alertmanager schema, then relays it across whichever transports are still alive — from enterprise tooling to Bluetooth, radio and SMS.
Speaks the language you already run
Outbound payloads follow the standard Alertmanager JSON schema, so it can trigger py-phone-caller directly or plug into Grafana, PagerDuty, or any dashboard that already speaks that language.
One binary, zero dependencies
openalertd is a single static Rust executable with its web dashboard built in. It runs on a datacenter server or a solar-powered ARM board, and a SQLite spool keeps queued alerts safe through power loss.
Built to run unattended
Circuit breakers back off failing links, a watchdog resets hung USB radios and modems, and radio traffic respects the 1% ETSI airtime limit. Field-certified on ARM64 boards with LoRa hardware.
Ships with turnkey profiles
edge-sensor for off-grid SOS nodes, mesh-repeater for hilltop relays, and central-gateway for your operations center.
Supported transports
Six ways in, five ways out, one daemon in the middle. Colors follow Web of Trust distance: green is direct and local, yellow is relayed, red is third-party infrastructure.
REST
Receives JSON payloads from watchdogs and webhooks, compatible with the monitoring you already run.
Nostr
Encrypted gift-wrapped DMs (NIP-17/44) and public broadcast, through relays or a built-in relay on port 8088. Works with 0xChat, with acknowledgments.
BitChat
Peer-to-peer over Bluetooth Low Energy, with no ISP or cell tower involved. Direct messages use a Noise XX handshake, and private emergencies escalate to the public mesh.
SOS portal
Phones join the node's Wi-Fi and a captive portal opens at /sos. No app to install, and an offline CAPTCHA keeps spam out.
LoRa
Sub-GHz radio links field nodes hop by hop, with routing that steers around weak links and built-in airtime limits.
SMS
A GSM/LTE modem sends and receives texts over AT commands. Sender allow-lists stop strangers from injecting alerts.
Use cases
Not hypotheticals — the situations OpenAlert is actually built to survive.
3 AM, and your node just went dark
Your Lightning node stops syncing and Alertmanager fires — right as your home ISP drops too. OpenAlert already relayed the alert over Nostr and dialed your phone through py-phone-caller. You're awake before anything force-closes.
The state cuts the internet mid-protest
Webhooks and push notifications die the moment a government throttles or blackholes traffic. OpenAlert keeps moving alerts over Bluetooth mesh and LoRa radio, and people without the app can still send an SOS through the node's Wi-Fi portal. No ISP, no cell tower, no server to seize.
Your homelab has no one on call
Prometheus fires into a channel nobody checks after hours. Point the same alert at OpenAlert instead: it broadcasts to Nostr for anyone watching a relay, and triggers a real call or SMS through py-phone-caller — no alerting vendor, no monthly seat.
Get it running
Compiles with standard Rust tooling into one static executable.
Support the project
OpenAlert is free, open-source, and grant-funded — grants run out, uptime doesn't. If it's useful to you or your team, keep it running.
Instant, low-fee. Scan with any Lightning wallet.
Standard Bitcoin address, works with any wallet.