Skip to content

Managed GitHub Actions runners: Linux, ARM64 and Windows

2 to 32 vCPU on Linux x64, ARM64 or Windows. Secrets, OIDC and matrix builds keep working.

Change one line, runs-on:, and the job runs here: 1.2–2.1× sooner than GitHub-hosted at 2 vCPU, at $0.004 a minute against GitHub’s $0.006. Each job gets its own fresh virtual machine, in Europe.

Connect GitHub

Card required. 3,000 minutes a month at 2 vCPU are included.

.github/workflows/ci.yml
jobs: test:- runs-on: ubuntu-latest+ runs-on: runnersio-2vcpu-ubuntu-2404 build-arm:- runs-on: ubuntu-24.04-arm+ runs-on: runnersio-2vcpu-ubuntu-2404-arm build-windows:- runs-on: windows-latest+ runs-on: runnersio-2vcpu-windows-2025

Faster and cheaper, measured

Three open-source builds on GitHub’s 2 vCPU runner and on ours: each time is the whole job, and each cost is what the build was billed. Why your own gain depends on the job is on the measured builds page.

  • ESLint
    GitHub-hosted
    3m 16s
    runners.io
    2m 41s
  • Cargo
    GitHub-hosted
    9m 11s
    runners.io
    4m 20s
  • Prometheus
    GitHub-hosted
    4m 30s
    runners.io
    3m 30s
Cost per build, GitHub-hosted
$0.034
Cost per build, runners.io
$0.012
ESLint
eslint/eslint @ c27bc92, built with node Makefile mocha
Cargo
rust-lang/cargo @ e8cb624, built with cargo build --release --locked
Prometheus
prometheus/prometheus @ d15adb9, built with go test ./tsdb/ -test.tsdb-isolation=false

Each time is the median of at least 21 approved rounds that both runners completed.

Every size, and what a minute costs

Each size is a label: choose it in runs-on for the job that needs it.

One chip is one vCPU. One stick is 8 GB of memory, rounded up.

  • 1 vCPU4 GB memory50 GB diskrunnersio-1vcpu-ubuntu-2404
    runners.io$0.002a minute
    GitHub-hostedNo rate shown
  • 2 vCPU7 GB memory50 GB diskrunnersio-2vcpu-ubuntu-2404
    runners.io$0.004a minute
    GitHub-hosted$0.006a minute
  • 4 vCPU15 GB memory50 GB diskrunnersio-4vcpu-ubuntu-2404
    runners.io$0.008a minute
    GitHub-hosted$0.012a minute
  • 8 vCPU30 GB memory50 GB diskrunnersio-8vcpu-ubuntu-2404
    runners.io$0.016a minute
    GitHub-hosted$0.022a minute
  • 16 vCPU60 GB memory50 GB diskrunnersio-16vcpu-ubuntu-2404
    runners.io$0.032a minute
    GitHub-hosted$0.042a minute
  • 32 vCPU125 GB memory400 GB diskrunnersio-32vcpu-ubuntu-2404
    runners.io$0.064a minute
    GitHub-hosted$0.082a minute

Hosted runners for GitHub Actions, managed for you

Like GitHub-hosted runners, there is nothing to install, patch or scale. Unlike them, you choose the size of every job, up to 32 vCPU, and a job waiting in the queue costs nothing.

Linux, ARM64 and Windows

Three runner types, in the sizes above. Running a fleet of your own today? This is what replacing it looks like.

  • Linux x64Ubuntu 24.04, Ubuntu 22.04 and Ubuntu 26.04, in every size from 1 to 32 vCPU.
  • Linux ARM64Ubuntu 24.04 on ARM64, Ubuntu 22.04 on ARM64 and Ubuntu 26.04 on ARM64, native ARM64 with no emulation.
  • Windows ServerWindows Server 2025 and Windows Server 2022, as Server Core with the Visual Studio Build Tools.

Pick 1 to 32 vCPU for each job.

The size is part of the label, so the jobs that need cores get them and the rest stay small.

Caches survive between jobs.

The Actions cache is included. A Docker layer cache is an add-on at $0.50/GB-month of what it stores.

A queued job is not billed.

You pay for the minutes a job runs, and nothing while it waits for a runner.

Try it on one repository first.

Installing the App moves nothing: no job runs here until a workflow asks for one of our labels. Change runs-on yourself, or pick a repository and we open a pull request that changes it and nothing else. Its checks run on our runners, so you compare times on your own code before you merge. There is no per-seat fee, and a monthly spend cap you set stops new jobs when it is reached; running ones finish.

The ones worth asking first

What does a managed GitHub Actions runner cost?
$0.004 a minute at 2 vCPU on Linux x64, $0.0025 on ARM64 and $0.010 on Windows, billed by the minute a job runs; a queued job is not billed. Every size is listed above, and what the plan includes is on the pricing page.
How do I choose a runner size?
A job picks its runner by the label in runs-on:, and the size is part of the label, so you choose it for each job. A compile or a test suite spread over many files gains from more cores; a job that waits on the network does not. The labels page has every label.

Before you connect

  • Is my code safe on someone else's runner?

    While a job runs, its code and the secrets GitHub hands it are on a machine we operate, as on any runner you do not host yourself. Each job gets its own virtual machine, starting fresh and shared with no other job. Nothing a job leaves on its machine can be seen by another job.

  • What do you get from my GitHub account?

    The repositories you choose. GitHub will list read and write permissions, and each write has one use. Administration registers a single-use runner for each job and removes it. Contents, Workflows and Pull requests open the migration pull request. Actions cancels a run we refused, or one holding a job you stopped. Checks and Commit statuses report Terraform plans, if you connect Terraform. Your secrets, environments and branch protection stay on GitHub.

  • How do I leave?

    Change the label back and the job runs on GitHub again: the runs-on label is the only change a workflow needs, and your actions, secrets and triggers were never ours to untangle. Uninstall the App on GitHub and we see nothing more. We delete build output and test results 90 days after each job.

Move a workflow in one line

Connect GitHub

Card required. 3,000 minutes a month at 2 vCPU are included.

.github/workflows/ci.yml
jobs: test:- runs-on: ubuntu-latest+ runs-on: runnersio-2vcpu-ubuntu-2404 build-arm:- runs-on: ubuntu-24.04-arm+ runs-on: runnersio-2vcpu-ubuntu-2404-arm build-windows:- runs-on: windows-latest+ runs-on: runnersio-2vcpu-windows-2025