Skip to content

groundwater/GhostVM

Repository files navigation

GhostVM icon

GhostVM

Isolated macOS workspaces for agents, projects, and clients

Latest Release   Platform   Architecture

WebsiteDocumentationDownload


GhostVM running VS Code inside a virtual machine

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.

Features

  • Native Performance — Near-native speed with Apple's Virtualization.framework
  • Self-Contained Bundles — Each workspace is a portable .GhostVM folder
  • 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

Installation

Download GhostVM

  1. Download the latest DMG from the releases page
  2. Open the DMG and drag GhostVM.app to your Applications folder
  3. Launch GhostVM and create your first workspace

Requirements: macOS 15+ (Sequoia) on Apple Silicon (M1 or later)

CLI Usage

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 apps
All 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

Building from Source

Requirements: Xcode 15+ and XcodeGen

brew install xcodegen

git clone https://github.com/groundwater/GhostVM.git
cd GhostVM
make app
Build 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

Notes

  • 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

Project Structure

.
├── 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)

License

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.