Self-hosted runner
A self-hosted runner is CI capacity you operate yourself. When it saves money — and the maintenance, security, and idle-capacity costs the per-minute math leaves out.
What is a self-hosted runner?
Self-hosted runner is a machine you provision, secure, and register with your CI provider so it executes your pipeline jobs, in place of the provider's on-demand hosted virtual machines.
When it saves money
The headline appeal is the rate card. GitHub-hosted standard Linux runners bill $0.006 per minute as of 2026-07-28, with per-job minute rounding, while jobs on your own hardware incur no per-minute charge from GitHub as of 2026-07-28 — a $0.002-per-minute platform fee for self-hosted runners was announced in December 2025 and then postponed for re-evaluation, so ranking advice written around that fee is already stale. Self-hosting tends to pay off when volume is high and steady enough to amortize hardware, when jobs need machines the hosted tiers price steeply (large runners, GPUs, the macOS multiplier), or when a persistent disk with warm caches meaningfully shortens builds.
The hidden TCO
The per-minute comparison omits most of the real cost:
- Maintenance. OS patching, runner-agent upgrades, toolchain drift, disk cleanup — recurring engineer hours that never appear on a CI invoice.
- Security. An isolated, disposable VM per job is the hosted default; on your own fleet it is your problem. GitHub's secure use reference states that self-hosted runners "should almost never be used for public repositories," because any user can open a pull request and compromise the environment (as of 2026-07-28).
- Idle capacity. CI load is bursty. A fleet sized for the 9 a.m. push wave idles most of the day; a fleet sized for the average makes developers wait in queue at peak. Autoscaling closes the gap but is an engineering project of its own.
Why it matters
The hosted-versus-self-hosted decision deserves measurement, not vibes — especially since waste follows you across it. A flaky suite that retries a quarter of its runs burns your fleet's capacity just as surely as it burned billable minutes, and the cost of failed builds is dominated by engineer wait time either way. Cutting failure and rounding waste first, as covered in how to reduce GitHub Actions costs, often shrinks the problem self-hosting was meant to solve.
TrimCI analyzes runs the same way on any runner type, because it reads pipeline metadata from the provider API rather than the machine itself, and its cost model applies a per-minute rate you configure — so a self-hosted fleet can be priced at its true amortized rate instead of the provider's list price.
See what your CI failures actually cost.
Connect GitHub Actions or GitLab CI with read-only access — never your source code — and get a ranked, dollar-costed fix list from your own pipeline data.