CI surges

Keep CI fast when everyone pushes at once.

Coding agents open pull requests all day. Jobs run on your own machines first and go to hosted runners when your machines are busy, so jobs don't wait in a queue.

Get started with GitHub

How it works

Jobs use your machines first and hosted runners only when they're busy.

  1. Connect what you have

    Run npx relayrunner connect on the Mac mini, the old laptop and the home server. More machines means more jobs at once.

  2. Send extra jobs to hosted runners

    When every machine is busy, the next job goes straight to GitHub-hosted or a faster provider instead of waiting behind the others.

  3. Set a limit on hosted minutes

    Set a minutes limit on GitHub. Past it, jobs fail fast with the reason, and your agent can retry later.

Optimized checks

Run lint checks without a runner.

PR title checks and lint finish in seconds but still bill a whole minute and wait for a runner. Run them as optimized checks and they never need one.

How optimized checks work →

Common questions

Can bot and agent jobs use my machines?

Yes, when you share a machine with anyone in the workspace. A machine you keep for yourself only takes your own jobs.

Which hosted providers can take the overflow?

GitHub-hosted, or a provider like Blacksmith, Depot or Namespace on your own account. See all providers.

How do I see where time goes?

The Performance page shows how long each job takes on each runner and how long it waited for one. If waits grow, connect another machine or move a provider up.

Do I need to edit my workflows to change the order?

No. You add relays once with npx relayrunner init, then change the order in the dashboard. See Routing.

Connect your machines.

Connect a machine, then route your jobs. Hosted runners take the jobs your machines can't.

  1. 1. Turn this computer into a runner
    npx relayrunner connect --share anyone
  2. 2. In your repo, pick the jobs to route
    npx relayrunner init