Create a Local VM on macOS
On macOS you can run a meltcloud Nest or Machine as a local VM. This is handy for trials, PoCs and learning before you move to bare metal.
Tool Comparison
Three options are available, each with different tradeoffs:
| tart | UTM (Apple Virtualization) | UTM (QEMU) | |
|---|---|---|---|
| Interface | CLI | GUI | GUI |
| Apple Silicon | ✓ | ✓ | ✓ |
| Intel Mac | ✗ | ✗ | ✓ |
| Nested virtualization | ✓ (M3+, macOS 15+) | ✓ (M3+, macOS 15+) | ✗ |
| Inter-VM networking | ✓ (Softnet) | ✗ (VMs are isolated) | ✓ (vmnet-shared) |
Inter-VM networking is required when running a Nest and Machines on the same host (Nest ↔ Machine, Machine ↔ Machine). Nested virtualization is required for Elastic Pools / KubeVirt.
Recommendation
For most setups we recommend tart: it supports both inter-VM networking and nested virtualization on Apple Silicon M3+.
VM Settings
Pick the column matching what you want to run:
| Setting | Nest | Machine |
|---|---|---|
| Architecture | host arch (arm64 or amd64) | host arch (arm64 or amd64) |
| vCPU | 8+ | 2+ |
| RAM | 16 GB+ | 4 GB+ |
| Disk | ≥ 200 GB | ≥ 20 GB |
| Nested virtualization | not required | optional, required for Elastic Pools |
| Boot media | Nest installer .iso | Enrollment Image .iso |
Option A: tart
Install tart with Homebrew:
brew install cirruslabs/cli/tartCreate and start the VM:
# create a Linux VM with a 215 GB disk (~200 GiB, tart uses decimal GB)
tart create --linux --disk-size 215 melt-nest
# set memory (in MB); CPU defaults to 4 which is fine
tart set melt-nest --memory 16384
# boot from the Nest installer ISO
# uses default Shared networking; do NOT use --net-softnet (blocks Nest floating IPs)
tart run melt-nest --disk "/path/to/nest-installer-arm64.iso:ro"# create a Linux VM (40 GB is plenty for a worker)
tart create --linux --disk-size 40 melt-machine
# set memory (in MB)
tart set melt-machine --memory 8192
# boot the Enrollment Image
# --net-softnet + --net-softnet-allow: enables inter-VM traffic so the Machine can reach the Nest
tart run melt-machine \
--disk "/path/to/enrollment-image-arm64.iso:ro" \
--net-softnet --net-softnet-allow=0.0.0.0/0# create a Linux VM (40 GB is plenty for a worker)
tart create --linux --disk-size 40 melt-machine
# set memory (in MB)
tart set melt-machine --memory 8192
# boot the Enrollment Image
# --net-softnet + --net-softnet-allow: enables inter-VM traffic so the Machine can reach the Nest
# --nested: enables nested virtualization for Elastic Pools (requires M3+ Mac on macOS 15+)
tart run melt-machine \
--disk "/path/to/enrollment-image-arm64.iso:ro" \
--net-softnet --net-softnet-allow=0.0.0.0/0 \
--nestedVM window not appearing?
tart may not bring the VM window to the foreground. See Troubleshoot: tart VM window doesn't appear.
Option B: UTM with Apple Virtualization
WARNING
UTM with the Apple Virtualization backend isolates VMs from each other. Use this option only for single-VM setups (e.g., a Machine enrolling against SaaS meltcloud). For setups where Machines need to reach a local Nest, use tart instead.
Install UTM from mac.getutm.app, the Mac App Store, or Homebrew:
shellbrew install --cask utmClick the + button in the toolbar, then choose Virtualize (native speed on Apple Silicon; do not pick Emulate).

Under Operating System, choose Linux.

Hardware: set Memory (e.g.
16384MiB for a Nest) and CPU Cores (leave Default, or set per the table above).
Boot: leave Use Apple Virtualization checked, select Boot from ISO image, and Browse to your
.iso(Nest installer or Enrollment Image).
Storage: set the drive size (see VM Settings above).

Shared Directory: skip this step.
Summary: give the VM a name (e.g.
nest) and Save.
Start the VM. It boots from the
.iso.
Nested virtualization (Elastic Pools)
For Machines that will host Elastic Pools, nested virtualization is required. UTM enables it automatically on M3 or newer Macs running macOS 15+.
Option C: UTM with QEMU
WARNING
UTM with the QEMU backend supports both Apple Silicon and Intel Macs and inter-VM networking (via vmnet-shared), but does not support nested virtualization (Elastic Pools won't work).
Install UTM from mac.getutm.app, the Mac App Store, or Homebrew:
shellbrew install --cask utmClick the + button in the toolbar, then choose Virtualize (do not pick Emulate).

Under Operating System, choose Linux.

Hardware: set Memory (e.g.
16384MiB for a Nest) and CPU Cores (leave Default, or set per the table above).
Boot: uncheck "Use Apple Virtualization", select Boot from ISO image, and Browse to your
.iso(Nest installer or Enrollment Image).Intel Macs
On Intel Macs, use the amd64 Nest installer or Enrollment Image. "Use Apple Virtualization" is not available on Intel, so UTM always uses the QEMU backend.

Storage: set the drive size (see VM Settings above).

Shared Directory: skip this step.
Summary: give the VM a name (e.g.
nest) and Save.
Start the VM. It boots from the
.iso.
WARNING
After the Nest or Machine installation completes, you must remove the ISO from the VM. QEMU does not respect boot order changes, so the VM will keep rebooting into the installer. See VM keeps rebooting into the installer (UTM with QEMU).
Next Steps
- Nest: follow the on-screen TUI installer.
- Machine: after it boots from the Enrollment Image it enrolls automatically and appears under Machines. Continue with Assign to a Machine Pool.
Troubleshoot
tart VM window doesn't appear
tart may not bring the VM window to the foreground on some macOS versions. We also stumbled upon this, there are even GitHub issues (#928, #1131) for it.
No internet or host can't reach the VM (UTM)
Open the VM's Settings → Network and confirm Network Mode is Shared Network.
Apple Virtualization backend:

QEMU backend:

VMs can't reach each other (UTM with Apple Virtualization)
This is a known limitation. UTM's Apple Virtualization backend isolates VMs from each other on the Shared Network. VMs cannot communicate with each other, even when running on the same host.
If you need inter-VM networking (e.g., Machines reaching a local Nest), use tart with Softnet (see Option A) or UTM with the QEMU backend (see Option C), which uses vmnet-shared and supports inter-VM traffic.
VM keeps rebooting into the installer (UTM with QEMU)
QEMU does not respect boot order changes made by the installer. After the Nest or Machine installation completes, the VM will keep rebooting into the installer ISO instead of booting from disk.
To fix this, stop the VM and remove the ISO drive: open the VM's Settings, right-click the USB Drive entry under Drives, and click Delete.

Disk path must match the Enrollment Image (Machines)
Apple's Virtualization framework presents the disk as a virtio device, usually /dev/vda. The install disk path you chose when creating the Enrollment Image must match, or enrollment fails. If it does, create another Enrollment Image with the correct disk path. The Enrollment Logs show the exact error.
If the VM has trouble booting or enrolling, check the Enrollment Images: Troubleshooting section.
