๐ RF Swift ๐ก
August 1, 2026 ยท View on GitHub
https://github.com/user-attachments/assets/518c5045-4380-48d0-a731-6ec0273a02c5
๐ What is RF Swift?
RF Swift builds you a complete hardware and RF security lab in seconds โ on the machine you already use. ๐ From a ham shack on a Sunday afternoon to a full James Bond-grade engagement on Monday morning: same tool, different image.
Unlike traditional approaches that force you to sacrifice your primary OS, RF Swift brings 200+ containerized RF, hardware and security tools to your existing environment โ on Linux, Windows and macOS, across x86_64, ARM64 and RISC-V64. ๐
๐ v3.0.0 "Resonance" โ images rebased on Ubuntu 26.04 "Resolute", CLI rebuilt on the new Moby SDK, and new
ad,androidandosintimages for full engagements. See What's new in v3.0.0.
โก Why RF Swift Outperforms Dedicated OS Solutions
| 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 |
๐ What's new in v3.0.0 "Resonance"
๐ฆ New base: Ubuntu Noble โ Resolute (26.04)
Every official image (penthertz/rfswift_resolute:*) now runs on Ubuntu 26.04. This was the heaviest part of the release: GCC 15 promoted long-tolerated K&R C patterns to hard errors, CMake 4 dropped compatibility with cmake_minimum_required(VERSION < 3.5), Boost 1.90 removed the io_context APIs much of the SDR ecosystem depends on, and Python 3.14 / Java 25 became the defaults.
Rather than pinning an old base, we patched the software and maintain the forks publicly, so 50+ GNU Radio out-of-tree modules build on a current LTS again:
gr-osmosdr ยท gr-gsm ยท gr-fosphor ยท gr-dvbs2 ยท gr-nordic ยท gr-grnet ยท gr-pdu_utils ยท gr-sandia_utils ยท gr-fhss_utils ยท gr-timing_utils ยท srsRAN 4G ยท YATE ยท OpenBTS ยท OpenBTS-UMTS
OpenBTS and OpenBTS-UMTS are legacy C++ that GCC 15 rejects outright; both are maintained on the resolute branches of our forks.
๐ก Telecom: 5G SA now runs on OCUDU
The 5G SA stack shipped in the telecom images has moved from srsRAN Project to OCUDU as the CU/DU stack. srsRAN 4G (and the 4G/5G-NSA path) still ships from our patched srsRAN_4G_resolute fork, so 2G through 5G remains one pull.
โก GNU Radio 4, testable in seconds
Want to try GNU Radio 4 without building it from source or risking your working 3.10 install? There's now a dedicated image โ your existing setup stays untouched:
rfswift run -i penthertz/rfswift_resolute:sdr_gnuradio4
โ๏ธ Rebuilt CLI
- Container operations moved from the legacy Docker Go client to the new Moby SDK (
moby/moby/api+moby/moby/client) - Full Go dependency tree brought up to date
- Dependabot, a module-audit workflow and security scanning in CI
- Signed build attestations published with every release
๐งฐ New images for full engagements
| Image | What it covers |
|---|---|
๐ ad | Active Directory assessments |
๐ฑ android | Mobile app testing and instrumentation |
๐ต๏ธ osint | Open-source intelligence and recon |
โก sdr_gnuradio4 | GNU Radio 4, ready to run (see above) |
Plus new tooling inside the existing images โ SAST/DAST in reversing (Semgrep, Joern, cppcheck, honggfuzz, clang static analyzer, Trivy), grimoire in the shell harness, and WhisperPair (CVE-2025-36911) and caeruleus on the RF/Bluetooth side.
โจ Key Features
Core Capabilities
- ๐ Non-disruptive Integration: Run specialized RF tools while continuing to use your preferred OS for daily work
- ๐งฉ Modular Tool Selection: Deploy only the tools you need, when you need them
- ๐ก๏ธ Containerized Isolation: Prevent RF tools from affecting system stability or security
- ๐ Cross-platform Compatibility: Works seamlessly on Linux, Windows, and macOS
- ๐ Dynamic Hardware Integration: Connect and disconnect USB devices, ports, capabilities, and resources without recreating containers
- ๐ NAT Networking: Isolated container networks with configurable subnets for multi-container RF lab setups
- ๐ Container Profiles: YAML presets for quick deployment of preconfigured container environments
- โก GPU Acceleration: Dedicated images with OpenCL support for Intel and NVIDIA GPUs
- ๐พ Space Efficiency: Use a fraction of the disk space required by dedicated OS solutions
๐ณ๐ฆญ Container Engine Support
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 |
Auto-detection
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_resolute:sdr_light
rfswift --engine docker run -n mycontainer -i penthertz/rfswift_resolute:sdr_light
rfswift --engine lima run -n mycontainer -i penthertz/rfswift_resolute:sdr_light # macOS USB
Podman support example
https://github.com/user-attachments/assets/14b6d50f-5250-420e-94e4-474991113372
Podman Highlights
-
Rootless containers: No daemon, no root - ideal for locked-down environments and shared lab machines
-
OCI-compatible images: All existing RF Swift images work out of the box with Podman
-
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
๐ฆ macOS USB Passthrough (Lima)
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 QEMU + official Lima (USB passthrough works via the VM's video.display)
brew install qemu lima
# 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_resolute: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.
๐ฎ GPU acceleration on Apple Silicon (opt-in)
On Apple Silicon, USB passthrough and GPU acceleration need different VM backends and cannot coexist in one VM. The Lima VM above uses QEMU for USB/SDR devices. For GPU compute (e.g. Vulkan-accelerated ML/DSP) there is a separate opt-in profile that uses the krunkit backend (libkrun), which exposes the Apple GPU to containers as a Vulkan device (Mesa Venus -> MoltenVK -> Metal). It is Vulkan, not CUDA, and provides no USB passthrough.
# One-time: install Lima + the krunkit backend
brew install lima
brew tap slp/krunkit && brew install krunkit
# Run a container in the GPU VM (auto-created on first use). --gpu implies --engine lima
# and uses a separate instance (rfswift-gpu), leaving your USB/SDR VM untouched.
rfswift --gpu run -i penthertz/rfswift_resolute:sdr_light -n gpu_work --devices /dev/dri
Use --gpu for GPU compute; use --engine lima (without --gpu) for SDR hardware. Requires macOS โฅ 14 and a guest kernel with virtio-gpu Venus support (Linux โฅ 6.13).
Quick Setup
# 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
Verifying downloads: The installer offers to check each binary's Sigstore-backed build provenance attestation automatically. To verify manually with the GitHub CLI:
gh attestation verify <downloaded.tar.gz> --repo PentHertz/RF-Swift. This proves the artifact was built by the official RF Swift release workflow from a specific commit - not swapped afterwards.
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.
๐ฌ Demo Videos
๐ง On Linux
https://github.com/PentHertz/RF-Swift/assets/715195/bb2ccd96-b688-4106-8fba-d82f84ff1ea4
๐ช On Windows (With GQRX)
https://github.com/PentHertz/RF-Swift/assets/715195/25a4a857-aa5a-4daa-9a08-28fa53d2f799
๐ฅ๏ธ Using OpenCL with Intel or NVIDIA GPU
๐ฆ Available Specialized Images
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];
A-->T[osint];
A-->U[android];
B-->I[sdr_light];
B-->J[bluetooth];
B-->K[telecom_utils];
B-->L[hardware];
H-->M[wifi];
H-->V[ad];
I-->N[sdr_full];
I-->W[sdr_gnuradio4];
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, sdr_gnuradio4 ๐ | GNU Radio (3.10 + a dedicated GNU Radio 4 image), 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, OCUDU ๐ (5G SA CU/DU), Open5GS, UERANSIM, YateBTS, OpenBTS, OpenBTS-UMTS, 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 & SAST | reversing | Ghidra, Radare2, Cutter, ImHex, Binwalk (v2+v3), Unblob, Sasquatch, AFL, Honggfuzz, Kaitai Struct, Qiling, Unicorn/Keystone, plus SAST/DAST: Semgrep, Joern, cppcheck, clang static analyzer, Trivy ๐ |
| ๐ Network | network | Nmap, Wireshark, Metasploit, Burp Suite, Caido, Impacket, NetExec, Responder, Hashcat, John the Ripper, Kismet, Bettercap, SIPVicious, MBTget |
| ๐ Active Directory ๐ | ad | Impacket, NetExec, Responder, BloodHound.py, Certipy, bloodyAD, certsync, mitm6, kerbrute, lsassy, ldapdomaindump, sprayhound, DonPAPI, SharpLAPS, skewrun |
| ๐ฑ Mobile ๐ | android | adb/fastboot, apktool, apksigner, zipalign, smali, scrcpy, dex2jar, Frida, objection, androguard, drozer, MobSF |
| ๐ต๏ธ OSINT ๐ | osint | theHarvester, Sherlock, maigret, holehe, GHunt, toutatis, instaloader, Sublist3r, h8mail, censys, SpiderFoot, recon-ng, FinalRecon |
200+ tools across 18+ 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/
๐ Real-World Use Cases
๐ For Professionals
- ๐งฐ Rapid Assessment Deployment: Deploy a complete RF lab at client sites in minutes
- ๐ Consistent Environments: Eliminate "works on my machine" issues
- โ๏ธ Parallel Testing: Run multiple isolated assessments simultaneously
- ๐น Documentation: Built-in session recording for client reports
- ๐ ๏ธ Custom Toolsets: Create specialized containers for specific engagements
๐ฌ For Researchers
- ๐ Reproducible Research: Share exact tool environments with papers
- ๐งช Experiment Isolation: Keep experimental configurations separate
- ๐ Multi-platform Collaboration: Work across Linux, Windows, and macOS
- ๐ข Version Control: Test with specific tool versions for reproducibility
- โก Resource Optimization: Allocate resources based on research needs
๐จโ๐ซ For Educators
- ๐ซ Classroom Deployment: Identical environments for all students
- ๐ป No OS Reinstall: Students keep their existing operating systems
- ๐ฅ๏ธ Low Requirements: Works on standard lab computers
- ๐ Focused Learning: Custom containers for specific lessons
- ๐ Quick Reset: Easily reset environments between classes
๐ญ For Manufacturing & QA
- ๐ Production Testing: Consistent RF testing environments
- ๐ก Device Validation: Test wireless product compliance
- ๐ง Firmware Analysis: Isolated environments for firmware testing
- ๐ Quality Assurance: Reproducible test configurations
๐ For Security-Conscious Environments
- ๐ฆญ Rootless with Podman: No privileged daemon required - ideal for SOC-compliant and hardened systems
- ๐๏ธ Air-gapped labs: Pre-pull images, deploy without internet using Podman's daemonless architecture
- ๐ก๏ธ Minimal attack surface: No long-running daemon socket to protect
๐ Documentation
Comprehensive documentation is available at rfswift.io, including:
- ๐ Getting Started Guide
- ๐ Quick Start Tutorial
- ๐ User Guide
- ๐ YAML Recipe Guide
- ๐จโ๐ป Development Documentation
- ๐งฐ List of Included Tools
- ๐ก๏ธ Security Guidelines
๐ Training & Workshops
RF Swift is used in professional training courses by Penthertz:
- ๐ป Software Defined Radio assessments
- ๐ฑ Mobile network security testing
- ๐ Automotive security analysis
- ๐ญ IoT and embedded device testing
Contact us for custom training programs.
๐ฅ Community & Support
- ๐ฌ Join our Discord for community support and discussions
- ๐ Report issues on GitHub
- ๐ก Request features via GitHub Discussions
- ๐ฆ Follow us on X (Twitter): @FlUxIuS and @Penthertz
- ๐ง Professional inquiries: penthertz.com
๐ค Contributing
We welcome contributions! Here's how you can help:
Code Contributions
- ๐งฐ Tool Integration: Add new tools or improve existing ones
- ๐ Bug Fixes: Submit PRs to fix reported issues
- โจ New Features: Implement new capabilities
- ๐ Documentation: Improve guides and examples
Community Contributions
- ๐ YAML Recipes: Share your custom image recipes
- ๐ Tutorials: Create guides for specific tools or workflows
- ๐ Bug Reports: Report issues you encounter
- ๐ก Feature Requests: Suggest improvements
Getting Started with Contributing
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
โ๏ธ License
RF Swift is released under the GNU General Public License v3.0. See LICENSE file for details.
๐ Acknowledgments
Special thanks to:
- All contributors and clients who have helped improve RF Swift
- The open-source RF and security tool developers whose work we integrate
- The community for feedback, bug reports, and feature requests
- Conference organizers who have hosted our presentations
