Self-Hosted CI vs Cloud CI: When Does It Save Money?
The January 2026 hosted-runner rate cuts moved the break-even points. Here is the updated analysis. Updated June 2026.
The March 2026 platform fee never took effect
GitHub announced a $0.002/min charge for self-hosted runners on private repos (December 2025), then postponed it within 48 hours after community backlash. Self-hosted runner usage remains free. The break-even math below uses the full $0.006/min hosted Linux rate as the saving. See the 2026 pricing changes brief for the full story.
The Core Calculation
Break-Even Tables by Instance Type
| Self-hosted runner | Monthly server cost | Break-even (vs GitHub Actions Linux) |
|---|---|---|
| Hetzner CX21 (2 vCPU / 4 GB) | $5/mo | ~3,850 min |
| Hetzner CX31 (2 vCPU / 8 GB) | $10/mo | ~4,700 min |
| AWS t3.small | $15/mo | ~5,500 min |
| AWS t3.medium | $30/mo | ~8,000 min |
| AWS c5.xlarge | $120/mo | ~23,000 min |
Formula: break-even minutes = (server cost / $0.006) + free tier minutes (3,000 on Team plan). Hetzner (EU) is dramatically cheaper than AWS for European teams with no strict data residency requirements.
Self-Hosted Break-Even Calculator
Compare hosted CI cost vs self-hosted runner cost at the January 2026 rates.
Does not include engineering maintenance time. No platform fee on self-hosted runners: the charge GitHub announced for March 2026 was postponed and never took effect. Prices verified June 2026.
GitLab CI Self-Managed: Same Economics
Neither platform charges for self-hosted runners
GitLab CE self-managed and GitHub Actions self-hosted both cost you only the server: neither charges a per-minute platform fee. The self-hosted choice between them is about tooling and migration cost, not runner economics.
| Scenario | GitHub Actions self-hosted | GitLab CE self-managed |
|---|---|---|
| 20,000 min/mo, t3.medium ($30/mo) | $30/mo (server only) | $30/mo (server only) |
| 50,000 min/mo, t3.large ($60/mo) | $60/mo | $60/mo |
The macOS Exception: Always Self-Host High-Volume iOS CI
Self-hosting macOS CI requires physical Apple hardware (Mac mini at $599+, Mac Studio at $1,999+). Amortised over 3 years + electricity + colocation: roughly $40-80/month per machine.
| Monthly iOS build minutes | GitHub Actions hosted ($0.062/min) | Self-hosted Mac mini (amortised) |
|---|---|---|
| 500 min/mo | $31/mo | ~$40-80/mo |
| 1,000 min/mo | $62/mo | ~$40-80/mo |
| 2,000 min/mo | $124/mo | ~$40-80/mo |
| 5,000 min/mo | $310/mo | ~$50-90/mo |
At around 650-1,300 minutes/month per machine, self-hosted macOS breaks even. Any iOS team doing daily CI should self-host.
Arm Runners: 20-30% Additional Savings
AWS Graviton (Arm) runners cost 20-30% less than x86 equivalents for comparable performance. GitHub now offers native Arm-hosted runners. Most CI workloads (Node.js, Python, Go) run unmodified on Arm.
For self-hosted Arm: Hetzner and Ampere Cloud offer Arm instances at very low cost. An Ampere A1 Compute instance on Oracle Cloud Free Tier gives 4 Arm vCPU / 24 GB RAM - effectively free for CI.