macOS and Linux VMs on Apple Silicon to use in CI and other automations
Go to file
Randolph Voorhies 01d9359fbd Support suspending and resuming Linux VMs
Persist a VZGenericMachineIdentifier in Linux VM configurations and
reuse it when building VZGenericPlatformConfiguration. Saved machine
state is tied to this identifier, so generating a new one prevents
restoration.

Legacy configurations remain loadable but cannot be suspended.
When cloning a stopped legacy Linux VM, initialize the missing identifier
in the clone. Existing identifiers and suspended state remain unchanged.

Linux now conforms to PlatformSuspendable and retains USB keyboard
support in suspendable mode, but omits
VZUSBScreenCoordinatePointingDeviceConfiguration because it passes
save/restore validation but causes restoration to fail.
2026-07-31 13:05:19 -07:00
.ci Fix Tart release signing (#1286) 2026-07-21 10:12:17 -04:00
.github Fix Tart release signing (#1286) 2026-07-21 10:12:17 -04:00
Resources Fix Tart release signing (#1286) 2026-07-21 10:12:17 -04:00
Sources/tart Support suspending and resuming Linux VMs 2026-07-31 13:05:19 -07:00
Tests/TartTests Support suspending and resuming Linux VMs 2026-07-31 13:05:19 -07:00
benchmark Mention macOS Tahoe everywhere instead of macOS Sequoia (#1208) 2026-03-02 08:50:29 -05:00
docs [codex] Publish Tart to openai/homebrew-tools (#1277) 2026-07-16 21:32:18 -04:00
integration-tests docs: clarify that nested virtualization is only for Linux VMs for now (#1233) 2026-05-12 21:45:18 +00:00
scripts Add Liquid Glass icon and sign the whole app bundle (#1216) 2026-03-20 23:19:21 +01:00
.cirrus.yml [codex] Publish Tart to openai/homebrew-tools (#1277) 2026-07-16 21:32:18 -04:00
.editorconfig Switch to OpenTelemetry (#1179) 2026-01-23 12:04:21 +01:00
.gitignore feat: Add disk image format selection with ASIF support (#1094) 2025-06-19 18:27:30 +04:00
.goreleaser.yml Fix Tart release code signing (#1284) 2026-07-17 14:47:15 -04:00
.swiftformat Reformat code idents and introduce the SwiftFormat linter (#339) 2022-11-29 15:56:13 +00:00
CONTRIBUTING.md Update docs after OpenAI move (#1240) 2026-06-05 17:05:23 -07:00
LICENSE Relicense under FSL-1.1-ALv2 (#1238) 2026-06-05 15:37:02 -07:00
PROFILING.md Mention macOS Tahoe everywhere instead of macOS Sequoia (#1208) 2026-03-02 08:50:29 -05:00
Package.resolved Switch back to github.com/open-telemetry/opentelemetry-swift upstream (#1189) 2026-02-02 19:40:24 +01:00
Package.swift Switch back to github.com/open-telemetry/opentelemetry-swift upstream (#1189) 2026-02-02 19:40:24 +01:00
README.md [codex] Publish Tart to openai/homebrew-tools (#1277) 2026-07-16 21:32:18 -04:00
actool.sh Add Liquid Glass icon and sign the whole app bundle (#1216) 2026-03-20 23:19:21 +01:00
mkdocs.yml Update docs after OpenAI move (#1240) 2026-06-05 17:05:23 -07:00

README.md

Tart is a virtualization toolset to build, run and manage macOS and Linux virtual machines (VMs) on Apple Silicon. Built by CI engineers for your automation needs. Here are some highlights of Tart:

  • Tart uses Apple's own Virtualization.Framework for near-native performance.
  • Push/Pull virtual machines from any OCI-compatible container registry.
  • Use Tart Packer Plugin to automate VM creation.
  • Easily integrates with any CI system.

Many companies are using Tart in their internal setups. Here are just a few of them:

Note: If your company or project is using Tart please consider sharing with the community.

Usage

Try running a Tart VM on your Apple Silicon device running macOS 13.0 (Ventura) or later (will download a 25 GB image):

brew install openai/tools/tart
tart clone ghcr.io/cirruslabs/macos-tahoe-base:latest tahoe-base
tart run tahoe-base

Please check the official documentation for more information and/or feel free to use discussions for remaining questions.