Same checks. Your machine. No minutes burned.

When coding agents eat your private repo's GitHub Actions quota, route CI to your own computer. GitHub still shows the same checks and logs. Switch back whenever you like.

Paste into Claude Code, Codex or Cursor
Set up relayrunner in this checkout using https://raw.githubusercontent.com/atticoos/relayrunner/main/docs/agent-install.md

Prefer the CLI?

For private repos you control. Jobs run as you, on your machine. Is it safe?

$ relayrunner status
GitHub-hosted ubuntu-latest
    1,184 of 2,000 min used
    Your machine self-hosted
      runner online 0 min billed
      Simulated run. Flip the route to try it.

      Agents ship faster than your quota refills.

      GitHub Free gives private repositories 2,000 Actions minutes a month. A hundred agent PRs can use more than half of that, and a busy agent ships a hundred PRs in a day.

      Each tick is one PR's CI run. Illustrative.

      One setup. Then it's a switch.

      1. Your agent sets it up

        It finds the jobs that can run on your machine, lets you pick, and shows the patch before applying anything. relayrunner downloads GitHub's official runner, registers it to the repo, and waits until GitHub reports it online.

        The only workflow change: one line per opted-in job.

        Agent setup, start to finish
        1. Checked Node.js, Git and your GitHub CLI session
        2. Installed relayrunner and its skill
        3. Ran relayrunner discover and found 4 jobs
        4. Which jobs should run on your machine? testlinttypecheckdeploy
        5. Approve this patch?
            jobs:
              test:
          -     runs-on: ubuntu-latest
          +     runs-on: ${{ vars.RELAYRUNNER_LABEL || 'ubuntu-latest' }}
                steps:
        6. Downloaded GitHub's official runner and registered it to the repo
        7. Self-hosted runner online. Commit and push the patch to finish.
      2. Flip CI to your machine

        Every opted-in job across branches and pull requests now runs locally. relayrunner checks that your runner is online before it moves anything.

        No workflow edits, no commits. It sets a repository Actions variable.

        Terminal
        $ relayrunner switch local
        you/sideproject: local (repository-wide)
        Runner relayrunner-3f9c…: online
      3. Flip it back when you're done

        Future jobs go back to GitHub-hosted runners. Anything already running on your machine finishes, and jobs still queued for it are listed so you can recover them.

        Same check names in GitHub either way.

        Terminal
        $ relayrunner switch hosted
        you/sideproject: GitHub-hosted
        Jobs still queued for the local runner: 0

      Ask your agent, or type it yourself.

      The bundled skill turns plain requests into CLI calls for Claude Code, Codex and Cursor. Every command also takes --json for agents and scripts.

      CI is eating my minutes again. Run it on my laptop for now.
      $ relayrunner switch local --json Done. Your runner is online and opted-in jobs in you/sideproject now run on this machine.
      Shipping for the night. Put CI back on GitHub.
      $ relayrunner switch hosted --json Switched back to GitHub-hosted runners. No jobs were left queued for your machine.
      relayrunner discover
      List jobs that can move to your machine.
      relayrunner preview --job .github/workflows/ci.yml:test
      Show the exact workflow patch and an approval fingerprint.
      relayrunner setup --job .github/workflows/ci.yml:test --approve <fingerprint>
      Register the runner and apply the reviewed patch.
      relayrunner switch local
      Route opted-in jobs to this machine.
      relayrunner status
      Current route and runner availability.
      relayrunner switch hosted
      Send future jobs back to GitHub.

      A relief valve, not infrastructure.

      A self-hosted runner executes whatever the workflow tells it to, as your user, on your computer. That's fine for your own private side project. It's a real risk anywhere else.

      Built for

      • Private repositories on github.com that you control
      • One developer, one machine
      • Busy stretches where agents push all day
      • Jobs your machine can actually run

      Not for

      • Public repositories or forks
      • Repos where anyone you don't trust can edit workflows
      • Team or production CI
      • Jobs that need a clean machine every run
      GitHub-hostedmetered minutes
      Your machine0 min billed

      Get your minutes back.

      Paste this into your agent from the checkout you want to set up.

      Set up relayrunner in this checkout using https://raw.githubusercontent.com/atticoos/relayrunner/main/docs/agent-install.md

      Needs Node.js 22+, Git and a signed-in GitHub CLI. Runs on macOS or Linux, x64 or ARM64.

      For private repos you control. Jobs run as you, on your machine. Is it safe?