The most expensive runner type — and sometimes the only option
iOS / macOS native code, MLX, signing, and notarization need macOS. Hosted macOS runners cost 10× Linux. Self-hosted on a Mac mini or office Mac is the only way to stay sane on volume.
Hosted vs self-hosted macOS
| Hosted | Self-hosted | |
|---|---|---|
| Cost | 10× Linux/min | Hardware + electricity |
| Apple Silicon | Yes (newer images) | Whatever Mac you have |
| MLX | Yes on M-series images | Yes |
| Code signing | Need to upload cert + provisioning | Cert in Keychain on the Mac |
| Reliability | Network-dependent; queueing | Up to your maintenance |
Self-hosted macOS gotchas
- The runner agent runs as a launch agent. Sleeping Mac = no jobs. Disable sleep on the runner machine.
- Path differs from Linux — Homebrew is at
/opt/homebrew(Apple Silicon) vs/usr/local(Intel). Workflows must handle both. - Code-signing keys live in the user's Keychain — runner needs to be the same user.
- Xcode versions matter. Pin via
maxim-lobanov/setup-xcodeor managed at the runner level.