macOS and Linux VMs on Apple Silicon to use in CI and other automations
Go to file
Fedor Korotkov a2972aa4d9
feat: prioritize pruning of old SHA when pulling updated tags (#1102)
* feat: prioritize pruning of old SHA when pulling updated tags

When pulling a new version of a tagged image (e.g., ghcr.io/cirruslabs/macos-runner:sonoma),
set the access date of the previous SHA to epoch time (1970-01-01). This ensures that the
old SHA will be prioritized for pruning, even if it was accessed more recently than other
cached images.

This helps manage disk space more efficiently by automatically cleaning up superseded
versions of frequently-updated tagged images.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* format

* Review comments

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-07 08:52:05 +00:00
.ci Fixed plist file in version update (#927) 2024-10-29 13:01:47 +04:00
.github Added Code Owners (#328) 2022-11-17 22:57:12 -05:00
Resources Add `NSLocalNetworkUsageDescription` (#1058) 2025-04-18 18:27:32 +04:00
Sources/tart feat: prioritize pruning of old SHA when pulling updated tags (#1102) 2025-07-07 08:52:05 +00:00
Tests/TartTests feat: Add disk image format selection with ASIF support (#1094) 2025-06-19 18:27:30 +04:00
benchmark Bump golang.org/x/crypto from 0.21.0 to 0.35.0 in /benchmark (#1057) 2025-04-18 18:01:55 +04:00
docs docs: new "Bridging the gaps with the Tart Guest Agent" blog post (#1080) 2025-06-01 19:54:45 -04:00
integration-tests integration-tests: downgrade "requests" package to 2.31.0 (#829) 2024-05-21 13:35:33 +00:00
scripts Update docs, examples and CI to Sequoia 2025-05-04 20:49:23 -04:00
.cirrus.yml tart ip: implement --resolver=agent (#1095) 2025-06-19 13:07:06 +04:00
.editorconfig Update dependencies and styles (#12) 2022-03-24 18:54:49 +03:00
.gitignore feat: Add disk image format selection with ASIF support (#1094) 2025-06-19 18:27:30 +04:00
.goreleaser.yml Fix #1004: Wrong binary path in distro (#1005) 2025-01-18 13:32:54 +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 PROFILING.md: document how to profile Tart using time(1) and xctrace(1) (#926) 2024-10-28 18:49:10 +04:00
Package.resolved tart ip: implement --resolver=agent (#1095) 2025-06-19 13:07:06 +04:00
Package.swift tart ip: implement --resolver=agent (#1095) 2025-06-19 13:07:06 +04:00
README.md Update docs, examples and CI to Sequoia 2025-05-04 20:49:23 -04:00
gon.hcl Fix #1004: Wrong binary path in distro (#1005) 2025-01-18 13:32:54 +04:00
mkdocs.yml Improve Orchard docs (#1064) 2025-04-29 18:10:14 +04: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-sequoia-base:latest sequoia-base
tart run sequoia-base

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