PSAPLink — Public Safety Alert Network
PSAPLink is a multi-tenant public safety notification platform that connects PSAPs (911/dispatch centers) with their third-party response companies through a real-time, multi-channel alert pipeline. When a dispatcher creates an incident, companies are notified across 11 transport channels, per-user acknowledgements are tracked, and the system automatically escalates when responses are not received on time.
Two Applications
PSAPLink Cloud (cloud/)
The cloud-hosted hub. Handles hub routing, company dashboards, and the superadmin console.
- Receives signed incident events from PSAPLink PSAP instances and routes notifications to company users
- Fans out alerts across 11 transport channels (email, SMS, Slack, Teams, PagerDuty, Discord, CAP, SNPP, ntfy, push, webhook)
- Tracks per-user acknowledgements; routes ACK confirmations back to the originating PSAPLink PSAP instance
- Hosts company dashboards where users manage transport preferences, ACK alerts, and send replies
- Provides a superadmin console for managing all PSAPs, companies, and platform configuration
- Logs every communication event in an append-only audit record
PSAPLink PSAP (psap/)
The lightweight agent installed on each PSAP's isolated network.
- Polls CAD export files (CFS polling) using vendor-specific parsers
- Provides a dispatch interface for PSAP telecommunicators to create and send incidents
- Signs and pushes incident events outbound to PSAPLink Cloud — no inbound connections required
- Receives company ACK confirmations back from Cloud (callback or poll mode)
System Architecture
[PSAP Network] [Cloud Infrastructure]
CAD System (TriTech, CentralSquare,
NewWorld Aegis, etc.)
|
| XML export files
v
PSAPLink PSAP
(behind PSAP firewall)
|
| signed HMAC event (HTTPS)
| POST /api/v1/core/events/incident
v
PSAPLink Cloud
(hub routing)
|
NotificationService
|
+-------------+-------------+
| | |
email SMS Slack ...
| | |
Company users notified via 11 transport channels
|
Company users ACK
(web dashboard or transport reply)
|
AckIngestionService
|
| ACK routed back |
|<--------------------------+
|
PSAPLink PSAP
Dispatcher sees ACK confirmation
Tech Stack
| Layer | Technology |
|---|---|
| Backend | PHP 8.2+ / Symfony 7.x |
| Frontend | React 18 |
| Database | PostgreSQL 15+ |
| Async Queue | Symfony Messenger |
| Real-time | Mercure SSE |
| Encryption | libsodium (XSalsa20-Poly1305) |
| Auth | JWT (15-min) + API keys |
| Containers | Docker Compose |