macOS and Linux VMs on Apple Silicon to use in CI and other automations
Go to file
Sean McLoughlin 3f1624e31a fix(control-socket): use .path instead of .path() for stale socket cleanup
Use URL's .path property instead of .path() method when removing stale
control sockets in ControlSocket.run(). The .path() method returns only
the relative component ('control.sock') while .path resolves to the
full absolute path. Since the cwd change happens after the cleanup,
removeItem silently failed to find the socket.

Add unit tests verifying controlSocketURL resolves correctly for both
absolute cleanup and relative binding use cases.

Fixes: https://github.com/cirruslabs/tart/issues/1220
2026-05-12 23:54:42 +02:00
.ci Fixed plist file in version update (#927) 2024-10-29 13:01:47 +04:00
.github Add build workflow for testing (#1180) 2026-01-23 09:41:13 -05:00
Resources Add Liquid Glass icon and sign the whole app bundle (#1216) 2026-03-20 23:19:21 +01:00
Sources/tart fix(control-socket): use .path instead of .path() for stale socket cleanup 2026-05-12 23:54:42 +02:00
Tests/TartTests fix(control-socket): use .path instead of .path() for stale socket cleanup 2026-05-12 23:54:42 +02:00
benchmark Mention macOS Tahoe everywhere instead of macOS Sequoia (#1208) 2026-03-02 08:50:29 -05:00
docs docs: clarify that nested virtualization is only for Linux VMs for now (#1233) 2026-05-12 21:45:18 +00: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 Skip integration test gate for release (#1229) 2026-04-11 22:33:36 -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 Move brew completions to post_install (#1227) 2026-04-11 22:26:52 -04:00
.swiftformat Reformat code idents and introduce the SwiftFormat linter (#339) 2022-11-29 15:56:13 +00:00
CONTRIBUTING.md feat: prioritize pruning of old SHA when pulling updated tags (#1102) 2025-07-07 08:52:05 +00:00
LICENSE Relicensed under Fair Source License (#415) 2023-02-28 12:22:25 -05: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 Update README example to use macOS Tahoe (#1101) 2025-07-07 13:50:16 +04:00
actool.sh Add Liquid Glass icon and sign the whole app bundle (#1216) 2026-03-20 23:19:21 +01:00
gon.hcl Add Liquid Glass icon and sign the whole app bundle (#1216) 2026-03-20 23:19:21 +01:00
mkdocs.yml docs: migrate "Managing VMs" section to "Quick Start" (#1196) 2026-02-13 05:18:14 -05: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.

Tart powers Cirrus Runners service — a drop-in replacement for the standard GitHub-hosted runners, offering 2-3 times better performance for a fraction of the price.

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 cirruslabs/cli/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.