CICDCost.com is an independent comparison resource. Not affiliated with GitHub, GitLab, CircleCI, Buildkite, or any CI/CD vendor. Try our CI/CD calculator

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

Cloud CI cost = minutes x per-minute rate
Self-hosted cost = server cost (no platform fee)
GitHub Actions break-even example (t3.medium at $30/mo, Team plan):
Cloud: (15,000 - 3,000 free) min x $0.006 = $72/mo
Self-hosted: $30/mo (server only)
Saving: $42/mo. Break-even at ~8,000 minutes/month (including 3,000 free on Team)

Break-Even Tables by Instance Type

Self-hosted runnerMonthly server costBreak-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.

Hosted CI cost/month
$102.00
Self-hosted total/month
$30.00
Monthly saving
-$72.00
Break-even: 8,000 min/mo

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.

ScenarioGitHub Actions self-hostedGitLab 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 minutesGitHub 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.

FAQ

At what build volume does self-hosting become cheaper?
For GitHub Actions: break-even at ~8,000 minutes/month with a t3.medium ($30/mo), including the 3,000 free Team-plan minutes. For Hetzner CX21 ($5/mo): break-even at ~3,850 minutes. GitLab CI self-managed works out the same (no platform fee on either platform): ~5,000 minutes on a $30 server before free-tier adjustments. Use our calculator above with your specific server cost.
Is there a platform fee on GitHub Actions self-hosted runners?
No. GitHub announced a $0.002/min charge for self-hosted runners on private repos in December 2025 (scheduled for March 1, 2026), then postponed it within 48 hours after community backlash. It never took effect. Self-hosted runner usage remains free as of June 2026, though GitHub has said it is re-evaluating its approach rather than cancelling the idea outright.
Should I plan for GitHub reintroducing a self-hosted charge?
It is worth noting in long-term plans. GitHub described the change as postponed, not cancelled, and committed to consulting developers before any future attempt. There is no announced timeline or replacement model as of June 2026. Self-hosted ROI calculations should use today's reality (no fee), with the caveat that a future charge would raise break-even volumes if introduced.

Updated 2026-06-11