⚙️ Requirements & supported platforms
⚙️ Requirements & supported platforms
System requirements
- CPU: any dual-core CPU (quad-core recommended)
- RAM: 4 GB minimum (8 GB or more recommended; the Workbench and GUI tools like more)
- Storage: 10 GB free (20 GB or more for several images; the Nix store shares tools between environments)
- An engine: Docker, Podman or Lima for containers, or Nix for native environments (the installers set them up)
- Internet: for the installation and the image or environment downloads; afterwards everything runs offline (
-q)
Engines
| Docker | Podman | Lima | Nix | |
|---|---|---|---|---|
| Architecture | Client-server daemon | Daemonless | Docker in a QEMU VM | Native environments, no daemon |
| Root required | Daemon as root | No (rootless by default) | No | No |
| Linux | ✅ | ✅ | - | ✅ |
| Windows | ✅ Docker Desktop (WSL 2) | ✅ Podman Desktop / WSL 2 | - | ✅ inside a WSL 2 distribution |
| macOS | ✅ Docker Desktop (no USB) | ✅ podman machine (no USB) |
✅ USB passthrough, optional GPU VM | ✅ |
| SBCs (arm64, riscv64) | ✅ | ✅ | - | ✅ (arm64) |
| Best for | Broad ecosystem | Security-focused, air-gapped, embedded | macOS with RF hardware | No container engine, closest to the hardware |
RF Swift auto-detects the engine. Force one with
rfswift --engine docker|podman|lima|nix, RFSWIFT_ENGINE, or engine = in config.ini. See engine and the Nix engine guide.Let the installer handle everything:
curl -fsSL "https://raw.githubusercontent.com/PentHertz/RF-Swift/refs/heads/main/get_rfswift.sh" | shSupported platforms
| Platform | x86_64 / amd64 | arm64 | riscv64 |
|---|---|---|---|
| Linux | ✅ Fully supported (deb, rpm, pacman, tarball, AppImage) | ✅ Fully supported | ✅ CLI and images (no Workbench) |
| Windows 10/11 | ✅ Fully supported (installer bundle, MSI) | ✅ Supported (installer bundle, MSI) | ❌ |
| macOS 13+ | ✅ Supported (universal binaries; Lima for USB) | ✅ Supported (Lima for USB, krunkit GPU VM on macOS 14+) | ❌ |
Tested single-board computers
| SBC | Status | Engines | Comments |
|---|---|---|---|
| Raspberry Pi 5 | ✅ | Docker, Podman | Works with most tools |
| Milk-V Jupiter | ✅ | Docker, Podman | Slower than a Raspberry Pi 5 |
| Orange Pi RV2 | ✅ | Docker, Podman | Slower than the Milk-V Jupiter |
| Milk-V Mars | ❌ | Docker and Podman installation is problematic on its software stack | |
| UP Squared series | ✅ | Docker, Podman | |
| NanoPi T6 | ✅ | Docker, Podman | |
| Orange Pi 5 Ultra | ✅ | Docker, Podman | |
| Radxa ROCK 5B+ | ✅ | Docker, Podman |
On resource-constrained boards, Podman avoids a background daemon, and the Nix engine avoids image layers altogether.
Feature compatibility matrix
| Feature | Linux | Windows | macOS |
|---|---|---|---|
| Containers (Docker) | ✅ | ✅ Docker Desktop | ✅ Docker Desktop |
| Containers (Podman) | ✅ rootless | ✅ WSL 2 / Podman Desktop | ✅ podman machine |
| Native Nix environments | ✅ | ✅ inside WSL 2 | ✅ |
| GUI tools | ✅ X11 | ✅ WSLg | ✅ XQuartz (EGL) or --desktop |
| USB / SDR hardware in containers | ✅ mapped | ✅ usbipd-win into WSL 2 | ✅ Lima VM (not Docker Desktop) |
| Serial hot-plug | ✅ Docker, rootful Podman | ✅ via usbipd | ❌ (attach to the VM) |
| Audio | ✅ host PulseAudio / PipeWire | ✅ WSLg, no setup | ✅ host PulseAudio (Homebrew) |
| GPU in containers | ✅ vendor runtime | ❓ limited | ✅ Vulkan compute in the krunkit VM (no USB) |
Nix --isolate jail |
✅ bubblewrap | ✅ inside WSL 2 | ✅ Seatbelt (no PID namespace) |
| Workbench GUI | ✅ AppImage, native | ✅ | ✅ universal app |
| Remote agent (host and client) | ✅ | ✅ | ✅ |
| One-line installer | ✅ | ❌ (installer bundle instead) | ✅ |
| Native packages | ✅ deb, rpm, pacman | ✅ MSI, bundle | ✅ Homebrew cask, DMG |
The constraints behind each cell are listed in Known limits.
Questions or feedback?
❓
RF Swift is in active development. Have a question or feedback? Open an issue or join the Discord.
Next steps
Last updated on