Quick Start

Get from a fresh clone to your first screenshot in about 15 minutes.

Prerequisites

  • macOS 14+ on Apple Silicon
  • Xcode 16+ (swift --version should report 6.0+)
  • tartbrew install cirruslabs/cli/tart

That's enough to run macOS VMs. Linux VMs need the same tools; Windows VMs additionally need qemu, swtpm, and .NET 9 — see the full requirements in README.md.

1. Build the CLI

cd cli
swift build -c release

Binary appears at cli/.build/release/testanyware. For convenience, symlink into your PATH:

ln -sf "$PWD/.build/release/testanyware" /usr/local/bin/testanyware

2. Create the macOS golden image (one-time, ~10 minutes)

./provisioner/scripts/vm-create-golden-macos.sh

The script downloads a vanilla macOS Tahoe image, installs the TestAnyware agent, grants accessibility, and finalises the golden. You only need to do this once per host.

3. Start a VM

vmid=$(testanyware vm start --viewer)
export TESTANYWARE_VM_ID="$vmid"   # lets you omit --vm on every command

--viewer opens a macOS VNC viewer window so you can watch the VM boot. You'll see testanyware-<hex8> printed on stdout — that's the instance id.

4. Take your first screenshot

testanyware screenshot -o first.png

Done. Open first.png — that's your VM desktop.

5. Try a few more things

# What's the display size?
testanyware screen-size

# Type into the foreground app
testanyware input key cmd-space         # open Spotlight... wait, that's wrong
testanyware input key space --modifiers cmd
testanyware input type "Terminal"
testanyware input key return

# Run a command inside the VM
testanyware exec "uname -a"

# Look at the accessibility tree
testanyware agent windows

# Find text on screen
testanyware find-text "Terminal"

6. Stop the VM

testanyware vm stop "$TESTANYWARE_VM_ID"
unset TESTANYWARE_VM_ID

Next steps