Last verified April 2026 · 7 min read
ARM runners: the largest single cost lever in GitHub Actions
GITHUB-HOSTED RUNNER COST COMPARISON
$0.008/min
ubuntu-latest (x86)
1x cost
=
50%
cheaper
$0.004/min
ubuntu-24.04-arm
0.5x cost
Alt: ARM runners bill at 0.5x Linux x86 on GitHub-hosted runners since 2024.
Why ARM is cheaper
GitHub-hosted ARM Linux runners run on AWS Graviton hardware. AWS passes through a portion of the Graviton cost advantage: ARM instances are cheaper to operate per compute unit than x86 at cloud scale, and GitHub prices this at 0.5x the x86 Linux rate.
This is not a temporary promotion. The 0.5x ARM pricing reflects the real hardware economics of running Graviton vs x86 at scale. Graviton 3 (c7g, m7g) offers competitive performance to x86 on standard web workloads while consuming approximately 60% of the power. The performance-per-dollar advantage is real and long-term.
The ARM runner was generally available on GitHub-hosted runners for all orgs in 2024. The pricing gap between x86 and ARM has been consistent since introduction.
Platform ARM availability
| Platform | ARM Available | ARM Rate | ARM Image | Notes |
|---|---|---|---|---|
| GitHub Actions (hosted) | Yes | $0.004/min | ubuntu-24.04-arm | 0.5x Linux x86 rate since 2024 |
| CircleCI | Yes | arm.medium/large credits | arm.medium | ARM resource class in CircleCI |
| GitLab CI | Yes (SaaS) | Included in plan minutes | arm64 shared runners | Available on GitLab.com SaaS |
| Buildkite | BYO (self-host) | Your EC2/GKE cost | Any ARM image | Run your own Graviton agent |
| AWS CodeBuild | Yes | $0.004/min (arm1.small) | arm1.small/medium | Graviton 2/3, AWS-native |
| Azure DevOps | Self-hosted only | Your Azure cost | Arm64 agent | No Microsoft-hosted ARM agent |
| Depot | Yes | $0.002/min | depot-ubuntu-24.04-arm | 0.5x Depot's Linux rate, cheapest ARM |
| BuildJet | Yes (ARM-first) | $0.002/min | buildjet-8vcpu-ubuntu-2204-arm | ARM is BuildJet's speciality |
When ARM works
WORKS WITHOUT CHANGES
- ✓Node.js / npm / pnpm / yarn builds
- ✓Python / pip / poetry / uv
- ✓Go compilation and testing
- ✓Rust / cargo
- ✓Java / Maven / Gradle
- ✓Ruby / bundler
- ✓PHP / Composer
- ✓Docker multi-stage builds (with buildx)
- ✓Most standard web application workloads
FAILURE CASES
- ✗Legacy C++ with x86-specific intrinsics (SSE, AVX)
- ✗Proprietary binaries compiled for x86 only
- ✗Older Electron versions before ARM64 support
- ✗Some ML frameworks with x86-only CUDA paths
- ✗Chromium-based E2E testing (improving)
- ✗Some Go CGo packages with x86-specific C deps
The honest counterpoint: a 0.5x rate on a workload that takes 1.2x the wall-clock time is only a 0.6x total cost reduction, not 0.5x. Always benchmark before committing. But in practice, most standard web workloads perform within 5-10% of x86 on ARM64, so the 0.5x rate is effectively realised.
Migration recipe
# Switch a workflow from x86 to ARM
jobs:
build:
# Before:
# runs-on: ubuntu-latest
# After: pick one of these
runs-on: ubuntu-24.04-arm # GitHub-hosted ARM
# runs-on: depot-ubuntu-24.04-arm # if using Depot
# runs-on: buildjet-8vcpu-ubuntu-2204-arm # if using BuildJet
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: '22'
cache: 'npm'
- run: npm ci
- run: npm testFor Docker builds, add multi-arch support with buildx:
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and push
uses: docker/build-push-action@v6
with:
platforms: linux/arm64,linux/amd64
cache-from: type=gha
cache-to: type=gha,mode=max
push: true
tags: ghcr.io/${{ github.repository }}:latestCost worked example
10-DEVELOPER NODE.JS TEAM, 6,000 MIN/MONTH
One hour of YAML editing. $288 saved in the first year on a small team. The ROI calculation is trivial. The only question is whether your workload has ARM compatibility issues.
DIGITAL SIGNET · PIPELINE AUDIT
Ready to switch to ARM? We validate compatibility in two days.
Digital Signet reviews your workflow definitions, identifies ARM-incompatible steps, and delivers a migration plan with a tested YAML diff.
Get an Audit