finds.dev← search

// the find

utmapp/UTM

★ 33,977 · Swift · Apache-2.0 · updated May 2026

Virtual machines for iOS and macOS

UTM is a QEMU-based system emulator and VM host for iOS and macOS, letting you run Windows, Linux, and other OSes on Apple devices. It targets both power users who want full VM capabilities on Mac and iOS users who want to run foreign architectures, with a 'SE' (slow edition) variant that works without a jailbreak by using a threaded interpreter instead of JIT.

- The dual-backend architecture is clever: QEMU/JIT path for performance when available (jailbroken or macOS), and a threaded interpreter (TCTI) fallback for stock iOS, giving the project a legitimate App Store/sideload story without gutting functionality.

- On macOS it uses Hypervisor.framework and Virtualization.framework for native-speed ARM VMs, so it's not purely an emulation wrapper—it takes the fast path when the host OS allows it.

- Active development with CI on real Mac hardware (MacStadium), a working Shortcuts/Intents integration, and localization in 6+ languages suggests this is maintained beyond a hobby state.

- The configuration layer is cleanly separated (Legacy/ migration path, distinct QEMU vs Apple config types), which makes it easier to reason about VM state and handle format upgrades without breaking existing VMs.

- The iOS JIT story is a constant moving target—Apple routinely closes the workarounds (ptrace, debugger entitlement tricks, etc.), so the non-jailbreak performance path can silently break on any iOS update and users are left waiting for a new workaround to be discovered.

- Building from source is non-trivial: QEMU and its dependencies need to be compiled separately, the Xcode project has multi-step setup, and the iOS signing/provisioning dance is painful enough that most contributors just use pre-built binaries, which limits the contributor surface.

- No automated test suite visible in the repo—the CI workflow builds and packages but there's no VM smoke-test or guest-boot validation, so regressions in QEMU argument generation or config migration can ship silently.

- GPL/LGPL component mixing (statically linked gstreamer plugins, QEMU code) creates real redistribution headaches that the README only briefly flags; anyone trying to ship a derivative commercially will hit this wall hard.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →