In this article

We work through the actual cost crossover between GitHub-hosted Actions runners and self-hosted runners on dedicated bare metal, using GitHub’s current 2026 rates, correct a common misconception about a self-hosted runner fee that never took effect, and cover what a self-hosted build pipeline needs beyond just cheaper compute.


Your CI bill crept up again this month, and when you pulled up the usage breakdown, it wasn’t one big line item. It was thousands of small ones, a few minutes here, a few minutes there, across every pull request your team opened.

That’s the shape most GitHub Actions bills actually take: not a single expensive job, but volume. And volume is exactly where per-minute billing and fixed infrastructure costs start to diverge.

Clearing Up What Actually Happened With GitHub Actions Pricing

Before the cost math, it’s worth being precise about what changed in 2026, because a lot of coverage on this topic is already out of date. In December 2025, GitHub announced a new $0.002-per-minute platform charge that would apply to self-hosted runner usage starting March 2026. The backlash was immediate, and GitHub postponed the change within 48 hours “to re-evaluate our approach”. As of mid-2026, that fee has never taken effect, self-hosted runner usage remains free of any GitHub platform charge, and there’s no announced timeline for reintroducing it. A number of comparison sites and blog posts still describe the fee as active or upcoming. It isn’t, at least not right now.

What did actually happen on January 1, 2026 is the opposite of what you’d expect given the self-hosted fee scare: GitHub cut its own hosted-runner rates by up to 39%, folding a smaller platform charge into the hosted price rather than the self-hosted one. Current 2-core rates, listed on GitHub’s own Actions runner pricing reference, run $0.006 per minute for Linux, $0.010 for Windows, and $0.062 for macOS, all cheaper than they were in 2025.

So the case for self-hosting isn’t “GitHub is charging you extra to run your own hardware now”. It’s the same case that existed before any of this happened: at real CI volume, per-minute billing on hosted runners adds up faster than a fixed monthly infrastructure cost does, and the walked-back fee is worth remembering less as a current cost and more as a signal. GitHub floated monetizing self-hosted runners once already. Whether that returns in a different form is genuinely unknown, and infrastructure you control isn’t exposed to that decision either way.

The Actual Crossover Math

Here’s a worked example using GitHub’s current Linux 2-core rate of $0.006 per minute, since Linux is the overwhelming majority of CI workloads for most teams.

Take a dedicated server with 24 physical cores, OpenMetal’s current Medium v4 tier, priced at $928.80 per month for the Ashburn configuration. If that server runs a mix of parallel CI jobs sized to match GitHub’s 2-core runner definition, it can host about 12 concurrent 2-core-equivalent job slots. To find the break-even point, divide the fixed monthly cost by the per-minute hosted rate: $928.80 ÷ $0.006 works out to roughly 154,800 minutes, or about 2,580 hours, of aggregate CI compute per month before self-hosting starts saving money.

Spread across 12 parallel slots in a 720-hour month, that 2,580-hour break-even point works out to those slots averaging about 30% utilization across the month. Below that, GitHub’s per-minute pricing is genuinely competitive and self-hosting isn’t worth the operational overhead. Above it, every additional minute of CI usage is functionally free on the dedicated server and still metered on GitHub’s side.

Most teams with more than a handful of active repositories and a normal pull-request cadence clear 30% average utilization on their build infrastructure without much difficulty, which is exactly why self-hosted runners have been a standard cost lever for high-volume teams for years, independent of any pricing controversy. It’s also a conservative comparison in OpenMetal’s favor to begin with: these are dedicated physical cores running full time, not shared vCPUs, so a given job may finish faster on this hardware than on an equivalent-sized cloud runner, which would push the real crossover point even lower.

Windows minutes push that crossover even lower, since the hosted rate is nearly double the Linux rate for the same workload. macOS is a different conversation entirely: Apple’s licensing terms require actual Mac hardware to run macOS CI jobs, which OpenMetal doesn’t sell, so if a meaningful share of your pipeline needs macOS runners, that portion of your cost isn’t something dedicated Linux infrastructure solves.

A single Medium v4 node is a reasonable starting point, but it isn’t the ceiling. A team that outgrows 12 parallel job slots can move to Large v5 (32 cores/64 threads, currently $2,008.80/month) or XL v5 (64 cores/128 threads, currently $3,859.20/month) for more concurrent capacity, and the same break-even logic scales with it: a larger fixed cost against a proportionally larger number of parallel slots lands at roughly the same utilization threshold, not a worse one. Included egress bandwidth is also worth factoring in at real CI volume, since pulling base images and pushing built container images and artifacts both consume bandwidth that’s metered separately from compute on most hosted platforms; see our breakdown of why egress bills run higher than raw bandwidth usage suggests for how that’s actually measured and billed.

What Self-Hosting Actually Requires Beyond Cheaper Compute

Winning the cost math doesn’t mean the runner infrastructure runs itself. A few things matter in practice once jobs are actually landing on dedicated hardware.

Storage speed for clone and cache operations

Large repositories and dependency-heavy build steps spend real time on disk I/O, not just CPU. NVMe storage with high sequential read throughput keeps repository clones and artifact caching from becoming the bottleneck that CPU count alone won’t fix.

Isolation between the runner and the management layer

A build job that misbehaves, whether it’s a runaway process or a genuinely malicious dependency in someone’s pull request, shouldn’t be able to affect the infrastructure managing the runner fleet itself. Separating boot and data volumes, or running runners in isolated environments on the same host, keeps a bad build contained to itself. MicroVMs are a common way teams solve this for untrusted or semi-trusted code generally, not just CI specifically; our piece on microVMs and horizontal scaling covers the isolation mechanics in more depth.

Object storage for build artifacts

As a build pipeline matures, artifact storage becomes its own consideration separate from compute, particularly for teams keeping build outputs, container layers, or test reports around longer than GitHub’s default artifact retention. An S3-compatible object storage layer that every runner node can reach directly avoids bolting on separate storage infrastructure later.

Autoscaling for bursty pull-request traffic

CI load isn’t steady. It spikes around business hours and release windows and drops off overnight and on weekends. Self-hosted runner fleets that don’t scale down during quiet periods end up paying for idle capacity, which undercuts the fixed-cost advantage that made self-hosting attractive in the first place. Tools like GitHub’s own Actions Runner Controller for Kubernetes, or simpler custom autoscaling against your own infrastructure, handle this on the self-hosted side, but it’s a real piece of the setup, not a given.

Who This Fits and Who It Doesn’t

  • Fits well if your team runs enough Linux CI volume that the 20% utilization math above already applies to your current usage, even loosely
  • Fits well if your builds are compute- or I/O-bound rather than macOS-dependent, since the strongest savings and compatibility are on Linux and Windows workloads
  • Fits well if you want CI infrastructure costs that don’t move when GitHub revisits its pricing model, whatever direction that takes next
  • Doesn’t fit well if your pipeline is low-volume, with CI usage well under the free tier or comfortably inside a small monthly bill
  • Doesn’t fit well if a meaningful share of your jobs specifically require macOS runners, since that constraint doesn’t go away by self-hosting the rest
  • Doesn’t fit well if your team doesn’t have the capacity to own runner fleet management, autoscaling, and security isolation, since those become your responsibility once you’re off GitHub’s hosted infrastructure

Getting Started

The math above holds whether GitHub’s pricing changes again or not, which is the actual point. Current OpenMetal configurations suitable for self-hosted CI, including the Medium v4 tier used in the example above, are on our bare metal pricing page. For larger, sustained build volumes across a whole engineering organization, our hosted private cloud pairs compute with Ceph object storage for build artifacts on the same infrastructure.

A fixed monthly number that doesn’t change based on how many pull requests your team opened this week is the whole appeal here. Once you clear the utilization threshold, every additional CI minute is already paid for.

FAQ

Does GitHub currently charge extra for self-hosted Actions runners?

No. A $0.002-per-minute platform charge for self-hosted runners was announced in December 2025 and postponed within 48 hours after community backlash. It has never taken effect, and there’s no announced timeline for reintroducing it as of mid-2026. Self-hosted runner usage remains free of any GitHub platform fee.

Did GitHub Actions pricing get more expensive in 2026?

For hosted runners, no, it got cheaper. GitHub cut hosted-runner rates by up to 39% on January 1, 2026, bringing Linux 2-core minutes down to $0.006, Windows to $0.010, and macOS to $0.062.

At what point does self-hosting a GitHub Actions runner save money?

It depends on your CI volume and the runner size you’re replacing. Using GitHub’s current $0.006 Linux 2-core rate against a fixed monthly server cost, the break-even point is typically well under full utilization of the hardware, often in the range of 30% average utilization across parallel job slots, meaning most teams with regular CI activity clear it without much difficulty.

Can self-hosted infrastructure replace macOS GitHub Actions runners?

Not directly. Apple’s licensing terms require genuine Mac hardware to run macOS builds, which most dedicated server providers, OpenMetal included, don’t offer. Self-hosting addresses Linux and Windows CI costs; macOS-specific pipeline needs are a separate consideration.


Chat With Our Team

We’re available to answer questions and provide information.

Reach Out

Schedule a Consultation

Get a deeper assessment and discuss your unique requirements.

Schedule Consultation

Try It Out

Take a peek under the hood of our cloud platform or launch a trial.

Trial Options

 

 

 Read More on the OpenMetal Blog

The Real Cost Math Behind Self-Hosted GitHub Actions Runners

Aug 11, 2026

We work through the actual cost crossover between GitHub-hosted Actions runners and self-hosted runners on dedicated bare metal, using GitHub’s current 2026 rates, correct a common misconception about a self-hosted runner fee that never took effect, and cover what a self-hosted build pipeline needs beyond just cheaper compute.

What Your Cloud API Choice Is Actually Costing You

Mar 31, 2026

When you choose a cloud provider’s APIs, you’re making a financial commitment that compounds over time. This article breaks down how proprietary cloud APIs create vendor lock-in, what that lock-in costs in migration debt and ongoing fees, and how OpenStack-based private cloud infrastructure maps to the patterns developers already know without the long-term dependency.

Managing OpenStack Infrastructure with GitOps Workflows

Jan 13, 2026

Manual OpenStack management is risky. This guide adapts Kubernetes-style GitOps for infrastructure, covering Terraform setup, tool selection (Atlantis vs. Flux), secret management, and patterns for scaling multi-environment deployments efficiently.

Operational Visibility: When Infrastructure Predictability Isn’t Just Cost, It’s Reliability

Nov 04, 2025

Most cloud platforms promised predictability but delivered predictable bills, not predictable performance. True infrastructure reliability requires operational visibility—baseline latency, IO consistency, and debuggable systems. Learn why visibility isn’t a luxury—it’s the prerequisite for stability at scale.

Lowering Redundancy in Development for Cost Savings on Staging Environments

Oct 27, 2025

Learn how to reduce staging and development infrastructure costs by 30-50% through granular Ceph storage redundancy control. OpenMetal’s bare metal private cloud lets you configure replica 2 or erasure coding for non-production workloads while maintaining replica 3 for production, directly cutting hardware requirements.

Why Over-Provisioning on OpenMetal is a Feature, Not a Bug

Oct 23, 2025

Discover why over-provisioning on OpenMetal’s dedicated hardware isn’t wasteful, it’s a strategic advantage. Fixed monthly pricing means unused capacity costs nothing extra, enabling 4:1 CPU over-subscription, unlimited VLANs, and lower-redundancy storage that maximize ROI for bursty CI/CD workloads.

A Private Cloud with Full Root Access for DevOps Teams

Oct 02, 2025

DevOps teams need more than restricted cloud access. OpenMetal provides full root access to dedicated bare metal infrastructure, enabling complete control over hardware and software stacks. Deploy custom configurations, implement infrastructure as code, and optimize performance without vendor limitations, all in 45 seconds.

Optimizing Your CI/CD Pipeline with an OpenStack-Powered Private Cloud

Aug 22, 2025

Tired of unpredictable cloud bills and slow CI/CD builds? Discover how OpenMetal’s OpenStack-powered private cloud delivers 10x faster deployment times, eliminates noisy neighbor problems, and provides fixed-cost infrastructure that molds to your development team’s needs.

MicroVMs: Scaling Out Over Scaling Up in Modern Cloud Architectures

Jun 08, 2025

Explore how MicroVMs deliver fast, secure, and resource-efficient horizontal scaling for modern workloads like serverless platforms, high-concurrency APIs, and AI inference. Discover how OpenMetal’s high-performance private cloud and bare metal infrastructure supports scalable MicroVM deployments.

Use Cases for OpenMetal’s Medium Hosted Private Cloud Hardware

Nov 20, 2024

OpenMetal’s medium private cloud hardware, with powerful CPUs, ample RAM, and fast NVMe SSDs, offers a fitting solution for businesses needing support for things like high-performance computing, data-intensive applications, or scalable online platforms. Discover key use cases, benefits, and technical considerations of an OpenMetal medium hosted private cloud for your business.