- macOS (Apple Silicon tested) or Linux
- Homebrew on macOS
- A HackRF One plugged directly into the host (USB passthrough does not work in macOS Docker)
git clone https://github.com/clorth0/aetherscope.git
cd aetherscope
./deploy/install.shThe installer:
- Installs the Homebrew SDR stack (
hackrf,librtlsdr,soapysdr,soapyhackrf,soapyrtlsdr) - Rebuilds
rtl_433from source if the bottle lacked SoapySDR (needed to drive the HackRF) - Builds
readsb-hackrffromwiedehopf/readsbwithHACKRF=yesinto~/.local/bin/ - Installs
uvif missing - Runs
uv syncto install the Python dependencies
Foreground (Ctrl-C to stop):
uv run aetherscopeThen open http://127.0.0.1:8765/.
Auto-start on login, restart on crash:
./deploy/install-launchd.shUseful commands:
launchctl print gui/$(id -u)/local.aetherscope # status, pid, last exit
launchctl kickstart -k gui/$(id -u)/local.aetherscope # restart
launchctl kill SIGTERM gui/$(id -u)/local.aetherscope # stop (auto-respawns)
launchctl bootout gui/$(id -u)/local.aetherscope # disable / unload
tail -f ~/Library/Logs/aetherscope/stderr.logOverride the service label with AETHERSCOPE_LABEL if you have a naming convention.
./deploy/restart.sh # uv sync + restart the launchd service, then verifyUSB passthrough works on Linux, so a container is an option. See deployment.md.