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, andmvz 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.
| Option | Effect |
|---|---|
--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-autologin | Show the lock screen instead of signing in |
--ssh | Install OpenSSH Server during setup, with your SSH keys and PowerShell as the shell. Adds about 10 minutes. |
--winrm | Turn on Windows Remote Management (port 5985, Basic authentication over HTTP). Only on networks you trust. |
--no-sound | Leave 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:
| Step | Time |
|---|---|
| Driver download, first VM only | A few minutes |
| Preparing the installer and copying Windows | 2 to 3 minutes |
| Windows setting itself up over a few restarts | 5 to 7 minutes |
OpenSSH Server, with --ssh | About 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--printto write the.rdpfile 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>.mvzandmvz ipwork. - 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.
| Workload | Guest | Mac | Frames |
|---|---|---|---|
| Idle desktop | 5% | 0.15 to 0.2 | |
| 2D canvas, 400 sprites | 6% | 0.9 | 64 fps |
| WebGL, 300 cubes | 3 to 5% | 1.5 | 64 fps |
| H.264 720p30 | 9% | 0.3 to 0.4 | none dropped |
| H.264 1080p30 | 12% | 0.45 | none dropped |
| VP9 1080p30 | 15% | 0.5 to 0.7 | none dropped |
| VP9 1080p60 | 18% | 0.65 to 0.8 | none dropped |
| YouTube, default quality | 9% | 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.
DeltaSync