macOS Runners

macOS GitHub Actions runners on Apple silicon.

Drop-in macOS runners on dedicated Apple-silicon Macs we own. Change one runs-on label and your Xcode, Swift and fastlane jobs run on a fresh single-tenant VM, at a sixth of GitHub’s macOS minute, billed by the second.

npx sandal migrate --repo your-org/your-repo
.github/workflows/ios.yml−1 +1
build:
- runs-on: macos-15
+ runs-on: sandal-macos-m4
steps:
- uses: actions/checkout@v4
- run: xcodebuild test -scheme App

Same Xcode, same fastlane, same signing. On our Macs, not GitHub’s shared pool.

$0.01per macOS minute
Apple silicondedicated Macs
1 tenantper job
12swarm claim
Xcodepreinstalled
Speed

Faster because
the hardware is faster.

Apple silicon we own, one job at a time, with sticky DerivedData across builds. Medians on public iOS repositories.

Workload Test Comparison

2xFaster
iOS archive
7m 18s
14m 50s
3.5xFaster
Incremental Swift build
2m 38s
9m 12s
2xFaster
XCUITest suite
5m 40s
11m 20s
Sandal GitHub macOS
Labels

Pick it in the workflow file.

Label
Spec
Arch
sandal-macos-m4
8 cores / 16 GB
arm64
sandal-macos-m4-pro
10 cores / 32 GB
arm64

Xcode 16.4, 16.2 and 15.4 on the image, selectable with xcode-select. iOS 17 and 18 simulator runtimes ship with it. Disk is 150 GB.

Owned Macs

No hosted-Mac markup.

We buy and rack Apple silicon rather than renting EC2 Macs or reselling GitHub’s pool. That is why a minute is $0.01 against GitHub’s $0.062 and Depot’s $0.08.

Ephemeral

A clean keychain every job.

Each job gets a fresh VM from a golden image through Virtualization.framework, deleted at the end. Provisioning profiles and derived data never cross between builds.

Preinstalled

Xcode and the toolchain, ready.

Homebrew, fastlane, CocoaPods and a warm SwiftPM cache are on the image. Warm minis claim in 12 seconds instead of waiting on a full boot and login.

Cost

A sixth of GitHub’s macOS minute.

GitHub bills macOS at ten times a Linux minute. We bill it like the sandbox it is, the same Apple silicon, per second, on hardware we own.

Runner
GitHub macOS / min
Sandal / min
M-series · 8 cores / 16 GB
$0.062
$0.01
M-series Pro · 10 cores / 32 GB
$0.12
$0.02

GitHub-hosted macOS is $0.062/min standard and $0.12/min large after the Jan 2026 cut. Billed per second, no minute rounding. Prefer a build API over a runner? Xcode Builds →All runners, every OS →

Plans

One balance. Every machine you run.

Runners draw from the same credit pool as your sandboxes, simulators and Xcode builds, billed by the second at one published rate card.

Starter

For a solo build or a first agent in production.

$20/ month

$20 of usage credits

≈ 550 VM-hours or 33,000 CI minutes

Get started
  • 20 concurrent machines
  • Committed in-plan rates on every product
  • Linux & Windows, sandboxes, VMs, runners
  • Per-second billing, paused is free
  • Full API, SDKs, CLI & MCP server
  • Unlimited seats
  • Community support
Most popular

Team

Apple silicon unlocked, and a balance that rolls over.

$100/ month

$100 of usage credits

≈ 2,700 VM-hours or 10,000 Mac build minutes

Get started
  • 100 concurrent machines
  • Everything in Starter, plus:
  • macOS, iOS/Android simulators & Xcode builds
  • Unused credits roll over one month
  • Usage exports & per-second line items
  • Email support

Business

Higher ceilings for a team leaning on the fleet daily.

$250/ month

$250 of usage credits

≈ 6,900 VM-hours or 25,000 Mac build minutes

Get started
  • 300 concurrent machines
  • Everything in Team, plus:
  • Raised concurrency & start rate
  • Priority support & shared Slack channel
  • Single sign-on (SAML / OIDC)
  • Volume credit rate

Enterprise

Dedicated capacity, your compliance surface, one invoice.

Custom

Committed volume rate

Committed volume rate, negotiated per account

Talk to sales
  • Reserved bare-metal capacity
  • BYOC or self-host the control plane
  • SSO & SCIM, audit logs, data residency
  • Annual invoicing, MSA, DPA
  • Support SLA & solutions engineering
  • Custom regions on request

Every plan spends its credit pool first, then usage keeps flowing and bills per second at your committed in-plan rate, no hard stop mid-run, no forced upgrade. Without a plan you pay the on-demand rate instead. Prices are illustrative pending final list pricing; the per-second billing model is final.

Rate card

The runner rate card.

Linux

MachineIn-plan / minuteOn-demand / minute
2 vCPU / 4 GB$0.0003$0.0004
4 vCPU / 8 GB$0.0006$0.0009
8 vCPU / 16 GB$0.0012$0.0018
16 vCPU / 32 GB$0.0024$0.0036
32 vCPU / 64 GB$0.0048$0.0072
64 vCPU / 128 GB$0.0096$0.014

Windows

MachineIn-plan / minuteOn-demand / minute
2 vCPU / 4 GB$0.0006$0.0009
4 vCPU / 8 GB$0.0012$0.0018
8 vCPU / 16 GB$0.0024$0.0036
16 vCPU / 32 GB$0.0048$0.0072
32 vCPU / 64 GB$0.0096$0.014
64 vCPU / 128 GB$0.019$0.029

macOS · Apple silicon

MachineIn-plan / minuteOn-demand / minute
M-series · 4 cores / 8 GB$0.01$0.015
M-series Pro · 8 cores / 16 GB$0.02$0.03

Linux runners are the VM ladder priced per minute; Windows is 2x. macOS runners are dedicated Apple-silicon Mac minis. On-demand is 1.5× the in-plan rate. All usage bills by the second; paused machines are not billed.

Get started

Give your AI agents somewhere to run today.

Your agents get their own machines across Linux, macOS, Windows, iOS and Xcode in milliseconds, and you stop paying for idle.

npx sandal init