TUI Wizard
The TUI wizard guides you through macOS VM creation in 6 steps. Launch it by running the install script on your Proxmox host:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/lucid-fabrics/osx-proxmox-next/main/install.sh)"
Step 1: Preflight Checks
Automatically validates your Proxmox host before proceeding.
| Check | What It Verifies |
|---|---|
| CPU vendor | Intel or AMD detected, applies correct config |
| Virtualization | VT-x / AMD-V enabled |
| Root access | Running as root on Proxmox |
| Dependencies | Required packages installed |
| TSC flags | constant_tsc and nonstop_tsc for clock stability |
No user input required. The wizard auto-detects your hardware and moves forward.
Xeon and pre-Skylake Intel CPUs are detected automatically. Xeon keeps -cpu host, older consumer Intel gets Penryn mode with e1000 NIC.
Step 2: Choose macOS Version
Select your target macOS version from the list.
| macOS | Apple Services | Notes |
|---|---|---|
| Ventura 13 | Works | Lightweight, good for older hardware |
| Sonoma 14 | Works | Best tested, most reliable |
| Sequoia 15 | Works (with --apple-services) | Kernel patch applied automatically |
| Tahoe 26 | Works (with --apple-services) | Kernel patch applied automatically |
SMBIOS identity (serial, UUID, model) is auto-generated when you select a version.
Step 3: Select Storage
Choose a storage target from auto-detected Proxmox storage pools. The wizard scans for available pools (e.g., local-lvm, NAS mounts under /mnt/pve/).
Step 4: VM Configuration
Review and edit VM settings with auto-filled defaults based on your hardware.
| Field | Default | Description |
|---|---|---|
| VMID | Next available | Must be unique, 100-999999 |
| Name | macos-{version} | VM display name |
| CPU Cores | Auto-detected | Must be power of 2 (2, 4, 8, 16) |
| Memory (MB) | Auto-detected | Minimum 4096 MB |
| Disk (GB) | Varies by version (80-160) | Minimum 64 GB |
| Network Bridge | vmbr0 | Proxmox bridge interface |
Additional options available in this step:
- Generate SMBIOS -- regenerate identity values
- Enable Apple Services -- adds
vmgenid, static MAC, and PlatformInfo patching - Verbose Boot -- shows kernel log instead of Apple logo
- Existing UUID -- enter a UUID to preserve identity for re-runs
macOS requires power-of-2 CPU core counts. Non-power-of-2 values (6, 12) can cause the kernel to hang at the Apple logo.
Step 5: Dry Run
The wizard auto-downloads any missing assets (OpenCore ISO, recovery image), then previews every qm command that will be executed.
This step shows:
- Each command with its title and risk level
- The full
qm create,qm set, andqm importdisksequence - SMBIOS values that will be applied
- Boot order configuration
Nothing is executed yet. Review the commands before proceeding.
Smart caching: OpenCore and recovery images are downloaded once and reused. Creating a second VM with the same macOS version skips the download entirely.
Step 6: Install
Executes all commands from the dry-run preview:
- Creates the VM with
qm create - Builds the OpenCore bootloader (GPT + EFI partition)
- Imports OpenCore and recovery disks via
qm importdisk - Configures boot order (
ide2;virtio0;ide0) - Starts the VM
After completion, open the VM console via Proxmox web UI (noVNC) to continue macOS installation.
Post-Install
After macOS finishes installing, fix the boot order so the main disk boots first:
qm set <vmid> --boot order=virtio0;ide0
Manage Mode
After creating VMs, launch the wizard with the --manage flag to manage existing macOS VMs:
osx-next --manage
Manage mode lists all macOS VMs detected on the host (identified by isa-applesmc in their config) and provides three actions per VM:
| Action | What It Does |
|---|---|
| Edit | Opens an edit form to change cores, memory, name, network bridge, or disk size. Changes are previewed before applying. |
| Start / Stop | Toggles the VM power state. |
| Destroy | Stops and destroys the VM. A config snapshot is saved to generated/snapshots/ before destruction. Rollback hints are shown on failure. |
The edit form in manage mode behaves the same as the edit subcommand: the VM is stopped before changes are applied, existing MAC address and NIC model are preserved when changing the bridge, and the VM can optionally be restarted after.