Hunt POTA, SOTA, and DX faster — see every spot, click once, your radio tunes.
POTACAT is a desktop app for amateur radio operators that aggregates real-time spots from every major activity network into one filterable table and an interactive map, then tunes your rig to any spot with a single click via CAT control. Log the QSO, push spots to your panadapter, run FT8 — and when you're away from the shack, operate the whole station (audio, PTT, logging) from your phone or browser.
Works with FlexRadio, Icom, Yaesu, Kenwood, and 200+ other rigs via Hamlib. Windows, macOS, and Linux — including Raspberry Pi.
- Website: potacat.com
- Download: Releases
- Discord: potacat.com/discord
Grab the latest build from the Releases page. Every release ships binaries for Windows, macOS, and Linux, in both Intel/AMD (x86-64) and ARM (arm64 / aarch64) flavors. Pick the file that matches your machine:
| Platform | Architecture | File to download | Notes |
|---|---|---|---|
| Windows 10/11 | 64-bit Intel/AMD | POTACAT-Setup-<ver>.exe |
Standard installer (recommended) |
| Windows 10/11 | 64-bit Intel/AMD | POTACAT-Portable-<ver>.exe |
No install — run from anywhere |
| macOS (Apple Silicon — M1/M2/M3/M4) | arm64 | POTACAT-<ver>-arm64.dmg |
|
| macOS (Intel) | x86-64 | POTACAT-<ver>.dmg |
|
| Linux (PC/server) | x86-64 | POTACAT-<ver>.AppImage, potacat_<ver>_amd64.deb, or potacat-<ver>.x86_64.rpm |
|
| Linux (Raspberry Pi 4/5, ARM SBC) | arm64 | POTACAT-<ver>-arm64.AppImage, potacat_<ver>_arm64.deb, or potacat-<ver>.aarch64.rpm |
The
latest*.ymlfiles on the Releases page are for the in-app auto-updater — you don't need to download them.
Which architecture do I have?
- Windows: 64-bit Intel/AMD. (There is no ARM Windows build.)
- macOS: → About This Mac. "Apple M1/M2/M3/M4" = arm64; "Intel" = x86-64.
- Linux: run
uname -m.x86_64= the amd64/x86-64 build;aarch64= the arm64 build.
Not code-signed yet, so first launch needs one extra click on Windows and macOS (steps below). This is normal for an independent app and doesn't mean anything's wrong.
- Download
POTACAT-Setup-<ver>.exeand run it. - If you see "Windows protected your PC", click More info → Run anyway.
- If the installer is blocked, right-click the
.exe→ Properties → tick Unblock → OK, then run it again.
Prefer not to install? Download POTACAT-Portable-<ver>.exe and double-click —
no installation, settings stored in the same place either way.
-
Download the
.dmgfor your chip (arm64 for Apple Silicon, the plain.dmgfor Intel — see the table above). -
Open the
.dmgand drag POTACAT to Applications. -
First launch: right-click (or Control-click) the app → Open → Open. Because the app isn't notarized yet, a normal double-click will say it "cannot be opened" — the right-click Open is what lets it through.
If macOS still refuses, run this once in Terminal:
xattr -dr com.apple.quarantine /Applications/POTACAT.app
Pick one package format. AppImage is the most portable; .deb and .rpm
integrate with your package manager. Match the architecture (amd64/x86_64
for PCs, arm64/aarch64 for Raspberry Pi & SBCs).
AppImage (any distro):
chmod +x POTACAT-<ver>.AppImage
./POTACAT-<ver>.AppImageDebian / Ubuntu (.deb):
sudo apt install ./potacat_<ver>_amd64.deb # or _arm64.deb on a PiFedora / RHEL / openSUSE (.rpm):
sudo dnf install ./potacat-<ver>.x86_64.rpm # or .aarch64.rpm on a PiSandbox note: on some hardened or newer distros (e.g. Ubuntu 23.10+), Chromium's sandbox needs unprivileged user namespaces. POTACAT detects this and falls back automatically; the
.deb/.rpmpackages ship an AppArmor profile so the full sandbox stays on. If an AppImage won't start, try./POTACAT-<ver>.AppImage --no-sandbox.
Raspberry Pi / headless: POTACAT runs on a Pi (use the arm64 build) and
can run without a GUI to serve the ECHOCAT remote interface — see
Headless mode.
- Set your grid square — Settings → enter your Maidenhead grid (e.g.
FN20jb). Distances, the map, and the great-circle tune arc all key off this. - Add your radio — Settings → My Rigs → New:
- FlexRadio: "SmartSDR CAT", host
127.0.0.1, slice port5002(Slice A). - Most other rigs: "Hamlib/rigctld", pick your model, set the serial port.
- Kenwood-protocol serial: "Serial CAT (Kenwood)", pick the COM port + baud.
- Icom network rigs: "Icom Network" with the radio's IP.
- FlexRadio: "SmartSDR CAT", host
- Click a spot — POTACAT tunes to that frequency and mode instantly.
Real-time spots from every major activity network, merged and de-duplicated into one table and map:
- POTA — Parks on the Air activator spots
- SOTA — Summits on the Air, with summit coordinate lookups
- WWBOTA — Worldwide Bunkers on the Air (spot and re-spot, no login needed)
- GMA — Global Mountain Activity (opt-in)
- DX Cluster — live telnet from AR-Cluster / DXSpider nodes (W3LPL, DX Summit, …)
- Reverse Beacon Network (RBN) — see where your CQ is being heard, with SNR/WPM
- PSKReporter FreeDV — FreeDV digital-voice spots
- WSJT-X — FT8/FT4 decodes highlighted inline, click-to-reply, auto-logging
- DX Expeditions — rare DXpedition callsigns from Club Log, pinned with a DXP badge
- Table, Map, and Split views — sortable/resizable table; Leaflet map with color-coded markers per source, home-QTH marker, day/night overlay, and a great-circle tune arc to the station you're working
- Pop-out map — detachable map window driven by the same filters
- Filters — by band (160m–6m), mode (CW/SSB/FT8/FT4/FM/…), and per-source toggles
- Hide worked parks (from your POTA CSV) and hide out-of-privilege spots (by Technician / General / Extra sub-bands)
- Watchlist — flagged callsigns get a star + desktop notification across all sources
- FlexRadio SmartSDR CAT — TCP to slice ports 5002–5005 (Slices A–D)
- Hamlib / rigctld — bundled rigctld supports 200+ models
- Serial CAT (Kenwood protocol) — direct COM port (QRPLabs QMX/QDX, Win4Yaesu, …)
- Icom Network — control networked Icom rigs over IP
- Panadapter spots — push color-coded spot markers to the FlexRadio panadapter, or to Thetis / ExpertSDR3 / SunSDR via the TCI protocol
- Rotator control — Idiom Press Rotor-EZ / RotorCard / Hy-Gain DCU-1 over serial
- My Rigs — save and switch between multiple radio profiles
- Scan mode — auto-step through filtered spots with configurable dwell time
- JTCAT (FT8/FT4) — built-in FT8/FT4 engine with WSJT-X-parity features: late-start transmit, a-priori (AP) decoding to recover weak/late replies, auto-sequencing, and auto-logging
- SSTV — receive and transmit SSTV images
- FreeDV — digital voice, including RADE
- CW — WinKeyer support and a built-in keyer (CWCat)
- Operate from your phone or browser — full audio, PTT, tuning, and logging from anywhere, served by POTACAT itself
- POTACAT Cloud — one-tap secure remote access with no port-forwarding or Tailscale required (optional subscription); LAN and Tailscale remain free
- Guest Pass — temporarily share your rig with another operator
- ECHOCAT mobile app — companion iOS & Android app for the same remote control
- QSO logging to ADIF — pre-filled log dialog (callsign, freq, mode, RST,
park/summit ref, operator), appended to a local
.adi - Logbook forwarding — Log4OM 2 (UDP), DXKeeper/DXLab (TCP), N1MM+ (UDP)
- Parks Worked — import your POTA CSV; new parks get a "NEW" badge
- DXCC Tracker — import an ADIF log for a band/mode confirmation matrix
- QRZ lookup — operator names in the table and log dialog; click a callsign to open their QRZ page
- Dark theme (optional light mode), custom frameless titlebar
- Solar/propagation panel (SFI, A/K-index, band conditions)
- Desktop notifications for watchlist hits
- Auto-update from GitHub Releases with an in-app banner
Requires Node.js 22+.
git clone https://github.com/Waffleslop/POTACAT.git
cd POTACAT
npm install
npm run build-natives # compile the FT8 / JS8 / FreeDV native decoders
npm startbuild-natives needs a C/C++ toolchain: Xcode Command Line Tools on macOS,
Visual Studio Build Tools on Windows, build-essential on Linux. Skipping it
still runs, but FT8 falls back to a slower WASM decoder with fewer features
and JS8/FreeDV are unavailable.
npm run dist:win # Windows: installer + portable
npm run dist:mac # macOS: .dmg (run on a Mac)
npm run dist:linux # Linux: AppImage + .deb + .rpmOutputs land in dist/. electron-builder produces x86-64 and arm64 artifacts
per the targets in package.json. The dist commands refuse to package until
npm run build-natives has been run (a build without the native decoders
ships a broken JS8 and a degraded FT8); set POTACAT_SKIP_NATIVE_CHECK=1 to
override.
Run POTACAT without a GUI to serve only the ECHOCAT remote interface — ideal for a Raspberry Pi at the radio:
npm start -- --headlessCAT control, spots, the FT8 engine, the CW keyer, and ECHOCAT all work headless.
- Website: potacat.com
- Discord: potacat.com/discord
- Support: potacat.com/support
- Issues: GitHub Issues
POTACAT is licensed under the GNU General Public License v3.0
(or any later version), because it incorporates the JS8 modem from the
JS8Call project.
Files written for POTACAT carry an SPDX-License-Identifier: Apache-2.0
header and are additionally available under the
Apache License 2.0 from the copyright holder;
the combined work you download is GPLv3. See NOTICE.
"POTACAT" and "ECHOCAT" are trademarks of Casey Stanton. The license covers the source code, not the names — see TRADEMARKS.md. If you fork and redistribute a modified build, please give it a different name.
ECHOCAT mobile is a separate, independent program that talks to POTACAT over a documented network protocol and contains no GPL code.
The JS8 modem is compiled in from JS8Call-improved (GPLv3), vendored under
third_party/js8call/. Some other GPL tools ship as
separate executables invoked over a process boundary. See
NOTICE for the full list.
- Hamlib
rigctldfor radio control — GPLv2; source at github.com/Hamlib/Hamlib. wsprdWSPR decoder (K1JT/K9AN, WSJT Development Group) — GPLv3; bundled as a standalone binary, not linked. Seethird_party/wsprd/.
POTACAT Cloud's optional tunnel uses Cloudflare's cloudflared.
