Alerts don't stop at the edge of the network.
OpenAlert is a decentralized alerting gateway that translates critical events between traditional IT infrastructure and edge networks — Nostr and the BitChat Bluetooth mesh — without relying on a central server to keep running.
Core architecture
OpenAlert works as a multi-protocol gateway that abstracts the transport layer of notifications, letting messages flow between traditional IT infrastructure APIs and decentralized edge networks.
Universal downstream compatibility
Formats outbound payloads using the standard Prometheus Alertmanager JSON schema. That lets it trigger py-phone-caller directly, or integrate with Grafana, PagerDuty, or any internal dashboard that already speaks that language.
Standalone by design
The core daemon openalertd runs entirely on its own as a protocol translator — run it in the cloud or on a local mesh, no telephony hardware or nearby modem required.
Supported protocols
OpenAlert listens and broadcasts simultaneously across three transport layers. Each one flows in and out of the same central hub.
REST
Listens for incoming JSON payloads via standard webhooks, compatible with the monitoring systems you already have running.
Nostr
Monitors the network via a persistent WebSocket connection to a configured relay pool, and cryptographically signs every alert it broadcasts.
BitChat
Peer-to-peer architecture over a Bluetooth Low Energy mesh. Delivers alerts even when standard TCP/IP routing fails completely, encrypted end-to-end with the Noise Protocol Framework.
Deployment use cases
Two typical ways to put OpenAlert to work, depending on which side of the network you need to cover.
Universal protocol translator
Ingests Nostr or BitChat events and converts them into standard Alertmanager webhooks to trigger your existing incident response stack — or converts local REST alerts into Nostr broadcast events to reach further.
Off-grid telephony bridge
Catches offline BitChat mesh packets or Nostr events, securely decrypts the recipient, and routes the payload to py-phone-caller to dial a real voice or SMS call through a physical GSM modem.