Common issues and how to resolve them. For context-specific troubleshooting, see also the inline sections in VM Provisioning and Tailscale Setup.
clawctl requires macOS on Apple Silicon (M1/M2/M3/M4). It uses Lima with the
vz (Virtualization.framework) backend and arm64 Ubuntu images, which are
Apple Silicon–only.
Install Homebrew from brew.sh, then re-run the wizard.
Make sure brew is on your PATH — the wizard checks via which brew.
If brew install lima fails, try:
brew update
brew install limaIf it still fails, check the Lima GitHub issues for known problems with your macOS version.
The default timeout is 10 minutes. On first run, Lima downloads the Ubuntu 24.04 cloud image (~700 MB), which can be slow on constrained networks. Retry — the image is cached after the first download.
The wizard skips creation if a VM with the same name already exists. To start fresh:
clawctl delete
clawctl createThe VM disk is thin-provisioned (grows on demand) but defaults to 50 GiB max.
Check host disk space with df -h. Check VM disk usage with:
limactl shell <vmName> -- df -h /If the NodeSource setup script fails, the Ubuntu version may not be supported. Ubuntu 24.04 is supported by NodeSource. Check inside the VM:
limactl shell <vmName> -- node --versionThe Homebrew installer downloads and compiles several packages. On first run
this can take several minutes. The NONINTERACTIVE=1 flag ensures it does not
prompt — if it appears stuck, give it time.
The op version is pinned in
packages/capabilities/src/capabilities/one-password/op-cli.ts. To
update, change OP_VERSION there, rebuild claw, and re-provision.
Provisioning scripts are idempotent. If a script fails partway through, deleting and recreating the VM will re-run everything and skip already-completed steps:
clawctl delete <vmName>
clawctl create --config <path>Data in <projectDir>/data/ is preserved across rebuilds.
It may be waiting for browser authentication. For automated setups, use an auth key:
sudo tailscale up --authkey=tskey-auth-xxxx --accept-dns=falseSee Tailscale Setup — Auth Keys for how to generate one.
Check tailscale status on both devices to confirm they are on the same
tailnet. If you use custom ACLs, ensure the gateway port (18789, or 443 for
serve mode) is allowed. See Tailscale Setup — ACL Configuration.
The --accept-dns=false flag (recommended) prevents Tailscale from overriding
the VM's DNS. This means MagicDNS names won't resolve from inside the VM —
use Tailscale IPs instead, or use MagicDNS names only from external devices.
If openclaw onboard fails during the wizard, the instance is still registered.
You can retry manually:
clawctl shell -- openclaw onboard --install-daemonIf http://localhost:18789 doesn't load after onboarding:
- Check that the VM is running:
clawctl status - Check that the daemon is running inside the VM:
clawctl oc daemon status
- Check port forwarding — the Lima config forwards guest port 18789 to the
host. If you changed
gatewayPort, use that port instead. - Check firewall settings on the host.
When things are in a bad state, delete and recreate:
clawctl delete
clawctl create --config <projectDir>/clawctl.jsonData in <projectDir>/data/ is preserved. Credentials stored inside the VM
(1Password token, Tailscale identity) will need to be reconfigured. See
Snapshots and Rebuilds for details on what
persists.
Take a snapshot before making risky changes:
limactl stop <vmName>
limactl clone <vmName> <vmName>-snapshot-$(date +%Y%m%d)
limactl start <vmName>See Snapshots and Rebuilds for restore instructions.