The radio band, made readable.
RFAI Monitor captures live RF with an Airspy Mini (HackRF One on transmit), demodulates every conversation in the band, transcribes it with local Whisper, understands it with a local GLM 4.7 Flash model, and fingerprints the physical radio behind each transmission — filed into a searchable on-device archive. v0.8.0, field-tested from a bush valley to Bondi Beach.
transmissions in the production archive — 73.2 h of airtime, all searchable
all Australian UHF CB channels captured in a single 6 Msps span
local GLM 4.7 Flash intent + urgency classification per transmission
leave the machine — STT, LLM, TTS and fingerprinting all run on-device
A signals-intelligence stack that fits in a backpack
One laptop, one SDR, every layer of understanding — from photons to priorities.
- Capture. Airspy Mini pulls 6 Msps across 24–1700 MHz; the DSP engine demodulates NFM, WFM, AM and SSB, with digital signals (DMR, C4FM) detected and labelled instead of mistranscribed. All 80 UHF CB channels monitored in parallel from one capture.
- Listen. Carrier squelch gates every transmission to a clean WAV; faster-whisper
small.entranscribes locally (~6% WER on clean captures) with streaming partials and per-clip quality scoring. - Understand. A local GLM 4.7 Flash model classifies intent and urgency in ~2 s per transmission; a regex+model hybrid extracts callsigns (formal and phonetic), Q-codes, channel refs and CTCSS tones.
- Identify. The fingerprinting engine reads carrier-frequency offset, spectral envelope and key-up transients to tell apart individual physical radios — field-verified on two identical handhelds.
- Remember. Everything lands in SQLite + FTS5 with audio playback, then flows out through a Comms API with native Discord/Slack webhook formats.
Commercial foundation shipped in v0.8.0: named capture sessions with JSON/CSV export, and operator (full TX) vs consumer (listen-only, server-side gated) editions.
Nine panels. Every one is a link.
Each panel opens directly in the hosted demo — no hardware, no login. Against a live engine, every panel also pops out as a standalone window for kiosk or second-screen use.
- 01Dashboard Mission view: stat tiles, colour-coded transmission table with six colour modes, SSE live feed, channel picker. →
- 02Scanner Full-screen spectrum + turbo waterfall — Ctrl-scroll zoom, drag pan, box-zoom, click-to-tune, live gain and squelch, channels-in-span bars. →
- 03Band Chat The radio band as a messenger: one message per transmission, callsign + intent badges, day dividers, inline audio, TX-gated PTT. →
- 04Log Room The archive: URL-synced filters, analyst flags and notes, one-click retranscribe with a bigger model. →
- 05Analysis Activity timeline, heatmap calendar, band distribution, busiest hours — eleven aggregates, with live-vs-demo provenance toggle. →
- 06TX ID Transmitter fingerprinting: CFO + drift, spectral envelope, key-up transient — four identity tiers from named operator to unknown radio. →
- 07Sessions Named capture sessions: start, switch and end from the top bar; per-session history and JSON/CSV export. →
- 08Monitor Watched-frequency manager: priority, tune-on-hit, hit counts, squelch-gated live audio per channel. →
- 09About System state, editions, model inventory — the panel that explains the rest. →
Beyond the panels
Voice descrambling (static, blind-rolling and keyed LCG for BK4819 fleets), UV-K5 fleet firmware flashing over DFU, morse TX/RX with auto-calibrating timing, SSTV, a psytrance-encoded data-over-RF link (PSYLINK), and text-to-RF transmission via Kokoro TTS.
Try it now, then take it home
The hosted demo runs the real 0.8.0 interface against a captured API snapshot. The same source builds the desktop app.
- AFull interactive demo The complete nine-panel UI in your browser — dashboard, scanner, chat, analysis — seeded with real captured data. No hardware needed. →
- BDesktop app — Tauri 2 Native Linux shell (AppImage/deb) wrapping the dashboard: cargo build --release in ui/src-tauri, or grab a prebuilt bundle from Releases. →
- CSource & self-hosting Monorepo: live SDR engine, dashboard, Tauri shell, systemd appliance units and launchers. Evaluation use under the qalarc licence. →
- DPhone APK — band chat first A Capacitor build of the Band Chat panel is specced: the radio band as a phone messenger, with Discord-style presence and receipts. →
- EComms API REST + SSE + webhooks with native Discord/Slack formats — RF events pushed into the tools your team already lives in. →
Editions
Operator — full stack including transmit (PTT, morse, text-to-RF). Consumer — listen-only, with all TX endpoints disabled server-side. Both editions run the same binary; a single environment flag flips the mode.
Every model runs on this machine
No API keys, no telemetry, no round trips. A laptop-class APU does the whole pipeline.
- Speech-to-text
- faster-whisper
small.en, beam 5, radio-procedure prompt, VAD-gated, quality-scored; retranscribe on demand with larger models. - Understanding
- GLM 4.7 Flash — abliterated — served by local Ollama: intent, urgency 0–1 and one-line reasoning, JSON-constrained and SQLite-cached, ~2 s per transmission.
- Entities
- Callsigns (VK-formal and phonetic), Q-codes, channel references, CTCSS tones — hybrid regex + model extraction stored per transmission.
- Voice
- Kokoro-82M TTS with 54 voices, ranked for radio readback; the same engine turns text into RF via the HackRF transmit path.
- Fingerprinting
- Carrier-frequency offset and drift, spectral envelope, key-up transient, cepstrum — online clustering into stable radio identities.
Why an abliterated model for radio traffic?
Distress traffic must never be declined, hedged or re-worded. A "mayday" transcript gets classified, flagged and scored — full stop. Classification output is JSON-constrained and validated against a fixed intent vocabulary before it ever touches the database, and any model can be pinned via a single environment variable.
| Hardware | Role |
|---|---|
| Airspy Mini | Primary RX — 24–1700 MHz, 12-bit, 3/6 Msps |
| HackRF One | TX + secondary RX — 1 MHz–6 GHz, up to 20 Msps |
| RTL-SDR | ISM + ADS-B lanes (SPECTRE sensor grid) |
| UV-K5 fleet | Firmware flash panel, descramble targets |
| WiFi / BLE | All-domain sensor lanes — no SDR needed |
One interface system, sixteen native apps
RFAI is the main interface system in daily use at the centre of the qalarc Tauri ecosystem — four focus areas, one design language.
| Focus area | Apps |
|---|---|
| RF & signals intelligence | RFAI Monitor (v0.8.0) · SPECTRE all-domain SIGINT (v2.20) · Radio Agent Monitor · Cell Monitor |
| Communications & messaging | Qalarc Hub (Signal + WhatsApp) · HERALD accessibility · Privacy Chat · RFAI Chat mobile |
| Monitoring & operations | NetSleuth · chanalyse Monitor · Concierge Hub · email saviour · Snapper Manager |
| Identity, finance & utility | Qal Wallet · GOETICA · MixID · DiskScope |
Research lanes in flight: SPECTRE all-domain grid (drone Remote-ID with operator GPS recovery), PSYLINK 80 bps data-over-RF, GPS/APRS, P25/DMR/NXDN decoding, and the chat-first mobile build. Explore the whole project index →
Field-tested, licence-clear
RFAI Monitor is designed, built, shipped and maintained by qalarc — an AI systems studio in Sydney, Australia. Verified in the field: 7/7 bands detected at ±0.0 kHz in TX/RX loopback, 28/28 full-system tests green, two identical radios separated by hardware fingerprint, 63/63 automated UI tests passing.
Licence: Qalarc Proprietary v1.0 — full ownership, control and commercial rights to qalarc; evaluation, research and personal use for everyone else. Third-party components keep their upstream licences. Transmitting on licensed frequencies may require an appropriate radio licence (ACMA class licences in Australia).