Virtual machines, made easy — a focused native app for Apple silicon Macs.
On an Apple silicon Mac running macOS 27 or later, install the signed and notarized app with Homebrew:
brew install --cask everettjf/tap/ezvmEZVM Omarchy is a separate, single-purpose macOS app: open it and continue directly into one persistent Omarchy workspace. It uses the same native Virtualization.framework core as EZVM, but replaces the VM-library workflow with Omarchy-focused onboarding, recovery, dynamic display, shared folders, text/PNG clipboard, notifications, and focus-scoped Command-to-Super shortcuts.
Download EZVM Omarchy directly. No separate EZVM installation or Homebrew command is required: on first launch, the app downloads and verifies its pinned Omarchy Factory image and creates the persistent workspace. Allow approximately 16 GiB of free disk space.
It is an independent community preview for Apple silicon Macs running macOS 27 or later—not an Omarchy-endorsed stable release. The remaining Daily Driver endurance work is tracked in the EZVM Omarchy follow-up TODO.
EZVM uses Apple's Virtualization.framework to create and run macOS and Linux virtual machines with a focused SwiftUI interface. It aims to be dependable, understandable, and useful without becoming a full emulation suite.
Project status: EZVM is Developer ID-signed and Apple-notarized. VM software can affect large disk images, so keep backups of important guests.
- Creates and runs macOS virtual machines from a local IPSW, a selectable macOS version, or Apple's latest supported restore image
- Creates and runs ARM64 Linux virtual machines from a local ISO or a built-in list of common distributions
- Stores machines in
~/EZVM Virtual Machinesby default; any other location can still be chosen - Keeps downloaded system images in a shared store and reuses them when creating more machines
- Takes, restores, and deletes snapshots of a stopped machine (APFS copy-on-write clones)
- Clones stopped machines with a new hardware identity and imports/exports checksum-verified
.ezvmexportpackages - Integrates with an optional authenticated Linux guest agent for readiness, IP reporting, SSH links, safe file transfer, and explicit shutdown/restart commands
- Installs an
ezvmCLI with versioned JSON inspection, validation, diagnostics, and headless start/status/stop commands - Configures CPU, memory, display, storage, networking, audio, pointing devices, and shared directories
- Accelerates Linux desktops with a native Custom Virtio GPU backed by VirGLRenderer and ANGLE/Metal; macOS guests retain Apple native graphics and Linux guests fall back to Apple Virtio if Custom VirGL can't start
- Uses Apple's native virtualization stack—no bundled hypervisor or cross-architecture emulation
- Keeps the app and its VM configuration format intentionally small
- An Apple silicon Mac
- macOS 27 or later
- An ARM64 guest image; EZVM does not emulate x86 guests
Install the signed and notarized release from the EZVM Homebrew tap:
brew install --cask everettjf/tap/ezvmOr download the archive from GitHub Releases.
Download the dedicated signed and notarized Alpha,
open EZVM Omarchy.app, and complete the native owner setup. The app handles
the verified Omarchy image download and persistent workspace automatically.
The older scripts/install-omarchy.sh path remains available for users who
specifically want Omarchy as a VM inside the general-purpose EZVM app, but it
is no longer the recommended Omarchy experience.
The Homebrew cask links ezvm into Homebrew's executable prefix. Every
command writes one schema-versioned JSON object and uses deterministic exit
codes, making it suitable for local scripts:
ezvm list
ezvm inspect "My Linux VM"
ezvm validate "/path/to/My VM.ezvm"
ezvm doctor
ezvm start "My Linux VM" --timeout 90
ezvm status "My Linux VM"
ezvm stop "My Linux VM" --timeout 30
ezvm install-image preinstalled-image.json --image disk.raw \
--destination "$HOME/EZVM Virtual Machines/My Linux VM.ezvm" --timeout 300Use --root /path/to/library one or more times when machines are stored outside
~/EZVM Virtual Machines. Headless mode runs the signed EZVM virtualization
process without presenting a VM window. Stop first requests a guest shutdown
and uses a bounded force-stop fallback.
install-image imports a decoded, bootable ARM64 raw disk described by the
versioned preinstalled-image manifest.
Both the CLI and signed app verify its logical size and SHA-256, and interrupted
installation leaves no partial machine bundle.
- Clone this repository.
- Open
EZVM/EZVM.xcodeprojin Xcode. - Select the EZVM scheme and your Mac as the run destination.
- Choose your own development team and bundle identifier if code signing requires it.
- Build and run with ⌘R.
To build the independent EZVM Omarchy app instead, open
EZVMOmarchy/EZVMOmarchy.xcodeproj and select the EZVM Omarchy scheme. Its
architecture, product boundaries, image policy, security model, and acceptance
history are documented in the
EZVM Omarchy product plan.
EZVM selects the graphics backend at runtime:
| Host and guest | Graphics path |
|---|---|
| macOS 27+ host, Linux guest | Custom Virtio GPU → VirGLRenderer → ANGLE/Metal |
| macOS guest | Apple native Mac graphics path |
The Custom VirGL path supports zero-copy scanout presentation, display-clock frame pacing, authenticated guest keyboard/wheel input, and guest-acknowledged dynamic resolution for window and full-screen transitions. It intentionally does not support Virtualization.framework machine-state save/restore: restoring guest RAM alone cannot reconstruct VirGL renderer contexts and resources. Stopped-VM file snapshots remain supported.
Implementation and validation details are in the Custom VirGL architecture notes, performance guide, and isolated prototype record.
If a VM opens without a usable window, input appears only after pointer movement, full screen is stretched, Command-to-Super shortcuts fail, setup loops, or a release repeatedly asks for Keychain access, start with the troubleshooting guide. It separates host display problems, guest Agent/compositor problems, image compatibility, and release signing problems so that one workaround does not hide a different failure.
The September 2026 clean-image acceptance run rebuilt and imported a 64 GiB sparse Omarchy image, completed the entire first-run flow, reached Hyprland, adapted the desktop to full screen, exercised Command-to-Super shortcuts and continuous typing (including remotely synthesized Shift characters), verified browser scrolling by hand, and confirmed guest NAT, DNS, TLS 1.3/HTTP/2, and the real pacman update path. The deployment target is macOS 27; Linux guests select Custom VirGL while retaining the Apple Virtio startup fallback.
Pick a macOS version from the built-in list in the creation flow (or use the latest supported restore image), or select a compatible .ipsw restore image from disk. Apple publishes current restore images through Virtualization.framework; third-party indexes such as ipsw.me can help locate older versions.
Pick a distribution from the built-in list in the creation flow (Ubuntu Server/Desktop, Debian, Fedora), or choose any ARM64 / AArch64 installer ISO, for example Ubuntu or Fedora. Intel/AMD (x86_64) images are not supported.
EZVM is not trying to replace UTM, VirtualBuddy, Tart, or Lima. Its direction is narrower:
- Make VM creation, launch, stop, recovery, and error handling reliable.
- Keep local macOS 27 tests, signed releases, Homebrew distribution, diagnostics, and configuration migration reproducible. Hosted CI can return when a genuine macOS 27 runner can execute the same GUI and VM gates.
- Expose a small, local automation surface so scripts and AI agents can create, start, inspect, and discard isolated VMs safely.
The automation layer will remain local-first, explicit, and opt-in. EZVM will not embed an AI model or require a cloud account. See the refresh roadmap, ecosystem research, and Homebrew distribution plan.
Issues and focused pull requests are welcome. During the refresh, reliability fixes, reproducible bug reports, tests, accessibility improvements, and documentation updates have priority over broad new features.
When reporting a VM problem, include the host macOS version, Mac model/chip, guest OS and image source, and the last operation performed. Do not attach VM disks or logs containing secrets.
- GitHub Issues for bugs and focused feature requests
- GitHub Issues for questions and design ideas
- Discord for informal conversation
EZVM is available under the MIT License.




