Eight live spot sources on one screen, one-click CAT tuning β then hand the whole station to your phone.
Hunt POTA, SOTA and DX from the desk. Work SSB, CW, FT8 and SSTV from the car, the hotel, or the trailhead.
Free and open source Β· Windows Β· macOS Β· Linux Β· 200+ radios Β· No subscription, ever
β‘ No account, no API keys, no port forwarding. Install it, pick your radio, click a spot. β Install
"I want you to know I love this platform. It is the most awesome POTA platform I have seen." β K5MUL, POTACAT Discord
Install Β· First Five Minutes Β· What's Inside Β· ECHOCAT Β· Share My Rig Β· POTACAT Cloud Β· Build from Source Β· Community
Website Β· Docs Β· Discord Β· Support Β· Buy me a coffee
Chasing an activation used to mean three browser tabs, a cluster window, and a hand on the VFO knob. By the time you'd read the spot, typed the frequency, and picked the right sideband, the pileup had moved on.
POTACAT collapses all of that into one row and one click. Every major activity network β POTA, SOTA, GMA, the DX cluster, RBN, WSJT-X β lands in the same table, de-duplicated and filtered down to the bands you can actually work. Click the row and the radio is already there: frequency, mode, CW offset, and a log entry pre-filled with the park reference.
Then it keeps going. The same app that drives your rig serves it to your phone, so the station doesn't stop working when you leave the house.
Half of it is a spot aggregator that happens to control your radio. The other half is your entire shack, on a screen the size of your hand.
Works with FlexRadio, Icom, Yaesu, Kenwood, Elecraft, QRP Labs β and 200+ more rigs via Hamlib. Written by Casey, K3SBP, shaped every week by the operators who use it, and shipped most weeks.
Grab the current build from the Releases page. Every release ships Windows, macOS and Linux binaries in both Intel/AMD (x86-64) and ARM (arm64/aarch64) flavours.
| Platform | Architecture | Download |
|---|---|---|
| Windows 10/11 | 64-bit Intel/AMD | POTACAT-Setup-<ver>.exe β installer (recommended) |
| Windows 10/11 | 64-bit Intel/AMD | POTACAT-Portable-<ver>.exe β no install, run from anywhere |
| macOS β Apple Silicon (M1β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 Β· potacat-<ver>.x86_64.rpm |
| Linux β Raspberry Pi 4/5, ARM SBC | arm64 | POTACAT-<ver>-arm64.AppImage Β· potacat_<ver>_arm64.deb Β· potacat-<ver>.aarch64.rpm |
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" is arm64; "Intel" is x86-64.
- Linux β run
uname -m.x86_64takes the amd64 build,aarch64the arm64 one.
The *-mac.zip and latest*.yml files on the Releases page are what the in-app auto-updater
fetches. You don't need to download them.
POTACAT isn't code-signed yet, so the first launch takes one extra click on Windows and macOS. That's normal for an independent app and doesn't mean anything is wrong β signing is on the roadmap, and these steps go away with it.
- Download
POTACAT-Setup-<ver>.exeand run it. - If you see "Windows protected your PC" β click More info β Run anyway.
- If the installer won't start at all β right-click the
.exeβ Properties β tick Unblock β OK, then run it again.
Prefer not to install? POTACAT-Portable-<ver>.exe runs straight from your downloads folder.
Settings live in the same place either way. More Windows detail in INSTALL.md.
-
Download the
.dmgfor your chip β-arm64.dmgfor Apple Silicon, plain.dmgfor Intel. -
Open it and drag POTACAT into Applications.
-
Apple Silicon Macs will say "POTACAT is damaged and can't be opened." It isn't damaged β that's what macOS says about any app built without a paid Apple Developer ID. Open Terminal and paste this once:
sudo xattr -dr com.apple.quarantine /Applications/POTACAT.app
Enter your Mac password, then open POTACAT normally. On Intel Macs, right-click β Open β Open is usually enough.
Pick one format. AppImage is the most portable; .deb and .rpm integrate with your package
manager and ship an AppArmor profile so the full Chromium sandbox stays on.
# AppImage β any distro
chmod +x POTACAT-<ver>.AppImage && ./POTACAT-<ver>.AppImage
# Debian / Ubuntu
sudo apt install ./potacat_<ver>_amd64.deb # or _arm64.deb on a Pi
# Fedora / RHEL / openSUSE
sudo dnf install ./potacat-<ver>.x86_64.rpm # or .aarch64.rpm on a PiSerial ports and the sandbox β two things worth doing up front
Serial permissions. If POTACAT can't see your radio's serial port, add yourself to the
dialout group and log out and back in:
sudo usermod -aG dialout $USERSandbox. On hardened or very new distros, Chromium's sandbox needs unprivileged user
namespaces. POTACAT detects that and falls back on its own. If an AppImage still refuses to
start, run it with --no-sandbox.
1. Connect your rig. Settings β My Rigs β pick a connection type:
| Your radio | Connection type |
|---|---|
| FlexRadio 6000 / 8000 | SmartSDR CAT β auto-discovers on your LAN |
| Icom IC-7300, Elecraft KX2/KX3, Yaesu FT-891, most others | Hamlib β 200+ models |
| QRP Labs QMX / QDX, Win4Yaesu | Serial CAT (Kenwood protocol) β pick the port and baud |
IC-705, IC-9700, IC-7610, or wfview's wfserver |
Icom Network β CI-V over IP |
Per-radio walkthroughs with known-working settings are in the rig setup guides.
2. Set your grid square. Settings β your Maidenhead grid, e.g. FN20jb. Distances, the map,
and the great-circle arc all key off it.
3. Pick your spot sources. Start with POTA, SOTA and DX Cluster from the toolbar; add RBN, WSJT-X or SSTV as you need them.
4. Click a spot. The rig moves β frequency, mode, CW offset β and the log dialog opens pre-filled with the callsign, park or summit reference, and operator name.
5. Take it with you. On your home Wi-Fi, open ECHOCAT on your phone, tap your desktop, and click Approve. That's the entire pairing flow. Leave the house and the station comes along.
"POTACAT shines in its ability to make hunting easy, whether that's POTA, SOTA, DX or others." β K8IKO
- π‘ Eight spot sources, one table. POTA, SOTA, GMA, DX Cluster, RBN, WSJT-X, PSKReporter and a DXpedition feed β merged, de-duplicated, and filtered by band, mode, distance and what you still need. Hide worked parks; hide anything outside your license privileges.
- π― One-click QSY. Click a spot and the rig tunes β frequency, mode and CW offset. FlexRadio native, Hamlib, or direct serial.
- πΊοΈ Table, map and split views. Sortable, resizable table; Leaflet map with per-source marker colours, day/night terminator, and a pop-out window driven by the same filters.
- π» Flex Direct. POTACAT drives a FlexRadio all by itself β tune, listen and key CW with no SmartSDR running. An SWR guard aborts TX into a bad match before your finals notice.
- π FT8 built in. JTCAT runs FT8 and FT4 with auto-sequencing, a-priori decoding and clock-sync checks. Spot Target is the fun part: click a callsign anywhere in the app and JTCAT works them for you.
- π¬ JS8 mailbox. Keyboard-to-keyboard when you're at the desk; a message drop that quietly
collects
@ALLCALLand directed traffic when you're not. - π WSPR beacon & footprint. Run a 1-watt beacon overnight, hop bands on a schedule, and wake up to a map of every receiver that actually heard you β then spend your real operating time on the band that was working.
- πΌοΈ More digital modes. SSTV send and receive, PSK31 with a live keyboard, FreeDV (including RADE), and the Mercury HF data modem for chat and file transfer. No extra software to babysit.
- π Logs everywhere you do. Local ADIF always, forwarded live to Log4OM, DXKeeper, Ham Radio Deluxe, N3FJP and Wavelog, with Cloud sync across your devices. Import a POTA CSV for "NEW park" badges, or an ADIF log for a DXCC band/mode matrix.
- π₯ Multi-operator. Shared shack? Each operator gets their own callsign, logbook, macros and watchlist on one install. Ctrl-click several spots to log a multi-op activation in one go.
- π Contest & event aware. 13 Colonies, WRTC, America 250 β event checklists and banners show up on their own, tick themselves off as you log, and sync to your phone.
- π Rotators, propagation, alerts. Rotor-EZ / RotorCard / DCU-1 control, a solar and band conditions panel, watchlist desktop notifications, and a scan mode that steps through filtered spots on a dwell timer.
If you already stare at a waterfall all day, the spot table shouldn't be somewhere else on the screen. Every spot POTACAT is tracking gets pushed onto the scope as a labelled marker sitting on the actual frequency β you watch the band the way you already do, and the callsigns are simply there, on the signals, updating as the feeds do. Click one and POTACAT does the rest.
Works with SmartSDR (FlexRadio 6000/8000), AetherSDR, Thetis for ANAN / Apache Labs / Hermes-Lite over TCI β or your rig's own built-in panadapter.
"AetherSDR and POTACAT is going to be a game changer. It's exciting times to be a Flex user." β N5ZC
Not a rented station with a queue β your rig, your antenna, your logbook, in your pocket. Pair your phone to POTACAT once and the station follows you everywhere.
- ποΈ SSB. Real-time two-way audio over WebRTC with a hold-to-talk PTT, plus pre-recorded voice macros for when you'd rather not narrate the parking lot.
- β¨οΈ CW. Plug a paddle into your phone and call CQ through your home station β real-time keying with local sidetone, so it feels like sitting at the desk. Works with TinyMIDI, HaliKey MIDI, Vail Adapter and VBand. One-tap macros handle the exchange when one hand needs to stay on the wheel.
- πΆ FT8 / FT4. Tap a spot, let auto-sequencing run the exchange, and log a new entity before you turn out the lights. Your shack PC does the decoding; your thumb does the DXing.
- πΌοΈ SSTV. Snap a photo, drop your callsign on it with a template, and send it out over HF from wherever you are. Receive works too β watch images paint in line by line.
- π¬ JS8 and WSPR. Read the mailbox from the passenger seat; check overnight beacon spots with your coffee.
"I'm sitting in my hotel in Boston, connected to my rig in Upstate NY, and just worked a station in Hungaryβ¦ it's like magic." β KD2TJU
"Sitting here in a parking lot waiting on my kid to finish practice. I got a POTA, three different W1AWs, Uruguay, and Mexico on remote CWβ¦ This project is amazing." β AA6C
"I operated for a week from family & friends' homes and hotels. Stations I regularly talk to said they couldn't tell I was working remote on SSB." β KQ4QWH
Prefer a browser? The web client built into POTACAT is free and does most of the same job over your LAN or Tailscale.
No radio yet? Listen to SDR receivers across the globe in ECHOCAT Web β no install, no account, just sdr.potacat.com.
Your shack computer is the station. Everything else is a remote.
βββΆ Your phone β ECHOCAT
β SSB Β· CW Β· FT8 Β· SSTV
Your radio ββcable or IPβββΆ Shack computer βββββΌββΆ Your laptop at the office
any of 200+ rigs running POTACAT β POTACAT as a client
βββΆ Your buddy's phone or tablet
via a Share My Rig guest pass
Everything connects back to POTACAT β over your LAN, your Tailscale network, or the POTACAT Cloud
Tunnel at yourcall.potacat.com, whichever reaches home first. No port forwarding, no static IP,
no monthly fee.
Lend your station, not your keys. A Guest Pass lets a friend β or a ham with no radio at all β operate your station for a window you control. Email them a link; that's the whole setup.
- β Privilege-aware. Pick their license class and POTACAT enforces the band edges for them.
- β Power-capped and time-boxed. Set a max TX power and an expiry from 1 hour to 30 days. Revoke any pass instantly.
- β Legal by design. Station, operator and control-op callsigns are recorded per Β§97.119, and guest QSOs log to their logbook.
"My father-in-law in assisted living isn't doing his physical therapy like he's supposed to, so I'm going over the next few weeks to work with him β and his reward is getting on the air." β W7RTA, POTACAT Discord
"Being able to limit their TX power is fantastic!!!" β KB2UXB
Behind a CGNAT? We punch through.
Plenty of hams set everything up correctly and still can't reach the shack from the road. Usually it isn't the router β it's Carrier-Grade NAT, what an ISP does when it runs out of IPv4 addresses. Outbound traffic works fine, which is why you never notice, but nothing on the internet can start a connection back to you. Port forwarding does nothing, because the block sits a layer above your router, on hardware you don't control. It's the default on most cellular home internet and Starlink, and increasingly common on fixed wireless and rural fibre.
How to tell in about thirty seconds
- Open your router's status page and read its WAN IP. Then search "what is my IP" in a browser. If the two don't match, you're behind a CGNAT.
- If that WAN address starts with
100.64through100.127, that's the range reserved for exactly this β a dead giveaway. - You forwarded a port, double-checked it, and an outside port checker still reports it closed.
- Your ISP offers a static or public IP as a paid add-on. That offer exists because the default isn't one.
POTACAT Cloud gives both ends an outbound-only path to an encrypted relay and meets them in the middle β no ports opened at either end. POTACAT tries a direct connection first and only falls back to the relay when the network refuses. You don't choose, and you don't configure anything.
$5/month, entirely optional. Memberships run through Buy Me a Coffee, so that's where the link lands β cancel any time, from their side, without asking us. The desktop app stays free and unsubscribed; LAN and Tailscale remain free. Cloud is only for operators whose network won't let them home.
POTACAT is open source, telemetry included β clone it, audit it, fork it. Requires Git and Node.js 22+.
git clone https://github.com/Waffleslop/POTACAT.git
cd POTACAT
npm install
npm run build-natives # FT8 / JS8 / FreeDV native decoders
npm startOn Linux, install the build dependencies first:
sudo apt install build-essential python3 libudev-dev cmake libhamlib-utilsbuild-natives needs a C/C++ toolchain β Xcode Command Line Tools on macOS, Visual Studio Build
Tools on Windows. Skipping it still runs, but FT8 falls back to a slower WASM decoder with fewer
features, and JS8 and FreeDV are unavailable.
To package installers:
npm run dist:win # installer + portable
npm run dist:mac # .dmg (run this on a Mac)
npm run dist:linux # AppImage + .deb + .rpmOutput lands in dist/. The dist:* scripts refuse to package until build-natives has run β a
build without the native decoders ships a broken JS8 and a degraded FT8. Set
POTACAT_SKIP_NATIVE_CHECK=1 if you really mean to override that.
Patches welcome β see CONTRIBUTING.md.
Run POTACAT with no GUI to serve only the remote interface β ideal for a Pi sitting next to the radio:
npm start -- --headlessCAT control, spots, the FT8 engine, the CW keyer and ECHOCAT all work headless.
|
Learn Morse code the way it's meant to be heard. An instant character recognition trainer for iOS and Android: characters at full speed from day one, answers keyed on your own paddle, and a Space Invaders clone you play by ear. Free. |
An activation planner for finding the parks and summits worth your Saturday β what's near you, what's never been activated, and where the gaps in the map are. |
Setup help, feature requests and bug reports all happen on Discord, where the developer answers in person. Release notes name the operators who reported each issue β read the changelog and judge the pace yourself.
| π¬ Discord | potacat.com/discord |
| π Documentation | potacat.com/docs |
| π Support & FAQ | potacat.com/support.html |
| π» Rig setup guides | potacat.com/radios.html |
| π Bug reports | GitHub Issues |
| π Changelog | Releases |
| β Support development | potacat.com/coffee |
Your data stays yours. Logs live in a local ADIF file on your machine. Telemetry is opt-in, anonymous, and published publicly β what you see there is everything that gets collected. Full privacy policy and terms.
"I'd been wondering whether this could be integrated into POTACAT β and a few days later you release that feature. Amazing." β DA2PK
"I love this stuff! 77 years old in ABQ, NM." β N2GJ
POTACAT is licensed under the GNU General Public License v3.0 or later, because it
incorporates the JS8 modem from
JS8Call-improved. 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.
Third-party software
The JS8 modem is compiled in from JS8Call-improved (GPLv3), vendored under
third_party/js8call/. 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.
β¬ Download POTACAT Β· Join the Discord Β· Buy me a coffee
"Just worked pota station in alaska over the northpole now. found him tnx to potacat π" β LB3AG
73, Casey K3SBP Β· Built for the ham radio community
/\_/\ meow /\_/\




