braeburn/guides/ci cost

What your macOS CI minutes
actually cost.

GitHub-hosted macOS runners are the most expensive minutes on the platform — roughly ten times a Linux runner. Past a certain volume, a dedicated Mac that costs the same every month is simply cheaper. This calculator finds that crossing point with current published rates.

It runs entirely in your browser. Nothing is sent anywhere, there is no analytics script on this page, and the numbers are yours to check against the sources at the bottom.

GitHub rates checked 2026-08-02
01 / calculator

Your monthly macOS build minutes

A 12-minute iOS build on 20 pushes a day is roughly 5,000 min/mo.
Included minutes apply to private repositories only.
Drag: 0 – 20,000 min/mo. Type a larger number above if you need it.
Larger runners get no included minutes at all.
GitHub Actions
€0
Braeburn S — flat
€109
1 dedicated M4 · unmetered · no VAT (§ 19 UStG)

Actions costs are published in USD and converted at the ECB reference rate of 2026-07-31 (1 USD = 0.8707 EUR, via frankfurter.dev). GitHub bills you in dollars, so your actual euro cost moves with the exchange rate and with whatever your card issuer charges for the conversion.

02 / the 10× multiplier

The part everyone gets wrong.

macOS runners carry a 10× minute multiplier, and it is widely misquoted. Here is what it actually does:

  • Against your included minutes, the multiplier applies. Running 1,000 macOS minutes consumes 10,000 of the minutes included with your plan. On a Team plan's 3,000 included minutes, that means you exhaust the allowance after just 300 macOS minutes — about five hours of building.
  • Against paid overage, it does not. Once you're past the allowance, GitHub bills the macOS per-minute rate directly: 1,000 minutes at $0.062 is $62, not $620. The macOS rate is already ~10× the Linux rate — applying the multiplier again would double-count it.

The calculator above models both steps: your included minutes are drawn down at 10× until they're gone, then every further minute is billed at the runner's dollar rate. Some calculators multiply the overage too and produce a bill ten times too big. That would flatter our pitch, so we're saying it explicitly.

Prices dropped in January 2026

GitHub reduced hosted-runner prices by up to 39%, effective 1 January 2026. Standard macOS runners went to $0.062/min. If you're working from an older comparison quoting $0.08/min for macOS, it is out of date and overstates the Actions bill by about 29%. The rates in this calculator come from GitHub's current Actions runner pricing reference, read 2026-08-02.

03 / caveats

Where a flat box is the worse buy

A break-even number is not an argument on its own. Actions is a managed product and a bare Mac is not — these are the differences the calculator can't price.

Actions includes the infrastructure, and it scales
A GitHub-hosted runner is provisioned, patched, monitored and thrown away for you. Twenty jobs can start at once. One dedicated Mac runs what one Mac can run — typically one to a few jobs in parallel — and when your team pushes at 09:00, the queue is yours to manage. Burst capacity is a real feature you are giving up.
One machine has a hard ceiling
A month contains 43,800 minutes, and no build machine is busy 100% of them — queues, idle nights and maintenance all eat into it. Past roughly 20,000–25,000 minutes a month of real work, one box stops being the honest comparison and you're pricing a small fleet. The calculator says so when you push it that far, rather than quoting a saving a single machine could never deliver.
A dedicated box needs setting up and keeping up
You install the runner, register it, keep Xcode and macOS current, watch disk fill with derived data and simulators, and fix it when it wedges. Budget a few hours to set up and something like an hour a month after that. At a European developer's hourly cost, that maintenance can eat a meaningful part of the savings at low volumes — which is exactly why the break-even matters. Our runner setup guide covers the work honestly.
Clean state per job is free on Actions, work on a box
Every hosted run starts from a fresh image. A persistent self-hosted runner accumulates caches, credentials and side effects between jobs — occasionally useful (faster builds), occasionally the cause of "works on CI, fails locally". Ephemeral runners restore the clean-state guarantee but need automation to re-register.
One machine is one point of failure
If a hosted runner dies, GitHub gives you another. If your dedicated Mac dies, your pipeline is down until someone fixes it. Ask any provider — us included — about their remote power-cycle and replacement process before you depend on a single box.
The comparison ignores your Linux and Windows jobs
Only macOS minutes are modelled here. Linux minutes are cheap ($0.006/min) and usually not worth moving. A dedicated Mac can also run Linux containers alongside the macOS build, but that's a bonus, not part of this calculation.
Currency and VAT
GitHub bills in USD; we invoice in EUR with no VAT charged under § 19 UStG. If you're a VAT-registered business, VAT on other providers is reclaimable and roughly neutral to you — but exchange-rate movement on a dollar bill is not.
04 / sources

Check our numbers

  • Per-minute runner rates — GitHub Docs: Actions runner pricing (checked 2026-08-02): macOS 3/4-core $0.062, macOS 12-core $0.077, macOS 5-core M2 Pro $0.102, Linux 2-core $0.006, Windows 2-core $0.010.
  • Multiplier and included minutes — GitHub Docs: Actions billing (checked 2026-08-02). Free 2,000 · Pro 3,000 · Team 3,000 · Enterprise Cloud 50,000 included minutes per month for private repositories; jobs are rounded up to the whole minute.
  • January 2026 price reduction — GitHub Changelog, 16 December 2025 (checked 2026-08-02).
  • Braeburn pricing — our plans page. €109/mo, no VAT charged under § 19 UStG, month-to-month.
  • USD→EUR reference rate — frankfurter.dev, ECB rate of 2026-07-31.

No benchmark or build-time claims appear on this page. Every figure above is a published price, and the arithmetic is visible in the page source.

— WAITLIST —

Past the break-even?

One email — which plan, how many machines, when you need them. We answer personally, usually the same day.

WAITLIST FREE · NON-BINDING · VAT NOT CHARGED (§ 19 USTG)