
https://github.com/user-attachments/assets/518c5045-4380-48d0-a731-6ec0273a02c5
RF Swift is a revolutionary toolbox that transforms any computer into a powerful RF testing laboratory without requiring a dedicated operating system. 🔄 Unlike traditional approaches that force you to sacrifice your primary OS, RF Swift brings containerized RF tools to your existing environment. 🏠
| Feature | RF Swift | Dedicated OS |
|---|---|---|
| 🏠 Host OS Preservation | ✅ Keep your existing OS | ❌ Requires dedicated partition or VM |
| 🛡️ Tool Isolation | ✅ Tools contained without system impact | ❌ Tools can destabilize system |
| ⚡ Deployment Speed | ✅ Seconds to deploy | ❌ Hours for full installation |
| 💾 Disk Space | ✅ Only install tools you need | ❌ Requires 20-50GB minimum |
| 🔄 Updates | ✅ Update individual tools without risk | ❌ System-wide updates can break functionality |
| 🌐 Multi-architecture | ✅ x86_64, ARM64, RISCV64 and more! | ❌ Limited architecture support |
| 🔁 Reproducibility | ✅ Identical environments everywhere | ❌ System drift between other installations |
| 💼 Work Environment | ✅ Use alongside productivity tools | ❌ Switch contexts between systems |
| 📹 Session Recording | ✅ Built-in recording for documentation | ❌ Manual setup required |
| 🎨 Easy Customization | ✅ Simple YAML recipes for custom images | ❌ Complex OS modifications |
RF Swift supports both Docker and Podman as container engines, giving you the freedom to choose the runtime that best fits your environment:
| Docker | Podman | Lima | |
|---|---|---|---|
| Architecture | Client-server daemon | Daemonless, fork-exec | Docker inside QEMU VM |
| Root required | Yes (daemon runs as root) | No (rootless by default) | No (VM managed by Lima) |
| USB passthrough | Linux only | Linux only | macOS via QMP hot-plug |
| Best for | Broad ecosystem, Windows/macOS | Security-focused, air-gapped | macOS + USB RF hardware |
RF Swift automatically detects the available container engine at startup. If both are installed, Docker is used by default. Override with:
rfswift --engine podman run -n mycontainer -i penthertz/rfswift_noble:sdr_light
rfswift --engine docker run -n mycontainer -i penthertz/rfswift_noble:sdr_light
rfswift --engine lima run -n mycontainer -i penthertz/rfswift_noble:sdr_light # macOS USB
https://github.com/user-attachments/assets/14b6d50f-5250-420e-94e4-474991113372
Seamless device passthrough: USB SDR dongles, serial adapters, and GPUs work with both engines
Automatic cgroup handling: RF Swift detects cgroup v1/v2 and configures device access rules accordingly
Docker Desktop and Podman on macOS cannot forward USB devices (SDR dongles, HackRF, RTL-SDR, etc.) into containers. RF Swift solves this with Lima, which runs a QEMU VM with USB hot-plug support:
# Install Lima (PentHertz fork with USB passthrough support) + QEMU
brew install qemu
curl -fsSL https://github.com/PentHertz/lima/releases/download/v2.1.1/lima-2.1.1-Darwin-$(uname -m).tar.gz -o /tmp/lima.tar.gz
sudo tar xz -C /usr/local -f /tmp/lima.tar.gz
# Attach your SDR dongle to the Lima VM
rfswift macusb list # see host USB devices
rfswift macusb attach --vid 0x1d50 --pid 0x604b # forward HackRF to VM
# Run container via Lima's Docker (where USB device lives)
rfswift --engine lima run -i penthertz/rfswift_noble:sdr_light -n sdr_work
# When done, detach
rfswift macusb detach --vid 0x1d50 --pid 0x604b
Lima auto-creates the VM on first use with Docker, USB libraries, kernel modules, and udev rules for all supported RF hardware pre-configured. Use --engine lima when you need USB devices; use Docker Desktop normally for everything else.
# Install with the interactive installer (offers Docker, Podman, or both)
curl -fsSL "https://raw.githubusercontent.com/PentHertz/RF-Swift/refs/heads/main/scripts/get_rfswift.sh" | sh
# Or install Podman manually
sudo apt install podman # Debian/Ubuntu
sudo dnf install podman # Fedora/RHEL
sudo pacman -S podman # Arch Linux
brew install podman # macOS
Note: When using Podman in rootless mode, some operations (like direct device passthrough) may require additional configuration. RF Swift handles most of this automatically, but see the documentation for details.
https://github.com/PentHertz/RF-Swift/assets/715195/bb2ccd96-b688-4106-8fba-d82f84ff1ea4
https://github.com/PentHertz/RF-Swift/assets/715195/25a4a857-aa5a-4daa-9a08-28fa53d2f799
RF Swift's container approach allows for specialized environments optimized for specific tasks. All images are OCI-compatible and work with both Docker and Podman.
graph TD;
A[corebuild]-->B[sdrsa_devices];
A-->C[rfid];
A-->D[automotive];
A-->E[reversing];
A-->H[network];
B-->I[sdr_light];
B-->J[bluetooth];
B-->K[telecom_utils];
B-->L[hardware];
H-->M[wifi];
I-->N[sdr_full];
K-->P[telecom_2Gto3G];
K-->Q[telecom_4G_5GNSA];
K-->R[telecom_4Gto5G];
K-->S[telecom_5G];
| Category | Images | Key Tools |
|---|---|---|
| 📻 SDR | sdr_light, sdr_full |
GNU Radio, GQRX, SDR++, SDRangel, SigDigger, CyberEther, Inspectrum, URH, rtl_433, dump1090, GNSS-SDR, SatDump, Jupyter + 50+ GNU Radio OOT modules (gr-gsm, gr-lora, gr-satellites, gr-ieee802-11, gr-droneid, gr-tempest, …) |
| 📡 SDR Devices | sdrsa_devices |
Drivers for USRP (UHD), RTL-SDR, HackRF, BladeRF, Airspy, LimeSDR, PlutoSDR, XTRX, RFNM, HydraSDR, LiteX M2SDR, SignalHound, Harogic, LibreSDR, SoapySDR |
| 📱 Telecom | telecom_utils, telecom_2Gto3G, telecom_4G_5GNSA, telecom_4Gto5G, telecom_5G |
PySIM, pycrate, srsRAN 4G/5G, Open5GS, UERANSIM, YateBTS, OpenBTS, OsmoCom BTS Suite, SigPloit, PyHSS, SCAT, jSS7, 5Greplay |
| 📶 Bluetooth | bluetooth |
BlueZ, WHAD, Mirage, Sniffle, Bluing, bdaddr, ice9-bluetooth, esp32 BT Classic sniffer |
| 📡 Wi-Fi | wifi |
Aircrack-ng, hcxdumptool, Reaver, Bully, Pixiewps, EAPHammer, Airgeddon, Wifite2, WPA3 attack suite (Dragonslayer/Dragonforce/Wacker), Hostapd-mana, Wifiphisher |
| 🏷️ RFID | rfid |
Proxmark3 (RRG/Iceman), libnfc, mfoc, mfcuk, RFIDler, miLazyCracker |
| 🚗 Automotive | automotive |
can-utils, CANtact, Caring Caribou, SavvyCAN, Gallia, V2GInjector |
| 🔧 Hardware | hardware |
PulseView, DSView, Logic 2 (Saleae), Arduino IDE, Flashrom, OpenOCD, esptool, openFPGALoader, MTKClient, ngscopeclient, dfu-util, SeerGDB, AVRDUDE |
| 🔍 Reversing | reversing |
Ghidra, Radare2, Cutter, ImHex, Binwalk (v2+v3), Unblob, AFL, Honggfuzz, Semgrep, Joern, Kaitai Struct, Qiling, Unicorn/Keystone |
| 🌐 Network | network |
Nmap, Wireshark, Metasploit, Burp Suite, Caido, Impacket, NetExec, Responder, Hashcat, John the Ripper, Kismet, Bettercap, SIPVicious, MBTget |
200+ tools across 15+ images, all on x86_64, ARM64, and RISC-V64.
Full image list with detailed tool inventory available at rfswift.io/docs/guide/list-of-tools/
Comprehensive documentation is available at rfswift.io, including:
$ claude mcp add RF-Swift \
-- python -m otcore.mcp_server <graph>