๐Ÿš€ RF Swift ๐Ÿ“ก

April 10, 2026 ยท View on GitHub

RF Swift logo

linux supported windows supported macOS supported
amd64 arm64 riscv64

Docker Podman

Black Hat Europe 2024 Spectrum 24 FOSDEM 2025 CyberOnBoard PraSec

Twitter FlUxIuS Twitter Penthertz

Join us on Discord

https://github.com/user-attachments/assets/518c5045-4380-48d0-a731-6ec0273a02c5

๐Ÿ” What is RF Swift?

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. ๐Ÿ 

โšก Why RF Swift Outperforms Dedicated OS Solutions

FeatureRF SwiftDedicated 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

โœจ 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:

DockerPodmanLima
ArchitectureClient-server daemonDaemonless, fork-execDocker inside QEMU VM
Root requiredYes (daemon runs as root)No (rootless by default)No (VM managed by Lima)
USB passthroughLinux onlyLinux onlymacOS via QMP hot-plug
Best forBroad ecosystem, Windows/macOSSecurity-focused, air-gappedmacOS + 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_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

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 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.

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

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

OpenCL recipe in action

๐Ÿ“ฆ 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];
    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];
CategoryImagesKey Tools
๐Ÿ“ป SDRsdr_light, sdr_fullGNU 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 Devicessdrsa_devicesDrivers for USRP (UHD), RTL-SDR, HackRF, BladeRF, Airspy, LimeSDR, PlutoSDR, XTRX, RFNM, HydraSDR, LiteX M2SDR, SignalHound, Harogic, LibreSDR, SoapySDR
๐Ÿ“ฑ Telecomtelecom_utils, telecom_2Gto3G, telecom_4G_5GNSA, telecom_4Gto5G, telecom_5GPySIM, pycrate, srsRAN 4G/5G, Open5GS, UERANSIM, YateBTS, OpenBTS, OsmoCom BTS Suite, SigPloit, PyHSS, SCAT, jSS7, 5Greplay
๐Ÿ“ถ BluetoothbluetoothBlueZ, WHAD, Mirage, Sniffle, Bluing, bdaddr, ice9-bluetooth, esp32 BT Classic sniffer
๐Ÿ“ก Wi-FiwifiAircrack-ng, hcxdumptool, Reaver, Bully, Pixiewps, EAPHammer, Airgeddon, Wifite2, WPA3 attack suite (Dragonslayer/Dragonforce/Wacker), Hostapd-mana, Wifiphisher
๐Ÿท๏ธ RFIDrfidProxmark3 (RRG/Iceman), libnfc, mfoc, mfcuk, RFIDler, miLazyCracker
๐Ÿš— Automotiveautomotivecan-utils, CANtact, Caring Caribou, SavvyCAN, Gallia, V2GInjector
๐Ÿ”ง HardwarehardwarePulseView, DSView, Logic 2 (Saleae), Arduino IDE, Flashrom, OpenOCD, esptool, openFPGALoader, MTKClient, ngscopeclient, dfu-util, SeerGDB, AVRDUDE
๐Ÿ” ReversingreversingGhidra, Radare2, Cutter, ImHex, Binwalk (v2+v3), Unblob, AFL, Honggfuzz, Semgrep, Joern, Kaitai Struct, Qiling, Unicorn/Keystone
๐ŸŒ NetworknetworkNmap, 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/

๐ŸŒŸ 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:

๐ŸŽ“ 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

๐Ÿค 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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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