What Is Idle Runner Cost? Paying for Machines That Do Nothing
Idle runner cost is what you pay for runner capacity that is running but not doing useful work - provisioned, booting, waiting, or over-sized.
Idle cost is sneaky because the machine looks busy on the invoice even when it is not producing value. It shows up differently on hosted versus self-hosted runners, but either way it is money spent on capacity rather than results. Understanding where idle cost hides is key to a lean CI bill.
Idle on hosted runners
On per-minute hosted runners, idle cost appears as cold-start boot time and setup before useful work begins, plus oversized machines whose cores sit unused. You pay the per-minute rate during all of it even though the build is barely working.
Idle on self-hosted runners
Self-hosted runners that stay online waiting for jobs cost money the entire time, busy or not. A fleet sized for peak load sits mostly idle off-peak, and you pay the cloud-instance bill 24/7 regardless of utilization.
Warm pools versus cold idle
A naive warm pool keeps machines running to avoid cold starts, trading idle cost for speed. Done well, a managed warm pool keeps just enough capacity ready and recycles the rest, capturing the speed benefit without paying for a large idle fleet.
Over-provisioning as idle cost
Booking an 8-core runner for a job that needs two means six cores are effectively idle, billed at the larger-runner premium. Right-sizing turns that idle headroom back into savings.
Measuring idle
On self-hosted fleets, track utilization - busy minutes divided by provisioned minutes. Low utilization is direct idle cost. On hosted runners, watch cold-start time and runner-size fit as proxies for idle waste.
Eliminating idle cost
Managed runners shift the idle problem to the provider: Latchkey runs a self-managed warm pool sized to demand, so you get fast starts without paying for a fleet that sits idle - and the underlying rate is about 69% below GitHub-hosted.
Key takeaways
- Idle runner cost is paying for capacity that is not doing useful work.
- Hosted: cold-start and oversized cores. Self-hosted: always-on fleets.
- Over-provisioning is idle cost billed at a premium rate.