macOS Runners for GitHub Actions: Sizes and Pricing
WarpBuild macOS runners for GitHub Actions run on Apple Silicon M4 Pro and M5 Pro hosts in 6 vCPU and 12 vCPU sizes at $0.08 and $0.16 a minute. Labels, specs, rates and concurrency.
Last verified:
WarpBuild runs GitHub Actions macOS runners on Apple Silicon M4 Pro and M5 Pro hosts, and macOS concurrency limits can be raised through support. The 6 vCPU size has 14GB memory and a 120GB SSD at $0.08 per minute, and the 12 vCPU size has 28GB and a 270GB SSD at $0.16 per minute (cloud runners docs, pricing). Five labels cover macOS 26, 15 and 14.
Switch a job with one runs-on change.
Which macOS runner labels does WarpBuild offer?
WarpBuild registers five macOS labels against your GitHub organization, on macOS 26, macOS 15 and macOS 14. All of them run on Apple Silicon with ARM64 architecture, with these specs and rates:
| Runner label | OS | vCPU | Memory | Storage | Rate | Alias |
|---|---|---|---|---|---|---|
warp-macos-26-arm64-6x | macOS 26 | 6 | 14GB | 120GB SSD | $0.08/minute | none |
warp-macos-26-arm64-12x | macOS 26 | 12 | 28GB | 270GB SSD | $0.16/minute | none |
warp-macos-15-arm64-6x | macOS 15 | 6 | 14GB | 120GB SSD | $0.08/minute | warp-macos-latest-arm64-6x |
warp-macos-15-arm64-12x | macOS 15 | 12 | 28GB | 270GB SSD | $0.16/minute | warp-macos-latest-arm64-12x |
warp-macos-14-arm64-6x | macOS 14 | 6 | 14GB | 120GB SSD | $0.08/minute | none |
The label format is warp-macos-<os version>-arm64-<size>x. The OS part is the macOS major version or the word latest, the architecture part is always arm64 on macOS, and the size part is the vCPU count. macOS 14 has the 6x size only, and every other macOS image has both sizes.
What the two sizes give a job
The 12x size doubles the cores, doubles the memory to 28GB, and raises disk from 120GB to 270GB (cloud runners documentation). Derived data, resolved Swift packages, several simulator runtimes and an app archive add up quickly. For a size-by-workload guide, see macOS Runner Sizes and Configurations for GitHub Actions.
Which Apple Silicon chips run WarpBuild macOS runners?
The hosts are Apple M4 Pro and M5 Pro machines with ARM64 architecture. These runners have the same tooling preinstalled as the GitHub-hosted macOS runners, so they work as drop-in replacements. The preinstalled software reference links the upstream readme for each macOS image, so you can compare a tool version before you migrate.
Xcode coverage on the macOS 26 image
The warp-macos-26-arm64-6x and warp-macos-26-arm64-12x runners ship Xcode 27.0 (build 27A266a) in addition to the Xcode versions in the upstream GitHub macOS 26 image. Xcode 27.0 comes with these simulator runtimes:
| Platform | Simulator runtime |
|---|---|
| iOS | 27.0 (24A434) |
| tvOS | 27.0 (24J360) |
| watchOS | 27.0 (24R362) |
| visionOS | 27.0 (24M362) |
Xcode 27.0 is a WarpBuild addition on top of the upstream image and is maintained until the official macOS 27 images are released. For the full Xcode list and the simulator runtimes on macOS 15 and macOS 14, see Xcode Image Coverage on macOS GitHub Actions Runners.
macOS 13 runners were removed on June 8, 2026, so workflows that still use a macOS 13 label need to move to macOS 14, macOS 15 or macOS 26.
What macOS runners do not support
macOS runners do not support nested virtualization and cannot run Docker. Container builds belong on Linux runners or on remote Docker builders. A repository that builds both an iOS app and a service image needs two jobs on two runner types.
Snapshot runners are not supported on macOS. Keep dependency caching on actions/cache with a key built from Package.resolved or your Podfile.lock.
Every runner is an ephemeral virtual machine. It is allocated when a job starts and destroyed when the workflow is complete, so nothing carries over from one build to the next.
How much macOS concurrency can you get?
macOS concurrency limits can be raised through support. If your workflows need more macOS jobs running at the same time, contact [email protected]. The fleet includes 200 M5 Pro Macs with more on the way.
What do WarpBuild macOS runners cost against GitHub-hosted macOS runners?
WarpBuild pricing for macOS is $0.08 per minute for the 6 vCPU runner and $0.16 per minute for the 12 vCPU runner, and CI runners are billed per minute. GitHub lists its 5-core M2 Pro larger runner (macos-latest-xlarge) at $0.102 per minute. That makes the WarpBuild 6 vCPU runner 22% cheaper per minute than macos-latest-xlarge.
| Provider | Runner | Chip | vCPU (cores) | Rate | Rate per vCPU-minute |
|---|---|---|---|---|---|
| WarpBuild | warp-macos-latest-arm64-6x | M4 Pro or M5 Pro | 6 | $0.08/minute | $0.0133 |
| WarpBuild | warp-macos-latest-arm64-12x | M4 Pro or M5 Pro | 12 | $0.16/minute | $0.0133 |
| GitHub-hosted larger | macos-latest-xlarge | M2 Pro | 5 | $0.102/minute | $0.0204 |
| GitHub-hosted standard | macos-latest | M1 | 3 | $0.062/minute | $0.0207 |
Here is how the numbers in the table are calculated:
- Against
macos-latest-xlarge, the 6 vCPU runner is $0.022 less per minute and has 6 vCPU against 5. ($0.102 - $0.08) / $0.102 = 21.6%, which rounds to 22%. - Per vCPU, $0.08 / 6 and $0.16 / 12 are both $0.0133 per vCPU-minute. The size choice changes speed, not the price per core.
macos-latest-xlargeis $0.102 / 5 = $0.0204 per vCPU-minute, so WarpBuild is 35% lower per vCPU-minute.
Example monthly cost for an iOS team
This is an example with assumed numbers. An iOS team runs 60 pull request builds each weekday, and each build-and-test job takes 14 minutes.
- 60 jobs x 14 minutes = 840 minutes per weekday.
- 840 minutes x 21 working days = 17,640 macOS minutes per month.
- On
warp-macos-latest-arm64-6x, 17,640 x $0.08 = $1,411.20 per month. - On
macos-latest-xlargeat GitHub's list rate, 17,640 x $0.102 = $1,799.28 per month. - The difference is $388.08 per month, or $4,656.96 over twelve months at the same volume.
The example uses the same job duration on both machines, so it does not count any time saved by the extra core. To use your own job durations, see What macOS Runners Cost on GitHub Actions.
How do you move a GitHub Actions macOS job to WarpBuild?
Change runs-on to a WarpBuild macOS label. The rest of the workflow file stays the same.
name: ios-pull-request
on:
pull_request:
branches: [main]
jobs:
build-and-test:
runs-on: warp-macos-15-arm64-6x
steps:
- uses: actions/checkout@v7
- name: Print the toolchain
run: xcodebuild -version
- name: Cache SwiftPM
uses: actions/cache@v6
with:
path: ~/Library/Caches/org.swift.swiftpm
key: spm-${{ hashFiles('**/Package.resolved') }}
- name: Resolve packages
run: xcodebuild -resolvePackageDependencies -project App.xcodeproj
- name: Build for testing
run: |
xcodebuild build-for-testing \
-project App.xcodeproj \
-scheme App \
-destination 'generic/platform=iOS Simulator' \
-resultBundlePath TestResults.xcresult
- uses: actions/upload-artifact@v7
if: always()
with:
name: xcresult
path: TestResults.xcresultFor an existing workflow on GitHub-hosted macOS runners, the migration is one line:
jobs:
build:
- runs-on: macos-latest-xlarge
+ runs-on: warp-macos-latest-arm64-6xThe checkout, cache and xcodebuild steps keep working without changes. For pipeline details, see iOS Builds on GitHub Actions with macOS Runners and Swift Package Builds on GitHub Actions.
How the latest labels resolve
warp-macos-latest-arm64-6x resolves to warp-macos-15-arm64-6x, and warp-macos-latest-arm64-12x resolves to warp-macos-15-arm64-12x. The latest tag points to macOS 15.
An alias moves when the tag moves, which suits pull request jobs that should use the current image. Release pipelines that sign and notarize against a fixed toolchain should pin an explicit version:
jobs:
pr-checks:
runs-on: warp-macos-latest-arm64-6x # follows macOS 15 today
release-build:
runs-on: warp-macos-26-arm64-12x # pinned, moves only when you edit this lineTesting several macOS versions in one workflow
A matrix over labels shows whether a new macOS image breaks a build before the alias moves:
jobs:
os-compatibility:
strategy:
fail-fast: false
matrix:
runner:
- warp-macos-26-arm64-12x
- warp-macos-15-arm64-12x
- warp-macos-14-arm64-6x
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v7
- run: sw_vers
- run: xcodebuild -version
- run: swift build -c release
- run: swift testRun it weekly on a schedule, and a macOS 26 regression shows up in a scheduled run before your release day.
Picking a size
Start on 6x. Move a job to 12x when the job runs out of disk at 120GB, runs out of memory at 14GB, or spreads its work across cores, as xcodebuild test plans and swift test do. Both sizes cost $0.0133 per vCPU-minute at the rates in the cloud runners documentation. A job that uses all 12 cores costs about the same on 12x as on 6x and finishes sooner. A job that uses 4 cores costs twice as much on 12x with no gain. Measure before you upgrade.
Debugging and metrics
WarpBuild observability shows CPU, memory and disk usage for each runner instance, which helps you tell a memory-bound Xcode job from a slow one. It uses OpenTelemetry for data collection. Action-Debugger is a free, open-source GitHub action that pauses a workflow and lets you SSH into the running runner, which helps when a macOS-only failure does not reproduce locally.
FAQ
Which macOS runner labels does WarpBuild offer for GitHub Actions?
Five labels. warp-macos-26-arm64-6x and warp-macos-26-arm64-12x run macOS 26, warp-macos-15-arm64-6x and warp-macos-15-arm64-12x run macOS 15, and warp-macos-14-arm64-6x runs macOS 14. The macOS 15 labels also answer to the aliases warp-macos-latest-arm64-6x and warp-macos-latest-arm64-12x.
Does WarpBuild offer Apple Silicon M4 Pro or M5 Pro runners for GitHub Actions?
Yes. WarpBuild macOS runners run on Apple Silicon M4 Pro and M5 Pro hosts with ARM64 architecture.
How can I get more concurrency for macOS jobs on WarpBuild?
macOS concurrency limits can be raised through support. Contact [email protected].
What do WarpBuild macOS runners cost against GitHub-hosted macOS runners?
The WarpBuild 6 vCPU macOS runner is $0.08 per minute and the 12 vCPU runner is $0.16 per minute. GitHub's 5-core M2 Pro macOS larger runner, macos-latest-xlarge, is $0.102 per minute. That makes the 6 vCPU runner 22% cheaper per minute than macos-latest-xlarge.
Can WarpBuild macOS runners run Docker?
No. macOS runners do not support nested virtualization and cannot run Docker. Run container builds on Linux runners or remote Docker builders, and keep the macOS runner for Xcode, Swift and simulator work.
Start with $10 in free credits
Change the runner label in your workflow and keep the rest of your GitHub Actions setup. Runner time is billed per minute.