Skip to content
CoriouPublic

About

Self-hosted SDR web app: see, hear and decode the radio spectrum from your browser. One RTL-SDR decodes ADS-B, AIS, ACARS, VDL2, DMR/P25, POCSAG, APRS, rtl_433 sensors and Meshtastic at once, with a live spectrum, waterfall, map and scanner.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Latest commit

 

History

2,396 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WaveKit — MAKE SENSE OF THE SPECTRUM

See, hear and decode the radio spectrum around you, from your browser.

CI License: AGPL-3.0-or-later Node.js 24 Hardware: RTL-SDR

Quick start · Web app guide · Documentation · Contributing

WaveKit is a self-hosted, open-source software-defined radio (SDR) station for the RTL-SDR. It turns one cheap dongle, plugged into your computer or into a Raspberry Pi on your network, into a live window on the airwaves. It decodes aircraft (ADS-B, ACARS, VDL2), ships (AIS), pagers (POCSAG, FLEX), digital voice (DMR, P25, YSF), APRS, weather sensors and Meshtastic in parallel, and shows all of it in a fast web SDR app in your browser: a live spectrum and waterfall, a map, an activity log and a scanner. It is for radio hobbyists, scanner listeners and plane and ship spotters who want everything their antenna hears in one place.

The WaveKit web app: live spectrum and waterfall over the marine VHF band, with decoded signals labelled on their peaks and the tuned DMR channel in a card

What you get

  • A live spectrum and waterfall. Drag to tune, click a peak to open it. Signals are labelled with what WaveKit identified: DMR · CC 1, AIS · MMSI 228237700, and so on.
  • Everything decoded at once. Every decoder whose band falls inside the captured window runs in parallel, from one dongle.
  • Listen and record. Analog demodulation with squelch and tone squelch, decoded digital voice, recordings you can play back from the browser.
  • Activity. A searchable log of everything heard: talkgroups, capcodes, MMSIs, callsigns, frequencies.
  • Map. Aircraft, vessels, APRS stations and mesh nodes around your station, with their trails.
  • Scanner. Watch a band, find what is active, jump back to it later.
  • Works anywhere. Light and dark themes, a ⌘K palette, and a layout that works on a phone. You can install it as an app (PWA).
Activity Map
Activity log with category filters and recent decoded events Map with aircraft, vessels and the station's coverage
Messages Scanner
Decoded messages as cards Scanner drawer listing the signals found in the last hour

Quick start

Try the web app without a radio

The web app ships with a mock server that plays a realistic station, so you can try it in two minutes. You need Node.js 24 and Corepack.

corepack enable
pnpm install --frozen-lockfile
pnpm --filter @wavekit/web mock    # terminal 1: mock station on :3101
pnpm --filter @wavekit/web dev     # terminal 2: web app on http://localhost:5173

Run WaveKit with Docker

The core and every decoder run in one image. No hardware is needed for a first run.

make app-up        # builds the image if needed, then starts the core on http://127.0.0.1:9000
make app-status
make app-logs

Then point the web app at it:

WAVEKIT_WEB_API=http://127.0.0.1:9000 pnpm --filter @wavekit/web dev

The core does not serve the web app itself yet; until it does, run it with the command above.

To use a real receiver, follow Docker runtime for a Raspberry Pi or a USB dongle, and the fresh-card Pi setup to prepare a Pi as an SDR host.

To open WaveKit to other devices on your network, run it in protected mode, where each browser is paired once: see Access and pairing.

Hardware

  • An RTL-SDR dongle (RTL2832U), plugged into a Raspberry Pi on your network or directly into the machine running WaveKit.
  • Any machine that runs Docker for the core: a Pi 5, a mini PC, a laptop.

Decoders

Decoder Signals Use
readsb ADS-B, 1090 MHz Aircraft
AIS-catcher AIS, 162 MHz Ships
acarsdec ACARS, VHF Aircraft data link
dumpvdl2 VDL Mode 2, 136 MHz Aircraft data link
dsd-fme DMR, P25, YSF, D-Star, NXDN Digital voice
multimon-ng POCSAG, FLEX, DTMF Pagers, tones
Dire Wolf APRS, 144 MHz Amateur radio
rtl_433 ISM, 433 / 868 / 915 MHz Weather sensors, IoT
lora-meshtastic, on gr-lora_sdr LoRa, 868 / 915 MHz Meshtastic mesh

All of them are built into the Docker image. Each one can start automatically when its band is in view, always, or never (Settings › Decoders).

How it works

RTL-SDR ──IQ──▶ WaveKit core ──▶ decoders (one process each)
 (Pi or USB)        │
                    ├── REST API and WebSocket  ──▶ web app, CLI dashboard, your scripts
                    ├── live audio (HTTP)
                    └── RTL-TCP relay           ──▶ other SDR apps (optional)

The core reads one IQ stream, channelises it, and feeds each decoder the slice it needs. Events, spectrum frames and audio go out over a documented API. See Architecture.

Documentation

Start with the documentation index. The most useful pages:

Contributing

See CONTRIBUTING.md for the development setup, the checks to run, and the rule that keeps this documentation in step with the code.

Status

WaveKit is young and moves fast. It is used every day with a Raspberry Pi receiver, but configuration keys and the API can still change from one commit to the next. Issues and feedback are welcome.

Credits

WaveKit stands on the work of the open-source radio community. Every decoder above is its own project, run as a separate process with its own license. csdr demodulates the audio you listen to by default, and mbelib decodes digital voice inside dsd-fme. The channelizer and the spectrum are WaveKit's own (a Rust engine and TypeScript). WaveKit also works with SDR++: as an optional source, and through the RTL-TCP relay, which lets SDR++ tune and watch the same receiver. Thank you to their authors.

License

WaveKit is licensed under AGPL-3.0-or-later (see LICENSE). You may use, modify and run it. If you distribute a modified version, or offer it to users over a network, you must publish your changes under the same license.

Using WaveKit through its REST or WebSocket API from a separate program does not place that program under the AGPL. @wavekit/api-types (packages/api-types) is MIT-licensed so client projects can import the API types freely.

The bundled third-party decoders run as separate processes and keep their own licenses.

About

Self-hosted SDR web app: see, hear and decode the radio spectrum from your browser. One RTL-SDR decodes ADS-B, AIS, ACARS, VDL2, DMR/P25, POCSAG, APRS, rtl_433 sensors and Meshtastic at once, with a live spectrum, waterfall, map and scanner.

Topics

Resources

Contributing

Security policy

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages