Beta

How well it runs can still depend on your host and its GPU. Metal, macOS are trademarks of Apple Inc. Reims vGPU is an independent project and is not affiliated with, sponsored by, or endorsed by Apple Inc.

Overview

Reims vGPU gives macOS VMs in QEMU accelerated graphics: Metal on an Apple silicon Mac, Vulkan on Linux. You use it through reims-ctl, which installs a QEMU built on it, creates VMs, installs macOS into them from Apple, and runs them, each display in a window of its own.

What you need

HostGuestYou also need
An Apple silicon Macarm64 macOSXcode's command line tools and Homebrew
An x86-64 Linux PC: Ubuntu, Debian, Arch or CachyOSx86-64 macOS, up to 26 TahoeKVM and a Vulkan driver for your GPU

The project has tested arm64 macOS 13, 14, 15 and 26 on an M3 Max, and x86-64 macOS 26 on Linux with an RTX 5080 laptop GPU. macOS 26 Tahoe runs on both hosts, and is the last macOS for Intel Macs.

The path

  1. Install reims-ctl from a clone of the repository. One script builds everything and asks before it installs anything.
  2. Create a VM. On a Mac, macOS installs from Apple's IPSW in one command. On Linux, reims-ctl downloads Apple's installer and you install macOS from Recovery, then set one preference.
  3. Start it. A window opens for each display; click in to give the guest your keyboard and mouse.
  4. Live with it from the interactive interface, or from the shell with its commands. On a machine with no screen, the terminal viewer shows the VM in your terminal.
$ git clone https://github.com/steelbrain/reims-vgpu
$ cd reims-vgpu && scripts/install-ctl.sh
$ reims-ctl  # the interactive interface: n creates a VM

How it gets a GPU

macOS already ships a driver for a paravirtual GPU, AppleParavirtGPU.kext, written against the host side Apple ships as ParavirtualizedGraphics.framework. Reims vGPU takes that framework's place: QEMU's apple-gfx devices link it, it runs the guest's GPU commands on Metal or, on Linux, on Vulkan through metal2vulkan, and it draws each guest display in a window. There's nothing to install in the guest. On x86-64, the OpenCore image reims-ctl makes carries one small kext, ReimsVgpu.kext, so that macOS 26's driver uses the GPU as its arm64 build does.

What it never does

Reims vGPU never ships macOS: no disk images, IPSWs or installers. Every install comes from Apple's servers, fetched by reims-ctl on your machine, or from media you already have.