--- name: omacvm description: Set up, change, update or troubleshoot OmacVM (Omarchy in a Parallels, UTM or VMware Fusion VM on an Apple Silicon Mac) with the omacvm command. Use when someone wants an Omarchy VM built, its CPUs or memory changed, a feature switched (macOS-native scroll momentum, trackpad gestures, Bridge, Omanotch, wallpaper, idle lock, autologin, memory-optimized kernel), OmacVM added to an existing Omarchy VM, updated, or checked. --- # OmacVM Drive everything through `./omacvm` in this repository (or `omacvm` on the PATH after `./install.sh`). Read `AGENTS.md` section 0 for the recipes and sections 7-8 before fixing anything by hand. ## Rules - Without a terminal `omacvm` never asks: pass options, read `--json`. Exit codes: 0 done, 1 failed, 2 usage (the message names what is missing), 3 needs a person (the message says what). - Only the person can: choose their Omarchy password, grant macOS permissions (Location Services, Accessibility, Input Monitoring), set Parallels' "Send macOS system shortcuts: Always", install Parallels, UTM 5 or VMware Fusion. Hand these over (`needs_human` in the JSON); never work around them, never invent a password. - macOS-native scroll momentum (`scroll-momentum`) is experimental and off by default: offer it, let the person decide. - A build takes 30-70 minutes (OmacVM.app 10-30, Fusion 45-85, `minutes` in the plan): run it in the background and follow its output. - Do not edit `/usr/share/omarchy` or the user's macOS Spaces; do not put personal data into this repository. ## New VM 1. `./omacvm vms --json` (a UTM VM with `"state": "unknown"`: UTM does not take orders from this terminal; over SSH it never does, so UTM VMs are driven from a terminal app on the Mac that may control UTM); then `./omacvm build --plan --json --vm-type parallels|utm|fusion [--vm-name NAME] [--feature scroll-momentum=on]`. 2. Show the plan (resources, features, `needs_human`), ask for the password and for changes. 3. Run the plan's `command` with `OMACVM_PASSWORD` set. 4. Hand over `needs_human`; when the person is logged in to Omarchy, `./omacvm check --vm NAME --json` until `"ok": true` (entries with `"needs_human": true` are theirs). ## Existing VM - Features: `./omacvm features --vm NAME --json`, then `./omacvm enable|disable FEATURE... --vm NAME --yes`, then check. Listing (features, check, vms) never starts a VM: one that is off is shown from its folder ("running": false). enable, disable and apply start a stopped VM only when it is named with --vm. - CPUs and memory: `./omacvm resources --vm NAME --json` (what it has, the limits, the tiers), then `./omacvm resources --vm NAME --resources TIER` or `--cpus N --memory-gb N`. Parallels, UTM and Fusion VMs must be stopped (exit 3: the person shuts it down); a change applies on the next start. A name in two apps: add `--vm-type`. - Omarchy installed by hand: `./omacvm apply --vm NAME`; exit 3 prints one command for the person to run in the VM's terminal, then apply again. - Update: `./omacvm update` (or `--vm NAME`). - Problems: `./omacvm check --vm NAME --json`, then `AGENTS.md` section 7.