Skip to content
Sengi

How do I switch runs-on to another runner?

How do I change the runner a GitHub Actions job uses?

Change the value of runs-on in each job to the new runner’s label and merge; the next run of that job goes to the new runner, and every other line of the workflow stays the same. Labels must match exactly, so copy them from the provider, and find every job with grep -rn "runs-on" .github/workflows. To move to Sengi, the labels are sengi-standard-2-ubuntu-2404, sengi-standard-4-ubuntu-2404 and sengi-standard-8-ubuntu-2404, on AMD Ryzen 9 7950X3D bare metal boosting past 5 GHz, from $0.003 a minute; switching back is one revert.

Last checked October 23, 2026, against GitHub’s workflow syntax reference and Sengi’s setup guide.

What does the change look like?

jobs:
  test:
-   runs-on: ubuntu-latest
+   runs-on: sengi-standard-2-ubuntu-2404
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npm test

Push it on a branch, let the pull request’s own checks run on the new runner, and merge through your usual review.

Which Sengi label replaces my current runner?

Current runs-onSizeSengi labelSengi per minute
ubuntu-latest, ubuntu-24.04 (private repository)2 vCPU, 8 GBsengi-standard-2-ubuntu-2404$0.003
A GitHub 4-core larger runner4 vCPU, 16 GBsengi-standard-4-ubuntu-2404$0.006
A GitHub 8-core larger runner8 vCPU, 32 GBsengi-standard-8-ubuntu-2404$0.012
buildjet-4vcpu-ubuntu-22044 vCPU, 16 GBsengi-standard-4-ubuntu-2404$0.006
[self-hosted, linux, x64]Your machineThe size your job needsFrom $0.003

All three Sengi runners are Ubuntu 24.04 on x64. Write one Sengi label per job, literally; an expression or a second Sengi label in the same runs-on is not resolved. Moving from a specific provider: Blacksmith, Depot, Namespace, WarpBuild, RunsOn or BuildJet; every provider in one table in the runner comparison.

Can my coding agent make the change?

Yes. Give it the Sengi prompt: it finds every job Sengi can run, changes only those runs-on lines, says why it skipped the rest and opens a pull request for you to review. Install the Sengi GitHub App on the repository first. See how switching works.

Frequently asked questions

Can runs-on take a variable or a matrix value?

GitHub accepts an expression in runs-on, such as runs-on: ${{ matrix.os }}. Some third-party runners need the label written literally: Sengi asks for exactly one of its three labels, written out, as the whole value of runs-on.

Do I need to change anything else in the job?

Usually not. Steps, services, env, permissions, timeout-minutes and triggers stay as they are. Check that the new runner has the same operating system and architecture: a job that needs macOS, Windows or arm64 has to stay on a runner that offers it.

What happens if I list several labels in runs-on?

GitHub sends the job only to a runner that has every label in the list, so several labels narrow the match; they are not a fallback list. If no runner has them all, the job waits for a runner.

Why does actionlint fail after I change runs-on?

actionlint only knows GitHub's own labels. Declare the new runner's labels under self-hosted-runner labels in .github/actionlint.yaml, and the check passes.

The fastest hardware for your GitHub Actions.

AMD Ryzen 9 7950X3D desktop CPUs boosting past 5 GHz, on bare metal with local NVMe, a fresh VM for every job, and 2 vCPU jobs ready in 2 seconds. Builds finish up to 1.9× faster than on GitHub’s runners, and at up to half GitHub’s price per minute they cost up to 74% less per build. Change one runs-on line, or give your coding agent one prompt and it opens the pull request for you.

Run your next build on Sengi

See how switching works