Your Mac as a runner
Turn your Mac into a Linux runner with one command.
Run one command and your Mac starts taking your ubuntu-latest jobs, each in a fresh
Linux VM. You don't install a runner app or copy tokens. When your Mac is busy or asleep, jobs go
to your hosted runners.
Self-hosted runners
How this differs from a GitHub self-hosted runner.
A GitHub self-hosted runner is a server you install, register and keep online. Here, your Mac takes jobs only while it's connected, and a new runner registers itself for each job.
GitHub self-hosted runner
- Download the runner app and copy a registration token from each repo or org's settings.
- Run
config.sh, install it as a service and keep it updated. - Change each workflow to
runs-on: self-hosted. - Jobs run straight on the machine and share whatever the last job left behind.
- When it's offline, jobs sit in the queue until it comes back.
Your Mac with relayrunner
- Run
npx relayrunner connectand sign in with GitHub. - Nothing to install or update. Stop it with Ctrl-C or
relayrunner pause. - Run
npx relayrunner initonce. After that, change where jobs run from the dashboard. - Each job gets a fresh Linux VM and a one-time runner, and both go away when it's done.
- When your Mac is offline, jobs go to the next runner in your order.
How it works
Run CI jobs on a Mac you already own.
-
Connect in one command
Run
npx relayrunner connecton a Mac with Apple silicon. It takes jobs while it's running and stops when you quit or close the lid. -
Every job gets a fresh VM
The job runs in a clean Linux VM that goes away when it's done. It can't see your files or reach your local network unless you allow it. Docker works inside.
-
Use hosted runners when your Mac is busy
Your Mac is one step in your runner order. When it's busy or asleep, the next job goes to GitHub-hosted or another provider, so nothing waits.
macOS builds
Run macOS jobs on your Mac too.
macOS minutes on GitHub cost about ten times Linux. Add --macos and your Mac runs
macOS jobs directly, where Xcode is, while Linux jobs keep running in VMs.
Common questions
Will it slow down my Mac?
Set --cpus and --memory to cap what each VM gets. Run
relayrunner pause when you need the whole machine.
Which Macs work?
A Mac with Apple silicon on macOS 26 or later runs each job in its own VM. Other Macs, and Linux computers, can connect too and run jobs directly.
Do I have to change my workflows?
Once. npx relayrunner init adds a relay to each job you pick. After that, you
change where jobs run in the dashboard. See Routing.
What does it cost?
relayrunner is free and open source, and jobs that run on your Mac use no GitHub minutes.
Connect your Mac.
Run these two commands. Your hosted runners stay as the fallback.
-
1. Turn this Mac into a runner
npx relayrunner connect -
2. In your repo, pick the jobs to route
npx relayrunner init