-
Notifications
You must be signed in to change notification settings - Fork 0
Building Base VMs
A Base VM is a fully provisioned macOS image that serves as the source for cloning. You build one once, then clone it into as many VMs as you need — each clone starts from a known-good state in seconds.
Oven uses Packer with the Tart Packer plugin to build base images.
IPSW (macOS firmware)
│
▼
Packer template (.pkr.hcl)
+ optional variables (.pkrvars.hcl)
+ building blocks (provisioners)
│
▼
packer init → packer validate → packer build
│
▼
Base VM (local Tart image)
│
▼
(optional) Push to OCI registry
- Navigate to Base VMs in the sidebar.
- Click + to open the New Base VM sheet.
- Choose a build path:
Select an existing template from the Template Library. Oven ships with vanilla templates from CirrusLabs for:
- macOS Tahoe (26)
- macOS Sequoia (15)
- macOS Sonoma (14)
- macOS Ventura (13)
- macOS Monterey (12)
Configure:
- Display Name — human-readable name for this base image
- Tart Name — identifier on disk
- macOS Version — must match the template
-
Template Variables — if the template has a
.pkrvars.hclcompanion, link it here - Building Blocks — add reusable provisioner snippets (see below)
For advanced users who want full HCL control:
- Choose Manual Build.
- Configure hardware (CPU, memory, disk), OS version, and IPSW source.
- Toggle provisioning options individually (see Provisioning Options below).
- Oven generates the HCL on the fly from your selections.
These toggles are available in both template-based and manual builds:
| Option | What It Does |
|---|---|
| Passwordless Sudo | Configures the build user to run sudo without a password prompt |
| Auto Login | Sets the user account to log in automatically on boot |
| Install Homebrew | Installs the Homebrew package manager |
| Install Xcode CLI Tools | Runs xcode-select --install
|
| Enable SSH | Enables the SSH server (Remote Login) in macOS |
| Disable Screen Lock | Turns off the screen lock / screensaver |
| Disable Sleep | Prevents the VM from sleeping |
| Disable Spotlight | Turns off Spotlight indexing |
| Safari Automation | Enables WebDriver support for Safari |
| Install Tart Guest Agent | Installs the Tart guest agent for host↔VM communication |
| Install Rosetta | Installs Rosetta 2 (Apple Silicon VMs only) |
| Random Computer Name | Sets a random hostname on each boot (useful for MDM enrollment) |
These correspond to Building Blocks in the template system and can be combined freely.
Building Blocks are reusable HCL provisioner snippets you can attach to any build. Oven ships 10 seeded blocks:
- Passwordless Sudo
- Auto Login
- Homebrew
- Xcode CLI Tools
- SSH
- Disable Spotlight
- Screen Lock
- Safari Automation
- Random Computer Name
- File Upload
You can also create custom building blocks. See Templates & Building Blocks for details.
Oven automates the macOS Setup Assistant by sending keystroke sequences via Packer's boot_command. You can customize these sequences in the Boot Commands editor within a base VM's configuration.
The default boot command block navigates through the Setup Assistant screens — language selection, network, Apple ID skip, license agreement, account creation — and is tuned for each macOS version.
- Open the base VM in the detail pane.
- Click Build.
- Oven runs
packer init,packer validate, thenpacker buildin sequence. - Live output streams into the Build Log panel in real time.
- A notification fires when the build completes or fails (if Notifications are configured).
In Preferences → Build, you can configure what happens after a successful build:
- Do Nothing (default)
- Lock Screen
- Shut Down Mac
Before running a full build, click Validate in the detail pane. Oven runs packer validate and shows any errors inline. This is faster than a full build for catching HCL syntax or variable issues. Only syntax is validated. Boot commands and building blocks can fail as packer validate doesn't catch these issues.
Each base VM keeps a history of past builds. In the detail pane, open the Build History tab to see:
- Build date and time
- macOS version built
- Duration
- Success or failure
Once built, the base VM appears in the Base VMs list with a status badge. From there you can:
- Clone it into one or more VMs
- Push it to an OCI registry to share with teammates — see OCI Registry
- Rebuild it to pick up a newer macOS patch release
| Problem | Likely Cause | Fix |
|---|---|---|
| Build fails immediately | Missing dependency | Check Preferences → Tools; try re-downloading tools |
packer validate errors |
HCL syntax issue | Open the template in the HCL editor and look for red markers |
| Build hangs at Setup Assistant | Boot command timing | Adjust boot command delays or use a newer template version |
| IPSW download fails | Network or ipsw.me outage | Try switching to mist-cli in Preferences → Build |
| Packer plugin not found | Plugin not initialized | Run Validate first — it triggers packer init which downloads the plugin |
Oven
Using Oven
Integrations
Advanced
Sources