macOS and Linux VMs on Apple Silicon to use in CI and other automations
Go to file
Nikolay Edigaryev eaec015edf
Fetcher: re-use URLSession (#976)
Otherwise we start to periodically get RST's from GitHub, possibly
because of too many connection opens, which has an effect of cancelling
previously received bytes.

These RST's can be observed in tcpdump/Wireshark or Console, emitted
from the libusrtcp.dylib library, com.apple.network subsystem, for the
Tart process:

>tcp_input [C59.1.1.1:3] flags=[R] seq=1805021659, ack=0, win=0 state=CLOSED rcv_nxt=1805021659, snd_una=1752355607

You can also observe the "Received Bytes" in "Activity Monitor" for
the Tart process while pulling ghcr.io/cirruslabs/macos-runner:sequoia,
and this value will periodically decrease.
2024-12-17 23:41:24 +04: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 Set application category (#940) 2024-11-07 21:12:30 +00:00
Sources/tart Fetcher: re-use URLSession (#976) 2024-12-17 23:41:24 +04:00
Tests/TartTests RegistryRunner: explicitly listen on localhost (#956) 2024-11-21 09:24:37 -05:00
benchmark New benchmark results on AWS mac2.metal for Sonoma and Sequoia guests (#965) 2024-12-04 16:03:33 -05:00
docs FAQ: document /var/db/dhcpd_leases and its removal (#957) 2024-11-21 22:02:21 +04:00
integration-tests integration-tests: downgrade "requests" package to 2.31.0 (#829) 2024-05-21 13:35:33 +00:00
scripts Fancy Social Cards (#830) 2024-05-22 16:07:08 +04:00
.cirrus.yml Optimize DiskV2 Deduplication (#878) 2024-08-05 12:24:31 -04:00
.editorconfig Update dependencies and styles (#12) 2022-03-24 18:54:49 +03:00
.gitignore Fancy Social Cards (#830) 2024-05-22 16:07:08 +04:00
.goreleaser.yml Generate shell completions by calling tart.app executable (#775) 2024-04-03 01:22:52 +02:00
.swiftformat Reformat code idents and introduce the SwiftFormat linter (#339) 2022-11-29 15:56:13 +00:00
CONTRIBUTING.md Add CONTRIBUTING.md? (#575) 2023-08-03 13:10:34 -04: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 pull: 284% faster pulls with default concurrency setting (#970) 2024-12-11 21:48:59 +04:00
Package.swift tart pull: 284% faster pulls with default concurrency setting (#970) 2024-12-11 21:48:59 +04:00
README.md Update testimonials to focus on Tart (#876) 2024-08-01 17:09:08 +04:00
gon.hcl Build x86 binary (#716) 2024-01-26 13:09:05 +00:00
mkdocs.yml Orchard documentation (#897) 2024-08-28 00:09:57 +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-sonoma-base:latest sonoma-base
tart run sonoma-base

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