Releases: PentHertz/RF-Swift
v2.2.5
v2.2.4
v2.2.3
v2.2.2
Changelog
- a34d87c Adding GPU caps
- 8c98ff9 Cleaning binaries
- 46ccc05 Fixing all the device map path on macOS
- f4ea07f Fixing macOS running profile issues with missing devices mapping
- 8dba2c6 Fixing static version
- 553ef49 Forcing the check on the manifest before creating a new image for "capabilities" and "realtime" features
- c4a586b Updating version
- 8de1ec1 Updating version in the installation script
- 6ea863d updating version for dev revision
v2.2.1-dev
Changelog
- a44b3bd Adding VM Lima management features + fixing bugs on macOS TUI
- 4255b02 Fixing Lima automation for macOS to simplify creation and recreation
- 18e57e9 Fixing Lima docker permission
- 46edfc2 Fixing Lima template installation
- cfb5fbc Fixing fallback lima config
- 51c87c5 Fixing pulse server authorization automation
- 2954e36 Increasing the version
- 508674f Reloading docker inside Lima to fix permissions
- 8a5ad64 Updating script for profile refreshment + fixing some sound bugs for macOS
- d5a2f5c cleaning
v2.2.1
RF Swift — Release Notes
What's New
This release adds Lima VM lifecycle management commands, giving macOS users direct control over their Lima QEMU VM without resorting to raw limactl commands.
Lima VM Management Commands
New rfswift engine lima subcommand group for managing the Lima QEMU VM lifecycle directly from RF Swift.
rfswift engine lima status
Inspect the current state of the Lima VM at a glance:
rfswift engine lima statusDisplays:
- Instance name and running/stopped status
- Configuration file path (
~/.lima/rfswift/lima.yaml) - Template source location (or "inline fallback" if none found)
- QMP socket path (required for USB passthrough)
- Docker socket path (for container engine routing)
# Check a custom instance
rfswift engine lima status --instance my_custom_vmrfswift engine lima reconfig
Apply an updated YAML template to the VM without losing data:
# Non-destructive: stop → apply new template → restart (VM filesystem preserved)
rfswift engine lima reconfig
# Use a specific template file
rfswift engine lima reconfig --template ~/my-custom-lima.yaml
# Destructive: delete and recreate the VM (all VM data lost)
rfswift engine lima reconfig --forceFlags:
| Flag | Description |
|---|---|
--template PATH |
Path to Lima YAML template (overrides auto-detection) |
--force |
Delete and recreate the VM (destructive — loses all VM data) |
--instance NAME |
Lima instance name (default: rfswift) |
Template search order (when --template is not specified):
<binary_dir>/lima/rfswift.yaml~/.config/rfswift/lima.yaml~/.rfswift/lima.yaml
Use cases:
- Changed CPU/memory/disk allocation in the YAML
- Added new port forwards or host directory mounts
- Updated provisioning scripts (udev rules, kernel modules)
- With
--force: changed base OS image or disk size (requires full recreation)
rfswift engine lima reset
Delete and recreate the Lima VM from scratch:
rfswift engine lima reset
# With a specific template
rfswift engine lima reset --template ~/my-custom-lima.yamlFlags:
| Flag | Description |
|---|---|
--template PATH |
Path to Lima YAML template (overrides auto-detection) |
--instance NAME |
Lima instance name (default: rfswift) |
Equivalent to reconfig --force, but also works when no instance exists yet. An interactive confirmation prompt is shown before deletion.
rfswift engine Info Command
Running rfswift engine (without subcommands) now prints information about the currently active container engine (Docker, Podman, or Lima), including detection results and socket paths.
Documentation Gaps Identified
The following items are present in the source code but were missing from the documentation site (rfswift-doc-v2):
| Item | Status |
|---|---|
rfswift engine lima reconfig command and flags |
Not documented in engine.md |
rfswift engine lima reset command and flags |
Not documented in engine.md |
rfswift engine lima status command and flags |
Not documented in engine.md |
rfswift engine (info subcommand) |
Not documented |
RFSWIFT_LIMA_INSTANCE environment variable |
Not documented (only --instance flag is) |
Interactive picker mode for macusb attach/detach (no-flag usage) |
Partially documented — mentioned in source but doc only shows flag-based usage |
macusb.md "Recreating the VM" section uses raw limactl commands |
Should reference rfswift engine lima reset as the preferred method |
Fixes
Lima VM — Fully Operational on RF Swift
The Lima VM integration is now working like a charm. Key fixes include:
- Automatic VM lifecycle management: RF Swift now manages the Lima VM automatically — starting, stopping, and reconfiguring the VM without requiring manual
limactlintervention. - Automatic PulseAudio server handling: Pulse server tasks are now handled automatically by RF Swift, removing the need for users to manually configure or start the PulseAudio server for audio passthrough in the VM.
Summary of Changes
- 3 new CLI commands:
engine lima status,engine lima reconfig,engine lima reset - Non-destructive VM reconfiguration: update VM template without losing Docker images and containers
- Destructive reset with safety prompt: interactive confirmation before deleting VM data
- Template auto-detection: searches multiple standard paths for Lima YAML templates
- Custom instance support: all commands accept
--instancefor non-default VM names - Engine info display:
rfswift engineprints active engine details - Lima VM auto-management: RF Swift handles VM lifecycle automatically
- Automatic Pulse server tasks: PulseAudio server configuration and startup managed seamlessly
These commands complement the existing macusb command group and --engine lima flag, giving macOS users full lifecycle control over their Lima VM without leaving RF Swift.
v2.2.0
RF Swift: Release Notes
What's New
This release brings major new capabilities to RF Swift: macOS USB device passthrough, automatic shared workspaces, integrated assessment reporting, an interactive USB device picker, and a new Lima container engine for macOS.
macOS USB Passthrough via Lima
Docker Desktop and Podman on macOS cannot forward USB devices (SDR dongles, HackRF, RTL-SDR, etc.) into containers. RF Swift now solves this with Lima + QEMU, providing full USB hot-plug support on macOS.
New command: rfswift macusb
# Install prerequisites
brew install lima qemu
# List USB devices on your Mac
rfswift macusb list
# Attach a device to the Lima VM (interactive picker or explicit IDs)
rfswift macusb attach
rfswift macusb attach --vid 0x1d50 --pid 0x604b
# Run container via Lima's Docker (where USB devices live)
rfswift --engine lima run -i penthertz/rfswift_noble:sdr_light -n sdr_work
# Detach when done
rfswift macusb detachInteractive device picker: Running macusb attach or macusb detach without flags launches a multi-select TUI where you can pick devices by name — no need to look up vendor/product IDs manually.
Transparent VM management: RF Swift auto-creates and starts the Lima VM on first --engine lima use. The VM comes pre-configured with Docker, USB libraries, kernel modules, and udev rules for all common RF hardware (HackRF, RTL-SDR, USRP, BladeRF, Airspy, PlutoSDR, LimeSDR, FUNcube, NanoVNA, Proxmark3, JTAG probes, logic analyzers, and more).
New engine: --engine lima joins docker and podman as a container engine option. Use it when you need USB devices on macOS.
Automatic Shared Workspace
Inspired by Exegol's workspace model, every RF Swift container now gets a shared workspace directory automatically mounted — no --bind flags needed.
~/rfswift-workspace/
├── my_sdr/ → /workspace inside container "my_sdr"
├── wifi_pentest/ → /workspace inside container "wifi_pentest"
└── client_assessment/ → /workspace inside container "client_assessment"
- Auto-created at
~/rfswift-workspace/<container-name>/onrfswift run - Mounted at
/workspaceinside the container - Persists after container deletion — your data is never lost
- No configuration needed — just save files to
/workspace
Workspace flags:
--workspace /path— custom host directory--cwd— mount current working directory--no-workspace— disable workspace mount
Wizard integration: The run wizard now includes a workspace configuration step with options for auto, custom path, current directory, or disabled.
Integrated Assessment Reporting
Generate structured reports from container sessions — combining metadata, recordings, shell history, and workspace artifacts into a single document.
New command: rfswift report generate
# Markdown report (default)
rfswift report generate -c my_sdr
# Styled HTML report (print-ready, no dependencies)
rfswift report generate -c my_sdr --format html
# PDF report (requires pandoc or wkhtmltopdf)
rfswift report generate -c my_sdr --format pdf -o assessment.pdf
# Custom title
rfswift report generate -c my_sdr --title "Client Assessment 2026" --format htmlReport contents:
- Container metadata (image, creation date, config, capabilities, devices)
- Session recordings inventory (
.castfiles from--record) - Shell command history (extracted from container's bash/zsh history)
- Workspace file artifacts with smart categorization (captures, configs, logs, scripts, images)
- Editable notes section
Output formats:
- Markdown — zero dependencies, works everywhere
- HTML — professional styling with color-coded badges, dark code blocks, print-friendly CSS
- PDF — via pandoc or wkhtmltopdf (falls back to HTML if not installed)
Interactive USB Device Picker (macOS)
The macusb attach and macusb detach commands now feature an interactive multi-select picker when run without --vid/--pid flags:
> Select USB device(s) to attach to Lima VM
Use space to select, enter to confirm
[ ] HackRF One [0x1d50:0x604b]
[x] RTL2838UHIDIR [0x0bda:0x2838] S/N: 00000001
[ ] ADALM-Pluto [0x0456:0xb673]
Multiple devices can be selected at once. On macOS with --engine lima, the run flow also offers USB device attachment before container creation.
Run Wizard Enhancements
The interactive wizard (rfswift run without flags) now includes:
- Workspace configuration step — choose auto, custom path, current directory, or disabled
- USB device attachment (macOS + Lima) — pick devices to forward before container creation
- Workspace path in recap — the configuration summary now shows the resolved workspace path
Lima Container Engine
New container engine for macOS alongside Docker and Podman:
rfswift --engine lima run -i penthertz/rfswift_noble:sdr_full -n usb_sdr- Auto-creates a QEMU VM on first use (no manual
limactlneeded) - Auto-starts the VM if it's stopped
- Docker socket forwarding — the VM's Docker is transparently accessible from the host
- Pre-provisioned with all RF device udev rules, USB libraries, and kernel modules
- QEMU dependency check —
rfswift macusb statusandrfswift doctorverify both Lima and QEMU are installed
Engine detection order: Docker → Podman → Lima (auto) or explicit with --engine lima.
Lima template included at lima/rfswift.yaml — fully customizable (VM resources, mounts, port forwarding, udev rules, kernel modules). See documentation for customization guide.
Doctor Enhancements
rfswift doctor now checks:
- Lima VM status (macOS) — installation, instance existence, running state
- QEMU installation (macOS) — required for Lima USB passthrough
- QMP socket availability (macOS) — verifies USB hot-plug capability
- macOS USB device count — lists host USB devices via
system_profiler
macOS Build Targets
- Makefile:
make darwinnow buildsdarwin_amd64anddarwin_arm64binaries - GoReleaser: macOS builds included in release archives alongside the Lima template
- Lima template bundled in release archives for easy setup
Shell Scripts
install_lima()— installs Lima + QEMU via Homebrew on macOSsetup_lima_instance()— creates and provisions the rfswift VM with Docker, udev rules, and kernel modulesoffer_lima_for_usb()— offered during installation even when Docker/Podman is already present (because neither supports USB on macOS)check_lima()— checks Lima status during setup- Lima option added to interactive container engine selection menu on macOS
- Updated
get_rfswift.shand all wrapper scripts (install.sh,install_dev.sh,build_project.sh)
Supported Platforms
| Platform | Architecture | Container Engines |
|---|---|---|
| Linux | x86_64, ARM64, RISC-V64 | Docker, Podman |
| Windows | x86_64 (WSL2) | Docker, Podman |
| macOS | x86_64 (Intel), ARM64 (Apple Silicon) | Docker, Podman, Lima (USB) |
Upgrading
# Update via the installer
curl -fsSL "https://raw.githubusercontent.com/PentHertz/RF-Swift/refs/heads/main/get_rfswift.sh" | sh
# Or update just the binary
rfswift update
# macOS: install Lima + QEMU for USB passthrough
brew install lima qemuDocumentation
Full documentation at rfswift.io, including:
v2.2.0-dev
Changelog
- 5287f4f Adding Go missing files
- 4d06fb9 Adding Lima engine to support USB passthrough
- e2da81b Adding missing report modules
- 18e1de5 Adding new features
- c188958 Adding profile management and network NAT management
- d0666fa Fixing podman recreation
- a82f902 Fixing rebindings for all features using Docker on Linux
- 91333db Increment Go version on the releaser
- 9d5c7e8 Incrementing the version
- 62c9009 Merge branch 'main' of github.com:PentHertz/RF-Swift
- 43c8b3d Update README.md
- 732ba2e Update README.md
- 4294693 Update rfswift.yaml
- 33cfe7a Update version
- c856f11 Updating TUI and allowing different subnet
- b657b5f Updating branch
- 6404339 Updating workflow's Go version
v2.1.0
Changelog
- c188958 Adding profile management and network NAT management
- d0666fa Fixing podman recreation
- a82f902 Fixing rebindings for all features using Docker on Linux
- 91333db Increment Go version on the releaser
- 9d5c7e8 Incrementing the version
- c856f11 Updating TUI and allowing different subnet
- b657b5f Updating branch
- 45202e8 Updating version
- 6404339 Updating workflow's Go version
v2.0.0
RF Swift v2.0.0 "Harmonic" - Release Notes
Overview
RF Swift v2.0.0 "Harmonic" is a major release that brings a completely restructured codebase, a new interactive terminal UI, desktop environment support, VPN integration, Podman support, and significant improvements across the board.
Major Features
Desktop Mode (VNC/noVNC)
RF Swift now supports running a full desktop environment inside containers, accessible via VNC or noVNC.
--desktopflag to enable desktop mode onrunandexec--desktop-config proto:host:portfor custom configuration--desktop-passfor VNC password protection--desktop-sslfor encrypted VNC connections- New
[desktop]section inconfig.inifor persistent settings
VPN Integration
Containers can now be launched with built-in VPN connectivity:
- WireGuard:
--vpn wireguard:./wg0.conf - OpenVPN:
--vpn openvpn:./client.ovpn - Tailscale:
--vpn tailscale[:auth-key] - Netbird:
--vpn netbird[:setup-key]
Automatically injects required capabilities (NET_RAW) and devices (/dev/net/tun).
Interactive TUI Wizard
A new terminal UI built with Charmbracelet provides guided container creation:
- Interactive wizard launches when
rfswift runis called without-iand-n - Container picker for
exec,stop,remove,commit,rename, and other commands - Image picker for
delete,retag,download, andexport - File picker for
import - All interactive features gracefully degrade to standard CLI flags when scripting
Doctor Command
New rfswift doctor command for system diagnostics:
- Container engine detection and status
- Engine version and permissions
- RF Swift image availability
- X11 display and xhost configuration
- Audio system (PulseAudio/PipeWire) status
- USB device availability
- Configuration file validation
- Kernel module checks
Updated Commands
cleanup: Now uses subcommands (cleanup all,cleanup containers,cleanup images) with--older-than,--dry-run,--stopped,--dangling,--prune-childrenoptionsrun: New flags--desktop,--desktop-config,--desktop-pass,--desktop-ssl,--vpn,--realtime,--record,--record-output,--no-x11,--ulimitsexec: New flags--record,--record-output,--vpn,--desktopimages local/remote: New-v(show versions) and-f(filter) flags