Repository navigation
Home
RF spectrum monitoring, anomaly detection, transmitter geolocation and device identification.

SpectrumAlert is an operator console for RTL-SDR receivers. It provides a web dashboard, a terminal interface, headless services and a Docker deployment. All interfaces share one detector, one storage format and one data directory.
| Page | Purpose |
|---|---|
| Installation | Local install, SDR permissions, Docker |
| Quick Start | First dashboard session and first scan |
| Web Dashboard | Modules, workflow and screenshots |
| Triangulation | Multi-receiver locating, fit quality and residuals |
| CLI Reference | Terminal commands and options |
| Docker | Compose services, USB access, ports |
| Data and Training | Capture storage, IQ fixtures, model training |
| Troubleshooting | Receiver, port and USB problems |
| FAQ | GUI vs CLI, dBFS, ports, common questions |
- Live spectrum, waterfall and detection timeline
- SNR and prominence based anomaly detection
- Multi-receiver triangulation with confidence grading
- Per-receiver calibration and path-loss fitting
- RF fingerprinting with a reference library
- Remote
rtl_tcpreceivers - PMR446 channel scanner
- Model training, testing and deployment
- Dark and light themes, responsive layout
- Offline-capable UI assets
- Deterministic synthetic IQ fixtures for development
The web dashboard is not a replacement for the terminal. It is another front end to the same backend:
# Terminal
spectrum-alert monitor status
spectrum-alert monitor start --freq-start 144 --freq-end 148
# Web dashboard
spectrum-alert web --port 8000
# Docker dashboard
docker compose up -d
# Docker CLI command
docker compose run --rm spectrumalert monitor statusOnly one process can hold a physical RTL-SDR at a time. Stop dashboard monitoring before running a CLI scan against the same dongle.
Levels are dBFS, not dBm. The RTL-SDR has no absolute power reference until a per-receiver calibration offset is applied. See Data and Training for the storage model.
SpectrumAlert is licensed under the GNU General Public License v3.0 only. Documentation changes are welcome through the repository issue tracker.