A Mac with Apple Silicon (M1 or later) running macOS Monterey 12 or higher. That's it — UTM handles the rest.
Note: Your VM can only run the same macOS version as your host or older — you can't create a Sequoia guest on a Monterey host. Update your host OS first if you need a newer version inside the VM.
Step 1 of 5Install UTM
UTM is a free, open-source virtualizer for macOS. For macOS guests on Apple Silicon, it uses Apple's Virtualization.framework, so performance is near-native.
Download it from mac.getutm.app (free) or grab it from the Mac App Store (paid, but identical — just supports the developer). Install it like any other Mac app.
Step 2 of 5Create the macOS VM
Click Create a New Virtual Machine. Choose Virtualize (not Emulate — you want native speed), then select macOS 12+ as the operating system.
UTM will ask you to import an IPSW (Apple's restore image format). You can leave the path empty and click Continue to download the latest one automatically, or provide a specific IPSW file if you need a particular macOS version.
Step 3 of 5Allocate Resources
Give the VM enough room to breathe. A solid baseline for running OpenClaw: 4 CPU cores, 8 GB RAM, 40 GB disk. You can adjust later from UTM's settings, but going below these minimums will feel sluggish.
Make sure your host Mac has enough headroom — you don't want to starve your main OS of resources. If you have 16 GB of RAM on the host, 8 GB for the VM leaves 8 GB for macOS which is workable. After saving, the IPSW will start downloading (~13 GB).
Step 4 of 5Install Homebrew, Node & OpenClaw
Once macOS is set up inside the VM and you've gone through the initial setup wizard, open Terminal and run these commands. (The Homebrew installer is a remote shell script — if you'd prefer to inspect it first, visit the official Homebrew site.)
# Install Homebrew /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # ⚠️ IMPORTANT: Add Homebrew to your PATH (Homebrew will print these exact lines) echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile eval "$(/opt/homebrew/bin/brew shellenv)" # Install Node.js (LTS) brew install node # Install OpenClaw globally npm install -g openclaw@latest
The Homebrew PATH step is the one most people miss — if brew isn't found after install, that's why.
Step 5 of 5Run OpenClaw Onboarding
One last command handles the remaining setup and installs the background daemon:
openclaw onboard --install-daemon
The onboard wizard will walk you through connecting your LLM provider (Anthropic, OpenAI, or OpenRouter) and optionally setting up messaging channels like Telegram or Discord. Once complete, your agent is running.
That's it. You're done. ✓
Troubleshooting
IPSW download keeps stalling
Some users have reported that toggling a VPN on or off resolves this. Apple's CDN can be finicky with certain network configurations.
Can't create a newer macOS version than my host
If you're running macOS Monterey as your host, you can only create a VM of the same or older version. Update your host OS first if you need a newer guest.
On an Intel Mac?
UTM's native macOS virtualization only works on Apple Silicon. For Intel Macs, you'll need VMware Fusion, VirtualBox, or Parallels instead — the workflow is different.
Homebrew not found after install
On Apple Silicon Macs, Homebrew installs to /opt/homebrew. After installing, run the two commands Homebrew prints at the end to add it to your shell profile. If you missed them, run: echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile && eval "$(/opt/homebrew/bin/brew shellenv)"
VM runs but no network/internet
UTM uses shared networking by default, which should work out of the box. If the VM has no internet, try restarting it. If that doesn't help, open UTM settings for the VM → Network → ensure "Shared Network" is selected.
VM performance is poor
Make sure you chose Virtualize (not Emulate) when creating the VM. Emulation is dramatically slower. Also check that no other heavy apps are competing for RAM on the host. You can adjust CPU cores and RAM from UTM's VM settings without recreating it.