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.

Get started with GitHub

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

  1. Download the runner app and copy a registration token from each repo or org's settings.
  2. Run config.sh, install it as a service and keep it updated.
  3. Change each workflow to runs-on: self-hosted.
  4. Jobs run straight on the machine and share whatever the last job left behind.
  5. When it's offline, jobs sit in the queue until it comes back.

Your Mac with relayrunner

  1. Run npx relayrunner connect and sign in with GitHub.
  2. Nothing to install or update. Stop it with Ctrl-C or relayrunner pause.
  3. Run npx relayrunner init once. After that, change where jobs run from the dashboard.
  4. Each job gets a fresh Linux VM and a one-time runner, and both go away when it's done.
  5. 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.

  1. Connect in one command

    Run npx relayrunner connect on a Mac with Apple silicon. It takes jobs while it's running and stops when you quit or close the lid.

  2. 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.

  3. 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.

Read the macOS builds guide →

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. 1. Turn this Mac into a runner
    npx relayrunner connect
  2. 2. In your repo, pick the jobs to route
    npx relayrunner init