CI runner cost — what we run, what it costs, alternatives

Why AWS read $131 on Oct 12, which machines drive it, and what it would cost to run CI another way.

2026-10-14 · source: AWS Cost Explorer (credits excluded) + live EC2 inventory · alternative prices are estimates, not quotes

About $84 of the $131 is CI test machines: ~1,000 machine-hours at ~$0.08/hr. Every runner is a RunsOn spot instance (AWS spare capacity, roughly 60–70% off list). The 8- and 16-core test machines are under a third of the hours but about 60% of the cost.

1 · Daily trend — CI runner compute only

DayRunner costMachine-hoursNote
Oct 6$2372,145incl. ~$46 full-price (on-demand) boxes
Oct 7$1161,181
Oct 8$1421,393
Oct 9$1351,302
Oct 10$53760weekend
Oct 11$60910weekend
Oct 12$84998

Whole AWS account: $338 (Oct 5) → $131 (Oct 12). The other ~$40/day: DynamoDB $8, public IP addresses $6, disk $5, CloudWatch $5, data out $5.

2 · The machines — Oct 12

InstanceSizeUsed forHours$/hrCost
m7g.2xlarge8-core ARM, 32 GBtest shards (push / merge)880.19$17.0
m8g.2xlarge8-core ARM, 32 GBtest shards1410.12$16.8
m8gd.2xlarge8-core ARM + local disktest shards420.15$6.5
m8g.4xlarge16-core ARMmerge-queue runs200.28$5.6
m6idn.large2-core x86small jobs (guards, lint)760.06$4.4
r8gn.xlarge4-core ARM, 32 GBPR test shards200.19$3.7
m8g.xlarge4-core ARMPR test shards420.08$3.5
m7i-flex.large2-core x86small jobs610.04$2.4
m7g.4xlarge16-core ARMmerge-queue runs70.34$2.3
m6a.large2-core x86small jobs510.04$2.2
m6id.large2-core x86small jobs450.05$2.1
8 more typesmixed—~395—~$17.3
Total9980.084$83.8

The "used for" column is inferred from the size tiers in .github/workflows/ci.yml (PRs get 4-core, pushes 8-core, merge queue 16-core), not from per-job tags.

3 · Alternatives

OptionEst. cost / dayHurts the pipeline?Verdict
Today — RunsOn spot on AWS$55–85—baseline
Run tests after a merge to main on 4-core, not 8-coremaybe −$10No. Nobody waits on those runs.do first
Merge-queue runs on 8-core, not 16-coremaybe −$4A little. The merge queue gets slower.maybe
Fold the ~300 tiny guard jobs a day into fewer jobsmaybe −$3–5Noworth it, needs work
GitHub's own runners~3–5× todayNono Fede already ruled this out
Self-host on the mini~$0 extraYes. ~1,000 machine-hours a day is ~40 machines' worth of work on average, more at peaks, and the mini already can't take local tests.no
Rented dedicated servers (Hetzner-type)maybe $20–35Yes. A fixed fleet can't stretch for bursts, so PRs queue at busy times. We'd also have to run and patch the machines ourselves.only if we need the bill under ~$40/day
AWS reserved pricing / Savings Plansno change—n/a doesn't apply to spot

4 · Full-price (on-demand) machines

PropFlow Docs