Isolated macOS workspaces for agents, projects, and clients
Website • Documentation • Download
GhostVM is a native macOS app for creating and managing macOS virtual machines on Apple Silicon using Apple's Virtualization.framework. Each VM is stored as a self-contained .GhostVM bundle that you can copy, move, or back up like any file.
Perfect for: AI agent sandboxing, disposable dev environments, testing across macOS versions, and isolating client work.
- Native Performance — Near-native speed with Apple's Virtualization.framework
- Self-Contained Bundles — Each workspace is a portable
.GhostVMfolder - Snapshots & Clones — Checkpoint and clone instantly with APFS copy-on-write
- Deep Host Integration — Clipboard, files, folders, and automatic port forwarding
- Scriptable — Full CLI (
vmctl) and Unix socket API for automation
- Download the latest DMG from the releases page
- Open the DMG and drag GhostVM.app to your Applications folder
- Launch GhostVM and create your first workspace
Requirements: macOS 15+ (Sequoia) on Apple Silicon (M1 or later)
The vmctl command-line tool provides full control over GhostVM virtual machines:
# Create and install a macOS VM
vmctl init ~/VMs/dev.GhostVM --cpus 6 --memory 16 --disk 128
vmctl install ~/VMs/dev.GhostVM
vmctl start ~/VMs/dev.GhostVM
# Manage snapshots
vmctl snapshot ~/VMs/dev.GhostVM create clean-state
vmctl snapshot ~/VMs/dev.GhostVM revert clean-state
# Remote commands (requires GhostTools in guest)
vmctl remote --name dev exec uname -a
vmctl remote --name dev clipboard get
vmctl remote --name dev appsAll Commands
| Command | Description |
|---|---|
init <bundle> |
Create a new VM bundle (--cpus, --memory, --disk, --restore-image) |
install <bundle> |
Install macOS from a restore image |
start <bundle> |
Launch the VM (--headless, --shared-folder) |
stop <bundle> |
Graceful shutdown |
suspend / resume |
Suspend and resume VM state |
status <bundle> |
Report running state and config |
snapshot <bundle> list|create|revert|delete |
Manage snapshots |
list |
List all VMs and their status |
remote --name <vm> exec <command> |
Run a shell command in the guest |
remote --name <vm> clipboard get|set |
Read or write the guest clipboard |
remote --name <vm> apps |
List running guest applications |
Requirements: Xcode 15+ and XcodeGen
brew install xcodegen
git clone https://github.com/groundwater/GhostVM.git
cd GhostVM
make appBuild Targets
| Target | Description |
|---|---|
make app |
Build GhostVM.app |
make cli |
Build vmctl CLI |
make test |
Run unit tests |
make run |
Build and run attached to terminal |
make launch |
Build and launch detached |
make dist |
Create distribution DMG |
make clean |
Remove build artifacts |
- VMs use NAT networking via
VZNATNetworkDeviceAttachment - Shared folders use VirtioFS via
VZVirtioFileSystemDeviceConfiguration - GhostTools provides clipboard sync, file transfer, and port discovery
- Apple's EULA requires macOS guests to run on Apple-branded hardware
.
├── Makefile # Build orchestration
├── macOS/
│ ├── project.yml # XcodeGen project definition
│ ├── GhostVM/ # Main SwiftUI app (VM manager/launcher)
│ ├── GhostVMHelper/ # Per-VM helper process (display, toolbar, services)
│ ├── GhostVMKit/ # Shared framework (types, VM controller, utilities)
│ ├── GhostTools/ # Guest agent (runs inside VM, vsock communication)
│ └── GhostVMTests/ # Unit tests
└── Website/ # Documentation site (ghostvm.org)
Source code: License not yet determined.
Binary (DMG): The signed DMG distributed via GitHub Releases is free to use for any purpose. It is provided "as is", without warranty of any kind, express or implied. The authors are not liable for any claim, damages, or other liability arising from the use of the software.
