DEV Community

Jackson
Jackson

Posted on • Originally published at macless.dev

GitHub Actions' free macOS minutes, explained

GitHub Actions is GitHub's built-in CI/CD system — it spins up a fresh virtual machine, runs whatever commands you tell it to, and tears the machine down when it's done. It supports Linux, Windows, and macOS runners. The macOS runners are the interesting part here, because they're actual macOS machines with Xcode's command-line build tools available, which means they can build and sign iOS apps — not just run tests.

The headline rule: public repos are free

On a public repository, standard GitHub-hosted runner minutes — including macOS — don't cost anything, on any plan, including the free plan. It's a genuine free tier, not a trial or a limited allowance that runs out.

One nuance: this covers standard runners. GitHub also offers "larger runners" (more CPU/RAM) — those are billed regardless of repo visibility. A default macOS build for signing and archiving a typical app doesn't need one, so this rarely matters in practice.

What changes on a private repo

If your repository is private, you get a monthly allowance of free minutes instead of unlimited free usage:

Plan Included minutes / month
Free 2,000
Pro 3,000
Team 3,000

The number that actually matters for iOS builds is how fast macOS runners burn through that allowance.

macOS minutes cost roughly 10x

GitHub applies a multiplier against your included minutes: Linux runners run at the baseline rate, macOS runners run at roughly 10x that rate. A 6-minute macOS build eats through the same allowance as roughly 60 minutes of Linux CI.

Applied to the table above, a Free-plan private repo effectively gets around 200 macOS-runner-minutes worth of free build time per month before you're billed per minute past it (Pro/Team works out to roughly 300).

The practical upshot: if you're fine building in the open, a public repo gets you unlimited macOS build minutes at zero cost, indefinitely. If you'd rather keep the code private, everything about the pipeline still works the same way — you're just drawing from a metered allowance instead of an unlimited one. Repo visibility only changes CI minute pricing; your signing certificates and credentials live in encrypted GitHub secrets either way, never exposed regardless of visibility.

What this doesn't cover

  • The Apple Developer Program fee. Still $99/year, paid directly to Apple, completely separate from anything GitHub does.
  • Storage and artifact retention. A distinct line item if you're archiving builds long-term, not usually a concern for a simple build → sign → upload pipeline.

Numbers on GitHub's side can shift — this reflects GitHub's billing docs as of when this was written, worth a check against GitHub's current billing docs if it's been a while.

Full pipeline built around this free tier at macless.dev.

Top comments (0)