// macOS CI runner
A dedicated Mac mini as your GitHub Actions runner
GitHub-hosted macOS runners bill by the minute at a premium and start from a clean image every job. A dedicated Mac mini from MacMiniNode registered as a self-hosted runner keeps Xcode, simulators, package caches, and derived data warm between jobs, runs around the clock, and costs a flat $129 per month regardless of minutes. The same applies to GitLab, Bitrise, Buildkite, and other systems with self-hosted agents.
Who it is for
- iOS teams whose GitHub-hosted macOS minutes are a noticeable line item
- Projects with long test suites or large dependency caches that suffer from cold starts
- Teams that need specific Xcode versions, certificates, or tools pinned on the runner
- Solo developers who want nightly builds and TestFlight uploads without a Mac at home
Why a dedicated runner beats hosted minutes for steady use
| Dedicated Mac mini runner | GitHub-hosted macOS runner | |
|---|---|---|
| Pricing | Flat $129/month, unlimited minutes on your machine | Per-minute, premium multiplier for macOS |
| Caches | Xcode, SPM/CocoaPods, derived data, simulators stay warm | Fresh image every job unless you restore caches |
| Toolchain | You pin Xcode versions, certificates, and tools | Preinstalled image you do not control |
| Concurrency | One job at a time per machine (add machines to scale) | Many parallel jobs on demand |
| Maintenance | You keep the runner agent and Xcode updated | Managed by GitHub |
| Best for | Steady daily CI, long suites, pinned toolchains | Bursty or occasional builds |
How the setup works
- STEP 1
Get the Mac
Request a Mac mini; it is ready within 24 hours with SSH access.
- STEP 2
Install Xcode and tools
Over SSH or remote desktop, install Xcode from Apple, select it with xcode-select, and add fastlane or other tools.
- STEP 3
Register the runner
In your repository or organization settings, add a self-hosted runner for macOS and run the configuration commands GitHub gives you. Install it as a launchd service so it survives reboots.
- STEP 4
Point workflows at it
Use runs-on: self-hosted with your labels. Keep secrets in GitHub, not on disk.
Security notes for a shared repository runner
- Register at the repository or organization level you trust; GitHub recommends against self-hosted runners for public repositories because forks can run arbitrary code
- Use short-lived tokens and GitHub secrets; do not store signing certificates in plain files longer than needed
- The machine is dedicated to you, so no other MacMiniNode customer can see your jobs; you are responsible for what runs on it
- Keep macOS, Xcode, and the runner agent updated
Real limitations and requirements
- Machines are prepared by a person, not an automated pool. We commit to having your Mac ready within 24 hours of your request; your dashboard shows each stage.
- One customer per computer. Sharing a machine among several end users, reselling access, or sublicensing is not permitted.
- Administrator access is included but subject to security and licensing requirements: you cannot disable the management controls we rely on, and macOS use must follow Apple’s software license terms.
- Permitted use is developer and business computing: software development, testing, CI, automation, and AI coding agents. See the Acceptable Use Policy.
- No physical access to the hardware, and no hardware changes (memory and storage are fixed at the configuration you rent).
- Third-party subscriptions are not included: Claude Code, OpenAI Codex, the Apple Developer Program, and any licensed software are yours to bring.
- You are responsible for your own backups. When a rental ends, the storage is securely erased before the hardware is reassigned.
How remote access works
Your Mac mini stays powered on in our facility. You connect to it over the internet from a Mac, Windows PC, Linux machine, or tablet using two supported methods: SSH for the terminal, and remote desktop for the full macOS interface.
Connection details and step-by-step instructions appear inside your signed-in dashboard once the machine is ready; we never send credentials by plain email. Your files, tools, and sessions persist between connections, so you can disconnect and pick up where you left off.
Questions about this
Can one Mac mini run multiple CI jobs at once?
One self-hosted runner instance handles one job at a time. You can register more than one runner on a machine, but with 16GB of memory two parallel Xcode builds will slow each other down. For true parallelism, rent additional machines.
Does MacMiniNode install the runner for me?
No. We provide the always-on Mac with SSH access; you install Xcode and register the runner with your own GitHub account, following our guide.
Is a dedicated runner cheaper than GitHub-hosted minutes?
It depends on your usage. At steady daily use the flat $129 is often less than metered macOS minutes, and builds are usually faster thanks to warm caches. For a few builds a week, hosted minutes may cost less. Our CI cost calculator lets you compare with your own numbers.
// Ready?
Give your CI a dedicated Mac.
Warm caches, your toolchain, one flat monthly price.