Announcing our Series C led by Sequoia at a $1B valuation. Read more
[ Self-hosting ]

The true cost of self-hosting

A cheaper instance does not always mean a cheaper CI job once you account for idle capacity, networking, and storage.

/ Demand
■

The largest engineering organizations still self-host CI, and the economics were sound until developers adopted coding agents and hardware became harder to secure.

Across 315 organizations, jobs per org have grown 4.8x since May 2025, while developers grew 1.4x. As models get smarter and cheaper, the volume of code to validate rises with both, and we do not see it slowing down.

At the same time, frontier labs are buying current-generation machines ahead of everyone else, and the hyperscalers expect the shortage to last years.

Idle machines, networking, and storage have always been charged separately, but they are often left out of cost comparisons. This page accounts for those charges alongside the cost of running on older-generation machines and managing idle capacity.

CI jobs per org
CI jobsActive developers
1x2x3x4x5x123456May 2025Sep 2025Jan 2026May 2026Sep 2026
  1. 1Claude 4 and Claude Code GA · May 22, 2025
  2. 2GPT-5 · Aug 7, 2025
  3. 3Claude Sonnet 4.5 · Sep 29, 2025
  4. 4Claude Opus 4.5 · Nov 24, 2025
  5. 5Claude Opus 5 · Jul 24, 2026
  6. 6GPT-6 Astra · Sep 3, 2026
/ Supply
■

Latest-generation machines are hard to get

On every public cloud, across the major US and EU regions, latest-generation hardware is hard to get on demand. AWS describes its capacity as largely committed through 2027, while Google and Microsoft have both reported turning away cloud business.

CI demand arrives in bursts that lose out to the steady production workloads hyperscalers hold capacity for. The machine you request is often not the machine you get, so you either wait for it or use something older.

You wait

The request sits in InsufficientInstanceCapacity until the generation you asked for becomes available, leaving the job waiting in the queue. On the self-hosted fleets we measured, weekly P95 queue time exceeded twelve minutes, while the same organizations on Blacksmith wait seconds.

P95 queue time
Weekly P95 queueSelf-hostedBlacksmith
AWS customer2m 03s15s
GCP customer12m 11s11s
AWS customer
Self-hosted
2m 03s
Blacksmith
15s
GCP customer
Self-hosted
12m 11s
Blacksmith
11s

You settle

The pool that reliably fills is one or two generations old, and each generation back is slower per core. The same job takes longer on every run, so a cheaper hour can mean a more expensive job. Every self-hosted team we talk to runs a fallback list spanning several generations.

The median job on Blacksmith runs for 1m 22s and costs $0.011. The chart shows that same job on each machine, timed and priced using us-east-1 on-demand list rates. On the same hardware, the per-hour gap would be 2.7x, but on the hardware you actually get, it is about 1.7x per job.

Median job costs with a c6a
$0.006
Self-hosted
$0.011
On Blacksmith
x86 generations, 4 vCPU
InstanceSpeed vs BlacksmithPer job
  1. c8i / m8i 2025
    69%
    1m 59s · $0.006
  2. c7i 2023
    63%
    2m 10s · $0.006
  3. c7a / m7a 2023
    61%
    2m 15s · $0.008
  4. m7i 2023
    58%
    2m 22s · $0.008
  5. c6a / m6a 2022
    55%
    2m 30s · $0.006
  6. c6i / m6i 2021
    49%
    2m 49s · $0.008
  7. c5 2017
    40%
    3m 24s · $0.010
  8. m5 2018
    36%
    3m 47s · $0.012
/ Idle capacity
■

Idle machines are billed like busy ones

The job prices above count only the minutes spent running the job, leaving out the time the machine spent booting, waiting for work, or held in reserve for a peak. A self-hosted fleet pays for all of it because it is sized for a peak that lasts only a few minutes on most days.

Across the organizations on Blacksmith, a team in one timezone peaks at about 3x its daily mean and is nearly idle overnight. A global team spreads demand more evenly and is the best case for self-hosting, but it still peaks near 2x.

Weekday CI demand
One timezoneGlobal
mean2x3x8amnoon4pm8pmmidnight4am

What the autoscaler recovers

We replayed a week of per-minute demand from the 128 largest organizations on Blacksmith against three ways of running a fleet. The busy-share readout shows the median organization’s share of paid minutes spent doing work under each configuration.

Autoscaling with less than 20% headroom puts jobs back in the queue because a cold machine takes minutes to join. At 47% busy, every working minute carries about one idle minute with it, taking the c6a job from $0.006 to $0.014. Hardware that was 1.7x cheaper per job is now about 1.2x more expensive than the same job on Blacksmith, before networking and storage.

Spot cuts list price by 60 to 70% and worked while hyperscalers had capacity nobody else wanted. That spare capacity is gone, and by August, spot on AWS had become hard to get at all. Teams that moved to Blacksmith from spot fleets were being preempted too often to scale reliably.

Median job costs with idle time
$0.014
Self-hosted
$0.011
On Blacksmith
vCPUs busy vs paid
47% busy share
8K16K24K32Kmidnight6amnoon6pmmidnight
  • vCPUs busy
  • Paid for and idle

The share is the median of the 128 largest orgs. The chart plots one, 20% over recent demand.

/ Network
■

Every GB through the NAT is billed

The instance price does not cover moving bytes into and out of the machine. AWS and GCP charge a NAT fee on every GB in or out, with egress charged on top for uploads. Runners with public IPs skip the NAT fee, but that puts every CI machine on the public internet, which most security teams will not allow.

Across millions of jobs we run, the average job moves about 400 MB in and 25 MB out. At AWS list rates, those bytes cost about $0.02 through a NAT gateway, more than the machine time for the job itself.

The organization behind the idle chart runs close to a million jobs on a weekday and moves 25 TB doing it, adding up to about $1,220 a day in NAT and egress fees at AWS list rates.

Blacksmith does not charge for ingress or egress, and our caching avoids much of that traffic in the first place.

Median job costs with network fees
$0.035
Self-hosted
$0.011
On Blacksmith
NAT traffic by hour
1 TB2 TB3 TB4 TBmidnight6amnoon6pm
  • Pulled in
  • Sent out
/ Storage
■

Network-backed volumes slow down your CI

Disk speed sets the pace of most CI jobs, and on a cloud runner, the disk is usually a network volume such as gp3 on AWS or Persistent Disk on GCP.

Every read and write travels over the network to a volume tuned for durable systems such as databases, with little you can change about that on the hyperscalers. Workloads with many small writes feel it most, including Docker builds that unpack image layers into tens of thousands of small files and write new layers back.

Default gp3 is cheap and slow, adding to the runtime of every CI job. You will likely provision more IOPS and throughput to make it faster, but that can leave the disk costing more per job than the machine it is attached to. In this example, the disk costs $0.0073 per job against $0.006 for the c6a.

Blacksmith runs every job on local NVMe SSDs at no extra charge.

Median job costs with storage
$0.042
Self-hosted
$0.011
On Blacksmith
Disk per job, 100 GB
Disk, 100 GBSpecPer jobVs Blacksmith
gp3, default3K IOPS, 125 MiB/s$0.000564% slower
gp3, tuned16K IOPS, 1,000 MiB/s$0.007325% slower
io216K IOPS$0.071not measured
Local NVMe instancec6id over c6i$0.0015not measured
gp3, default
Spec
3K IOPS, 125 MiB/s
Per job
$0.0005
Vs Blacksmith
64% slower
gp3, tuned
Spec
16K IOPS, 1,000 MiB/s
Per job
$0.0073
Vs Blacksmith
25% slower
io2
Spec
16K IOPS
Per job
$0.071
Vs Blacksmith
not measured
Local NVMe instance
Spec
c6id over c6i
Per job
$0.0015
Vs Blacksmith
not measured
/ Total cost
■

The full cost of self-hosting

A self-hosted minute is cheaper than a Blacksmith minute, but that comparison leaves out the slower machines you end up on, the warm pool you keep idle, and the networking and storage an average CI job pays for. These figures exclude operational overhead and engineering time. Take it from us: running CI infrastructure at scale is an interesting systems problem, but keeping it reliable is not something you do on the side.

We keep looking for ways to help you run less CI without making your code less robust. If you want the cost comparison modeled on your own fleet and job mix, contact us and we will build it with you.

Modeled AWS example
Cumulative costPer job
Active compute only{4 vCPU c6a · us-east-1 on-demand}$0.006
With idle capacity{47% of paid minutes busy}$0.014
With NAT and egress{400 MB in · 25 MB out per job}$0.035
With storage{100 GB gp3 · 16K IOPS · 1,000 MiB/s}$0.042
Blacksmith{4 vCPU · local NVMe and network included}$0.011
World globe