UTM
Virtual machines for iOS and macOS
UTM brings virtual machines to iOS and macOS
A full featured system emulator and virtual machine host for iOS and macOS, built on QEMU. The README lists support for more than 30 processors, including x86 64, ARM64, and RISC-V.
What UTM is
UTM opens its README with a line from Turing about inventing a machine that can compute any computable sequence, then gets practical. It is a full featured system emulator and virtual machine host for iOS and macOS, based on QEMU. In short, it lets you run Windows, Linux, and more on your Mac, iPhone, and iPad. The app is written in Swift, licensed under Apache-2.0, and its frontend was designed from scratch for macOS 11 and iOS 11 and later.
The feature list
The features read like a spec sheet. Full system emulation covers MMU and devices through QEMU, with support for over 30 processors including x86 64, ARM64, and RISC-V. Graphics come in VGA mode using SPICE and QXL, with a text terminal mode as an alternative. USB devices are supported, and JIT based acceleration runs on QEMU TCG. You create, manage, and run VMs directly from the device.
Native acceleration on macOS
Mac users get extra options. Hardware accelerated virtualization uses the Hypervisor.framework with QEMU, and you can boot macOS guests with the Virtualization.framework on macOS 12 and later. These sit on top of the emulation approach, giving the Mac a path to near native speed that the iOS side does not have.
UTM SE and the licensing note
A separate section explains UTM SE, the slow edition. Full JIT on iOS requires a jailbroken device or one of the workarounds for specific iOS versions, so UTM SE uses a threaded interpreter that is faster than a traditional one but slower than JIT, and it can be sideloaded as a regular app. It ships with ARM, PPC, RISC-V, and x86 in both 32 bit and 64 bit variants. The license note is worth reading: Apache 2.0 overall, but several LGPL components are involved, gstreamer plugins are statically linked, and parts of the code come from qemu.
Community notes