CI cost figures are vendor list prices verified April 2026. Actual cost depends on plan, concurrency, and discount terms. Some links are affiliate links. See disclosure.

Last verified April 2026 · 7 min read

ARM runners: the largest single cost lever in GitHub Actions

GITHUB-HOSTED RUNNER COST COMPARISON

x86

$0.008/min

ubuntu-latest (x86)

1x cost

=

50%

cheaper

ARM

$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.

§ 01

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.

§ 02

Platform ARM availability

PlatformARM AvailableARM RateARM ImageNotes
GitHub Actions (hosted)Yes$0.004/minubuntu-24.04-arm0.5x Linux x86 rate since 2024
CircleCIYesarm.medium/large creditsarm.mediumARM resource class in CircleCI
GitLab CIYes (SaaS)Included in plan minutesarm64 shared runnersAvailable on GitLab.com SaaS
BuildkiteBYO (self-host)Your EC2/GKE costAny ARM imageRun your own Graviton agent
AWS CodeBuildYes$0.004/min (arm1.small)arm1.small/mediumGraviton 2/3, AWS-native
Azure DevOpsSelf-hosted onlyYour Azure costArm64 agentNo Microsoft-hosted ARM agent
DepotYes$0.002/mindepot-ubuntu-24.04-arm0.5x Depot's Linux rate, cheapest ARM
BuildJetYes (ARM-first)$0.002/minbuildjet-8vcpu-ubuntu-2204-armARM is BuildJet's speciality
§ 03

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.

§ 04

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 test

For 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 }}:latest
§ 05

Cost worked example

10-DEVELOPER NODE.JS TEAM, 6,000 MIN/MONTH

x86 Linux (ubuntu-latest)6,000 x $0.008 = $48/mo
ARM Linux (ubuntu-24.04-arm)6,000 x $0.004 = $24/mo
Annual saving from ARM switch$288/year
At 100-developer scale$2,880/year

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

Frequently asked questions

How much cheaper are ARM runners on GitHub Actions?+
GitHub-hosted ARM Linux runners bill at 0.5x the x86 Linux rate, effectively $0.004/min vs $0.008/min. For a pure Linux workload, switching to ARM cuts CI cost in half. At 10,000 minutes per month, that is $40 saved every month.
Do ARM runners work for Node.js builds?+
Yes. Node.js, Python, Go, Rust, Java, Ruby, and PHP all run natively on ARM64 without changes to your YAML. Performance is typically within 5-10% of x86 for standard web workloads.
What breaks on ARM runners?+
Common failure cases: legacy C++ with x86-specific intrinsics, proprietary x86-only binaries, older Electron versions, some ML frameworks with x86-only CUDA, and Chromium-based E2E testing. Always benchmark on a branch before switching production workflows.
How do I switch to ARM runners on GitHub Actions?+
Change runs-on: ubuntu-latest to runs-on: ubuntu-24.04-arm. That is the entire migration for most workflows. If you use Docker builds, add buildx with multi-arch support. Test on a branch before merging.
Are external ARM runners even cheaper?+
Yes. BuildJet specialises in ARM and charges $0.002/min for ARM runners, which is half the GitHub-hosted ARM rate ($0.004/min). Depot and Blacksmith also offer ARM at $0.002/min. If your workload is entirely ARM Linux, switching to BuildJet on top of switching to ARM gives you a 75% cost reduction vs GitHub-hosted x86.