Compare · Cirrus Runners

Keep your Tart images. Bring your own Macs.

Cirrus Runners takes no new customers. ushr runs the same Tart VM images on Macs that you own, and charges a flat monthly price for up to 3 hosts.

What changed

Cirrus Labs announced on 7 April 2026 that it joined OpenAI. Cirrus CI stopped on 1 June 2026. Cirrus Runners takes no new customers. Existing contracts run to the end of their term.

Tart moved to github.com/openai/tart, and OpenAI maintains it. On 5 June 2026 Tart changed to the Functional Source License 1.1 (FSL-1.1-ALv2). Each Tart version becomes Apache-2.0 two years after its release. The current release is 2.40.1, from the openai/tools Homebrew tap. The old cirruslabs/cli tap stopped at 2.32.1. Your Tart images continue to work with the tart CLI.

Source: Cirrus Labs announcement, 7 April 2026.

How ushr is different

Cirrus Runners supplies managed Apple Silicon macOS runners and Linux runners to existing customers. ushr does not supply hardware. You supply the Macs and Linux machines. ushr schedules GitHub Actions jobs onto them and starts a fresh VM for each job.

side by side
Cirrus Runnersushr
Hardware, power, networkSupplied by Cirrus LabsYou buy and run your own machines
Price$150 per runner per monthUS$49 per month for up to 3 hosts, US$19 per extra host, hardware not included
New customers (as of October 2026)NoYes
VM imagesTartTart, Lume or Docker

The ushr free tier covers 1 host and 1 GitHub scope (an organisation, or a repository on a personal account). A paid workspace serves any number of scopes.

Price: per runner vs per host

These figures compare subscriptions only. The ushr column does not include the cost of the Macs, power or network.

Cirrus Runners charges a flat $150 for each concurrent runner per month. ushr Pro charges US$49 per month for up to 3 hosts, and US$19 per month for each extra host. A host can run more than one runner at a time.

The macOS licence allows up to 2 extra macOS instances in VMs on each Mac that you own or control. The licence permits these VMs for software development, testing during software development, macOS Server, or personal non-commercial use. It does not permit service bureau, time-sharing or similar services. macOS enforces the same limit of 2 VMs. One Mac host therefore runs up to 2 concurrent macOS runners.

Source for the Cirrus price: cirrus-runners.app/pricing (live page) and cirrus-runners.app, archived January 2026. These are Cirrus list prices. Cirrus also offers 15% off for annual billing and 50% off for nonprofits.

monthly subscription, macOS runners
Concurrent runnersCirrus Runnersushr subscription (hardware not included)Macs you need
22 × $150 = $3001 host = US$0 (free tier)1
44 × $150 = $6002 hosts = US$49 (Pro, up to 3 hosts)2
88 × $150 = $1,2004 hosts = US$49 + US$19 = US$684

The free tier covers 1 host and 1 GitHub scope (an organisation, or a repository on a personal account).

Migration guide

1. Install ushr on each Mac

$ curl -fsSL https://get.ushr.io | sh
$ ushr login

ushr login installs Tart from the openai/tools Homebrew tap if it is missing, enrolls the host, creates the GitHub App and starts the agent. The App key stays on the host.

2. Use the Tart image you already use

The Cirrus macos-runner images are Tart images. The ushr agent clones the image for each job and installs the Actions runner into the clone. If no image is present, ushr login offers to pull ghcr.io/cirruslabs/macos-runner:tahoe. To use a different tag or your own image, set it in ~/.config/ushr/agent.yaml:

driver:
  type: tart
  image: ghcr.io/cirruslabs/macos-runner:sonoma
  capacity: 2

3. Change the runs-on labels

Cirrus Runners jobs target an image name as the label. ushr runners advertise the standard self-hosted labels. Change each Cirrus label to the matching ushr label set:

label mapping
runs-on todayruns-on with ushr
ghcr.io/cirruslabs/macos-runner:<tag>[self-hosted, macOS, ARM64]
macos-14, macos-15, macos-latest[self-hosted, macOS, ARM64]
ubuntu-24.04[self-hosted, Linux, X64]
ubuntu-24.04-arm[self-hosted, Linux, ARM64]

ushr init rewrites GitHub-hosted labels such as macos-latest and ubuntu-24.04 in a repo's workflows. It does not change Cirrus image labels. Change those by hand, then run ushr init --dry-run to see what else it would rewrite.

$ ushr init --dry-run
==> .github/workflows/ci.yml: would rewrite 2 runs-on target(s)
==> Dry run — no files written.

4. Cut over before your contract ends

Your Cirrus Runners contract runs to term. Move one repo at a time. Each job goes to the runner that matches its labels, so a moved repo runs on ushr while the others stay on Cirrus Runners.

Next steps

Read how ushr keeps your GitHub credentials on your hosts on the security page. For the GitHub self-hosted runner fee, read the runner fee explainer.