Marine VHF runs 156.0 to 157.4 MHz, a stone's throw above the 2-meter band. The antenna on your mast receives it right now. DockTalk turns that into a live harbor monitoring network: add a $45 RTL-SDR, paste one command, and your callsign goes on the board as that harbor's ears.
We monitor marine VHF voice traffic around busy harbors, 16 channels per port simultaneously, and run every transmission through ASR and LLM curation. The output is a live app: Coast Guard traffic, maydays, bridge-to-bridge working channels, all transcribed, mapped against live AIS, and ranked. The receive side is a volunteer network of SDR nodes, and the best node sites in any harbor town are the ones with a real antenna at height. That's you.
Receiving marine VHF is legal for anyone in the U.S.; it's public, unencrypted spectrum. Your license isn't required for any of this, and the node never transmits. There's no TX hardware in it to begin with.
| Component | Detail |
|---|---|
| Capture | One RTL-SDR at 2.4 MS/s. The whole marine band is 1.4 MHz wide, so a single dongle demodulates all 16 of a port's channels in parallel. |
| Demodulator | RTLSDR-Airband (NFM), built from a pinned upstream
commit, one MP3 stream per channel. |
| Transport | Push-only over HTTPS, outbound port 443, ~32 kbps per channel. The node accepts no inbound connections: no VPN, no mesh, no open ports, nothing listening beyond loopback. |
| Auth | Per-node 256-bit bearer token, minted when your one-use claim code is redeemed, individually revocable. No shared credentials anywhere in the fleet. |
| Packaging | Versioned multi-arch Docker image (arm64 / armv7 / amd64) built by
public CI from pinned SHAs. Same bytes on every node; daily self-update against
stable; every push phones its version home. |
| Host OS | Any Debian or Ubuntu box with systemd: a Pi, the shack PC, that mini PC running your APRS igate. |
The full architecture, security model, and API surface are documented at docktalk.app/nodes. It's push-only because a node host tore the previous design apart; we'd genuinely like you to try the same.
# refuses to run (and preserves your code) on unsupported machines curl -fsSL https://docktalk.app/install | sudo bash -s -- --claim DT-XXXX-XXXX --docker
It ends with VERIFIED when your audio is arriving, and your node appears on the leaderboard within a minute. Starting from a blank Pi instead? The step-by-step guide covers flashing to VERIFIED; you'll skip most of it.