Self-hosted GitHub Actions runners at a flat price, without running a server
GitHub bills nothing for self-hosted runner minutes. Teams that run their CI on self-hosted runners turn a bill that grows every month into a fixed cost, but only if someone runs the server.
Skipbox is a self-hosted runner you don't run: your own machine, managed for you, for a flat $39 a month with unlimited minutes. Change one runs-on line and your jobs move.
Why self-hosted runners make CI a flat cost
GitHub has two kinds of runners. GitHub-hosted runners bill by the minute on private repositories. Self-hosted runners, machines you connect to your account, bill nothing: GitHub's billing docs list them as usage that stays free and doesn't reduce your included compute. GitHub announced a charge for them on December 16, 2025 and shelved it the next day.
So every minute that runs on a self-hosted runner leaves your GitHub bill. What you pay instead is the machine, and that price doesn't change with your minutes.
What GitHub-hosted minutes cost you meanwhile
| Minutes a month (4 vCPU) | GitHub | Skipbox S | You save every month |
|---|---|---|---|
| 10,000 | $102 | $39 | $63 |
| 20,000 | $222 | $39 | $183 |
| 30,000 | $342 | $39 | $303 |
| Always on | $500.40 | $39 | $461.40 |
GitHub's figures are the bill on GitHub Team after its included compute. Price your own minutes in the calculator on the home page; no sign-in.
The minutes grow every month: coding agents push fixes all day, every new test suite multiplies the jobs per push, and a GitHub budget stops jobs mid-month when it runs out.
Running your own runner is a second job
The minutes are free; the server is work. Doing it yourself means:
- renting a server and installing and registering the runner
- updating the OS, Docker, Node, Python and every tool your jobs expect
- wiping files, processes, containers and tokens between jobs, or rebuilding the machine for each one, which throws away your caches
- keeping the disk from filling with images and old checkouts
- adding machines, or a Kubernetes autoscaler, when jobs start to queue
- noticing at 2 a.m. when the runner went offline
Skipbox does all of that, and you keep the flat price.
What Skipbox gives you
- A flat price. $39, $79 or $149 a month for 4, 8 or 16 vCPU, unlimited minutes, no usage charges. Add plans to run more jobs at once; jobs beyond your machines wait their turn.
- Your own warm machine. Docker images, layers and build cache, package caches and the tool cache stay between jobs: at least 7× the cache GitHub gives a repository.
- Clean after every job. The runner's credentials, processes and containers are wiped, and a health check runs. A machine that fails it is rebuilt automatically. From 13 November 2026, your checkout and its build output (Cargo's
target/) stay on your own machine for your next jobs; Clean every job gives each job a fresh machine. - Kept current. Ubuntu 24.04, Docker, Node.js and Python are Skipbox's to update.
| Plan | Machine | Disk | Price |
|---|---|---|---|
| S | 4 vCPU, 16 GB | 80 GB | $39 a month |
| M | 8 vCPU, 16 GB | 160 GB | $79 a month |
| L | 16 vCPU, 32 GB | 320 GB | $149 a month |
Moving is one line
jobs:
build:
runs-on: skipbox # was ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci && npm test
- Sign in to Skipbox with GitHub.
- Install the Skipbox GitHub app and pick your repositories.
- Change
runs-onand push.
Linux jobs run unchanged.
Security
- The machine is your account's alone; no other company's job runs on it.
- After every job, the runner's credentials, processes, containers and credential files such as
~/.npmrcare wiped. From 13 November 2026, your checkout and its build output (Cargo'starget/) stay on your own machine for your next jobs; Clean every job gives each job a fresh machine. - Code from people without write access (such as pull requests from forks) runs on a fresh VM, deleted afterwards. How jobs are kept apart.
Try it on your own jobs
The trial takes no card and runs for 7 days or 3,000 job-minutes. Move one job to runs-on: skipbox and see a self-hosted runner with nothing to maintain.
FAQ
Are self-hosted runner minutes free on GitHub Actions?
Yes. GitHub bills nothing for self-hosted runner minutes, and they don't reduce your included compute. Skipbox's machines connect as self-hosted runners, so the jobs you move there cost only Skipbox's flat price.
Is GitHub's announced self-hosted runner charge in effect?
No. GitHub announced it on December 16, 2025 and shelved it the next day; self-hosted runners are free. Teams that use them fully pay a flat price for CI, and Skipbox gives you that without a server to run.
What does running my own runner involve?
A server, the runner application, OS and tool updates, cleaning the machine between jobs, keeping the disk from filling, and adding machines when jobs queue. Skipbox does all of it for $39 a month and up.
Is a runner that keeps its machine between jobs safe?
On Skipbox the machine is your account's alone. After every job the runner's credentials, processes and containers are wiped and a health check runs; code from people without write access (such as pull requests from forks) runs on a fresh VM. From 13 November 2026, your checkout and its build output (Cargo's target/) stay on your own machine for your next jobs; Clean every job gives each job a fresh machine.
How much does Skipbox cost?
$39, $79 or $149 a month for 4, 8 or 16 vCPU, with unlimited minutes and no usage charges. The trial is free for 7 days, with no card.
Updated November 11, 2026