MCPcopy Index your code
hub / github.com/PentHertz/RF-Swift

github.com/PentHertz/RF-Swift @v2.2.5

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.2.5 ↗ · + Follow
599 symbols 1,683 edges 60 files 527 documented · 88%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🚀 RF Swift 📡

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

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

✨ 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_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];
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/

🌟 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:

Extension points exported contracts — how you extend this code

ContainerEngine (Interface)
ContainerEngine defines the interface that both Docker and Podman implement. Since Podman exposes a Docker-compatible AP [3 …
go/rfswift/dock/engine.go

Core symbols most depended-on inside this repo

add
called by 59
go/rfswift/dock/doctor.go
Render
called by 42
go/rfswift/tui/progress.go
NewEngineClient
called by 42
go/rfswift/dock/engine.go
Name
called by 40
go/rfswift/dock/engine.go
GetEngine
called by 39
go/rfswift/dock/engine.go
Type
called by 27
go/rfswift/dock/engine.go
newInput
called by 23
go/rfswift/tui/styles.go
valueOrNone
called by 20
go/rfswift/tui/wizard.go

Shape

Function 470
Method 74
Struct 48
TypeAlias 6
Interface 1

Languages

Go100%

Modules by API surface

go/rfswift/rfutils/hostcli.go44 symbols
go/rfswift/dock/helpers.go40 symbols
go/rfswift/dock/dockerhub.go35 symbols
go/rfswift/dock/setters.go31 symbols
go/rfswift/dock/network.go29 symbols
go/rfswift/dock/engine.go29 symbols
go/rfswift/dock/engine_lima.go26 symbols
go/rfswift/dock/engine_podman.go25 symbols
go/rfswift/dock/container.go24 symbols
go/rfswift/dock/properties.go23 symbols
go/rfswift/rfutils/hostcli_mac.go19 symbols
go/rfswift/dock/doctor.go18 symbols

For agents

$ claude mcp add RF-Swift \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page