Hysen Labs
Open-source project
utmapp/UTM avatar
utmapp

UTM

Virtual machines for iOS and macOS

35,019 stars1,783 forksSwiftApache-2.0
01
DEEP OPEN-SOURCE ANALYSIS

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.

02
DEEP OPEN-SOURCE ANALYSIS

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.

03
DEEP OPEN-SOURCE ANALYSIS

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.

04
DEEP OPEN-SOURCE ANALYSIS

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.

05
DEEP OPEN-SOURCE ANALYSIS

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.

07
DEEP OPEN-SOURCE ANALYSIS

Official sources

08
Community notes

Community notes