Skip to content

Releases: PentHertz/RF-Swift

v2.2.5

10 Apr 18:50
v2.2.5
1362bf4

Choose a tag to compare

Changelog

  • 1362bf4 Adding linux firmware to support all Wi-Fi dongles

v2.2.4

10 Apr 17:18
v2.2.4
1b742cb

Choose a tag to compare

Changelog

  • f3b5882 Adding bluetooth kernel module for lima
  • 0f573c2 Incrementing default version
  • 1b742cb Incrementing version

v2.2.3

10 Apr 14:26
v2.2.3
346d75e

Choose a tag to compare

Changelog

  • 346d75e Updating version
  • c594edb Using PHZ temporary Lima code to force the use of qemu-xhci,id=usb on QEMU

v2.2.2

05 Apr 21:29
v2.2.2
46ccc05

Choose a tag to compare

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

18 Mar 21:37
v2.2.1-dev
51c87c5

Choose a tag to compare

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

18 Mar 22:07
v2.2.1
9f423ce

Choose a tag to compare

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 status

Displays:

  • 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_vm

rfswift 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 --force

Flags:

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

  1. <binary_dir>/lima/rfswift.yaml
  2. ~/.config/rfswift/lima.yaml
  3. ~/.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.yaml

Flags:

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 limactl intervention.
  • 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 --instance for non-default VM names
  • Engine info display: rfswift engine prints 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

17 Mar 19:49
v2.2.0
2f0723c

Choose a tag to compare

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 detach

Interactive 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>/ on rfswift run
  • Mounted at /workspace inside 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 html

Report contents:

  • Container metadata (image, creation date, config, capabilities, devices)
  • Session recordings inventory (.cast files 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 limactl needed)
  • 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 checkrfswift macusb status and rfswift doctor verify 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 darwin now builds darwin_amd64 and darwin_arm64 binaries
  • 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 macOS
  • setup_lima_instance() — creates and provisions the rfswift VM with Docker, udev rules, and kernel modules
  • offer_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.sh and 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 qemu

Documentation

Full documentation at rfswift.io, including:

v2.2.0-dev

17 Mar 12:54
v2.2.0-dev
e2da81b

Choose a tag to compare

v2.2.0-dev Pre-release
Pre-release

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

17 Mar 08:09
v2.1.0
45202e8

Choose a tag to compare

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

11 Mar 19:09
v2.0.0
61473f2

Choose a tag to compare

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.

  • --desktop flag to enable desktop mode on run and exec
  • --desktop-config proto:host:port for custom configuration
  • --desktop-pass for VNC password protection
  • --desktop-ssl for encrypted VNC connections
  • New [desktop] section in config.ini for 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 run is called without -i and -n
  • Container picker for exec, stop, remove, commit, rename, and other commands
  • Image picker for delete, retag, download, and export
  • 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-children options
  • run: New flags --desktop, --desktop-config, --desktop-pass, --desktop-ssl, --vpn, --realtime, --record, --record-output, --no-x11, --ulimits
  • exec: New flags --record, --record-output, --vpn, --desktop
  • images local/remote: New -v (show versions) and -f (filter) flags

Changelog

  • f713f5c Merge pull request #31 from PentHertz/desktop-mode
  • 61473f2 Updating images
  • d79cda7 Updating version and Go resources