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.
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.
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 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.
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.
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.
We would like to use analytics and advertising cookies to count visits, measure which of our ads work and show you our ads later.We use analytics and advertising cookies to count visits, measure which of our ads work and show you our ads later.They tell us which of our ads brought you here, and whether you went on to sign up, sending them scrambled (hashed) copies of your details. They also let Google, Meta, LinkedIn, X, Reddit, Microsoft, TikTok and OpenAI show you runners.io ads again later, on their sites and others, based on your visit. That is your email address and any name, phone number or address you type into our forms. Google Analytics, loaded with them, also counts visits to our pages and the sign-ups and card additions that follow, using two cookies of its own. It also lets PostHog, our product analytics, see which setup steps you use and which of our main buttons you press, show you an occasional short survey, and on our setup, pricing, calculator and docs pages and inside your account record your session with everything you type masked. On our public pages it also lets Apollo.io work out, from your IP address, which company you are visiting from, never who you are. They are on until you opt out. If you opt out, we delete the cookies we can and nothing more on this site contacts any of them or PostHog or Apollo.io. They stay off until you choose. Until you press Accept, none of them is set and nothing on this site contacts any of them or PostHog or Apollo.io. Press Reject and they stay off. How we use them