Assuming TART is already installed, and this file exists: ~/Downloads/Xcode_27_Universal.xip (or Xcode_27.xip renamed to Xcode_27_Universal.xip ... or Xcode_26.6_Universal.xip to use an older version) => download from https://developer.apple.com/download/all/ )
brew updatebrew upgradebrew tap hashicorp/tapbrew trust hashicorp/tapbrew install hashicorp/tap/packerpacker --version(... if/when out-of-date (see hashicorp/homebrew-tap#365 ),brew uninstall hashicorp/tap/packer+brew untap hashicorp/tapand manual install from https://developer.hashicorp.com/packer/install or https://www.packer.io/downloads )git clone https://github.com/danielweck/macos-image-templates.git tart-macos-image-templates_DANIELWECKcd tart-macos-image-templates_DANIELWECK/tart listpacker init templates/vanilla-golden-gate.pkr.hclpacker build templates/vanilla-golden-gate.pkr.hcltart listtart clone golden-gate-vanilla golden-gate-basetart listpacker init "templates/disable-sip-with-username.pkr.hcl"packer build -var vm_name="golden-gate-base" "templates/disable-sip-with-username.pkr.hcl"tart listpacker init templates/base.pkr.hclpacker build -var vm_name="golden-gate-base" templates/base.pkr.hcltart listpacker init "templates/enable-sip-with-username.pkr.hcl"packer build -var vm_name="golden-gate-base" "templates/enable-sip-with-username.pkr.hcl"tart listpacker init templates/xcode.pkr.hclpacker build -var xcode_version="[\"27\"]" -var xcode_components="[]" templates/xcode.pkr.hcl(or26.6instead of27)
xcode_components = \"MetalToolchain\"
==>
xcodebuild -downloadComponent MetalToolchain
==>
xcodebuild: error: Failed fetching catalog for assetType (com.apple.MobileAsset.MetalToolchain)
Repository with Packer templates to build macOS Tart virtual machines to use with self-hosted GitHub Actions runners, Cirrus Runners or any other automation.
The following image variants are currently available:
macos-{golden-gate,tahoe,sequoia,sonoma}-vanilla— a vanilla macOS installation with helpful tweaks such as auto-login, but no additional software preinstalledmacos-{golden-gate,tahoe,sequoia,sonoma}-base— based onmacos-{golden-gate,tahoe,sequoia,sonoma}-vanillaimage, it comes withbrewand other useful software pre-installed, but without Xcodemacos-{golden-gate,tahoe,sequoia,sonoma}-xcode:N— based onmacos-{golden-gate,tahoe,sequoia,sonoma}-baseimage and hasXcode NwithFlutterpre-installedmacos-runner:{golden-gate,tahoe,sequoia,sonoma}— a variant ofxcode:Nwith one or more versions ofXcodepre-installed andxcodestool to switch between them.
See a full list of VMs available here.
Base images include the experimental Tart Metal shim,
based on the Lume team's work.
It is installed at /usr/local/lib/TartMetalCapabilities.dylib but is not
enabled by default, including for the guest agent or tart exec.
Before starting the VM, enable unrestricted virtual-GPU features on the host as the user running Tart:
defaults write com.apple.gpusw.ParavirtualizedGraphics ForceUnrestrictedDeviceFeatureLevel -bool trueRestart an already-running VM after changing that preference. To enable the shim for one command with Apple family 9 and 64 KiB of threadgroup memory:
tart exec my-vm /usr/bin/env \
DYLD_INSERT_LIBRARIES=/usr/local/lib/TartMetalCapabilities.dylib \
TART_METAL_APPLE_FAMILY_MAX=1009 \
/path/to/workloadOmit these environment variables to run normally. Each opted-in process gets
its own settings; TART_METAL_APPLE_FAMILY_MAX=0 disables the capability
override. Protected executables may reject injection, and GPU support depends
on the host, guest, and workload.
Once a new version of Xcode is released, we will initiate a GitHub release which will automatically build and push
a new version of the macos-{golden-gate,tahoe,sequoia}-xcode:N images on supported macOS versions. This generally happens the next weekend after a release.
Please watch this repository releases to get notified about new images.
Some of the images are regularly getting rebuild in order to update the pre-installed packages.
This workflow defines images that are getting rebuilt monthly on the first Saturday of the month.