MacVisor Beta

Windows 11 guests (Tech Preview)

Windows 11 on ARM VMs installed unattended from Microsoft's ISO, with your account, the guest agent and Remote Desktop. What works, what doesn't, and what to expect.

MacVisor installs Windows 11 on ARM from Microsoft's ISO with no interaction, and sets it up with an account, Remote Desktop and the MacVisor Agent. Windows support is a Tech Preview. It is tested to work on macOS 27.2 (beta) and with every MacVisor build, but it has limits that macOS and Linux guests don't. Keep important data outside the VM, and tell us what breaks.

What you need

  • An Apple Silicon Mac running macOS 27.2 (beta), the version Windows guests are tested on. Earlier macOS 27 builds lack CPU features Windows needs, and the New VM form tells you. Windows VMs depend on two Virtualization framework settings Apple doesn't document (performance-monitor and trap emulation). MacVisor checks for them before each start, so if a later macOS drops them, a Windows VM refuses to start with a message instead of hanging.
  • Microsoft's Windows 11 on ARM ISO. Choose the multi-edition Arm64 ISO and a language. The download link expires after 24 hours. We test with 26H2, which installs Windows 11 Pro. MacVisor can't download the ISO for you.
  • A Windows license. MacVisor doesn't include, sell or activate Windows.
  • Internet access for the first VM, to download the Windows drivers for the virtual hardware (about 1 GB). Later VMs reuse them.
  • Room for the defaults: 4 vCPUs, 8 GiB of memory and a 64 GiB disk.

Create a Windows VM

In the app, press ⌘N, choose Windows, pick the ISO and click Create & Install. More Options sets the account.

mvz create ~/Downloads/Win11_26H2_English_Arm64.iso win11 --ssh
mvz wait win11      # waits for the install, starts the VM, waits for the agent
mvz rdp win11       # opens it in Microsoft's Windows App
mvz shell win11     # PowerShell over SSH, with --ssh

When the install finishes, the VM stops. The next start boots Windows with:

  • A local administrator account, signed in automatically. The default name is macvisor, with a random password made for this VM unless you set your own. Show Password on the Overview shows it for 15 seconds, to type it into the VM's window, Copy Password copies it for the Windows App, and mvz password <vm> prints it. The computer name is the VM's name.
  • Remote Desktop, for a sharp display.
  • The MacVisor Agent.
  • Your shared folders as the Z: drive, writable where the share is.
  • No Microsoft account, and Windows 11's TPM check bypassed.
OptionEffect
--user <name>The account to create
--password-file <file>Read its password from a file (- reads it from standard input). Without it, MacVisor makes a random one
--no-autologinShow the lock screen instead of signing in
--sshInstall OpenSSH Server during setup, with your SSH keys and PowerShell as the shell. Adds about 10 minutes.
--winrmTurn on Windows Remote Management (port 5985, Basic authentication over HTTP). Only on networks you trust.
--no-soundLeave out the sound driver, and with it test mode and the trusted test certificate. See Sound.

To stop an install, choose Cancel Install... in the VM's menu or run mvz tasks cancel <task-id>, then delete the VM.

Sound

Sound is on by default. Windows has no signed driver for the VM's sound device, so the setup installs a community virtio sound driver from the Droid-VM project, which ships with MacVisor. The driver is only test-signed, so to load it the setup:

  • Puts Windows in test mode: test-signing on and driver integrity checks off. A Test Mode watermark shows on the desktop.
  • Adds the project's self-signed "DroidVM Test" certificate to Windows' trusted root and trusted publisher certificates. It is a code-signing certificate only: it can vouch for drivers and programs, not for websites.

Some VPN, endpoint-security and anti-cheat software refuses to run in test mode. To avoid both changes, turn off Sound in the New VM form, or use --no-sound. The VM then has no sound device, but Remote Desktop still carries sound.

How long it takes

On an M-series Mac with the ISO on the internal disk:

StepTime
Driver download, first VM onlyA few minutes
Preparing the installer and copying Windows2 to 3 minutes
Windows setting itself up over a few restarts5 to 7 minutes
OpenSSH Server, with --sshAbout 10 minutes more

So expect about 10 minutes, or 20 with --ssh. The window may sit on the Windows logo for minutes between restarts. The task pane shows the current phase.

Privacy settings

The setup chooses the least data sharing that Windows 11 Home and Pro allow, mostly as policies so Windows keeps them:

  • Diagnostic data: Required only, the lowest level allowed.
  • Off: advertising ID, location for apps, error reporting, feedback prompts, activity history, tailored experiences, search box suggestions, and suggested or silently installed apps.
  • A local account. The Microsoft account screens are skipped.

Change any of them in Settings → Privacy & security in the VM, or with Group Policy.

A sharp display: Remote Desktop

The VM's own window shows Windows at 1024 x 768, scaled to fit. It is the only size Windows' display driver draws correctly in a Mac VM today, so there are no resolution settings for Windows VMs. There is no GPU acceleration.

For real work, use Remote Desktop, which is on in every Windows VM. Microsoft's free Windows App from the App Store draws at your window's size and carries sound and the clipboard. Open it with:

  • Open in Windows App on the Overview tab or in the VM's menu. Copy Password and Show Password are below it.
  • mvz rdp <vm>. Add --print to write the .rdp file for another client.

The VM must be running with an address the Mac can reach. macOS may ask you to allow Windows App on the local network. Keep using the VM's own window for boot, recovery and sign-in.

Guest tools on Windows

The setup installs the MacVisor Agent as a Windows service. It gives you:

  • The VM's addresses, so <vm>.mvz and mvz ip work.
  • Clipboard sharing for text and images.
  • File transfer both ways, with mvz send, the toolbar or drag and drop. Files land on the Desktop. In Windows, macvisor-agent send <file> offers a file to the Mac.
  • Port forwards with mvz ports.
  • Clean shutdown and restart. Windows ignores the virtual power button while someone is signed in, so MacVisor asks the agent.
  • The clock and network fixed up after a resume.
  • Automatic agent updates when MacVisor updates.

The Docker socket and the pre-snapshot filesystem flush aren't available.

With --ssh, mvz shell opens PowerShell and mvz exec runs a command. Quote a command with pipes or switches as one argument:

mvz exec win11 -- "Get-Service sshd | Select-Object Status"

The agent's files and logs are in C:\ProgramData\MacVisor\agent. If it never connects, run this in the guest as an administrator:

C:\ProgramData\MacVisor\agent\macvisor-agent.exe install

Limits

  • No TPM or Secure Boot, so no BitLocker or Windows Hello.
  • One display size and no GPU acceleration.
  • No memory balloon, nested virtualization or Rosetta. Windows runs x64 apps with its own emulation.
  • No serial console.
  • Sound uses a test-signed driver, so Windows runs in test mode and trusts a third-party certificate. See Sound.
  • Shut Windows VMs down before you update MacVisor.

Snapshots, suspend, pause, clones, templates, export and import work as for other VMs. Windows Update finds updates, but we haven't tested installing them or signing in with a Microsoft account.

Erase and install again

To retry a failed install, use Erase and Install Windows... in a stopped VM's toolbar, or mvz reinstall <vm> <windows.iso>. It erases the disk and installs again with the same account and options, and can take a snapshot first. It doesn't upgrade Windows, and is unavailable while linked clones share the VM's disk.

What it's good for, and what it isn't

Windows runs well inside the VM. Video is smooth and apps feel like a modest laptop. The catch is the Mac: a Windows VM costs the Mac more CPU than the guest's own numbers show, especially while anything animates. Windows spreads small jobs across vCPUs, and the hypervisor pays for every switch. In Activity Monitor this shows under com.apple.Virtualization.VirtualMachine, and a headless VM costs the same.

Good for: Windows-only apps, trying software before a real PC, PowerShell and .NET work over mvz shell, build agents over SSH or WinRM, and light browsing or video.

Not for: games and 3D (rendered in software), GPU compute, or anything you want quiet while it animates. Video all day will spin up the fans.

Tips: use ARM64 browsers (Edge is, and Chrome has an ARM64 build). Prefer 720p for long sessions. If YouTube struggles, turn off AV1 in its playback settings. Two vCPUs instead of four cost the Mac a little less, at lower frame rates.

Measurements

A 4-vCPU, 8 GiB VM running Edge on an M-series Mac. "Guest" is the VM's own CPU counter across all vCPUs. "Mac" is the VM's process on the host, in cores.

WorkloadGuestMacFrames
Idle desktop5%0.15 to 0.2
2D canvas, 400 sprites6%0.964 fps
WebGL, 300 cubes3 to 5%1.564 fps
H.264 720p309%0.3 to 0.4none dropped
H.264 1080p3012%0.45none dropped
VP9 1080p3015%0.5 to 0.7none dropped
VP9 1080p6018%0.65 to 0.8none dropped
YouTube, default quality9%0.8, peaks of 2 to 3

Headless runs gave the same Mac figures. With 2 vCPUs, WebGL cost 1.2 cores and the canvas 0.75, at 53 fps.