One-line change, 75% cost cut

airCloset CTO Ryan Tsuji cut GitHub Actions CI costs to roughly a quarter of the original by switching runners twice. Each migration was a one-line change to runs-on. The final setup, on Namespace, also slashed p90 latency by 37% and eliminated silent hangs that plagued the previous provider.

Why CI costs balloon with AI agents

Tsuji identifies two compounding factors: AI agents push more frequently, increasing run count, and teams add more CI tasks (linting, coverage gates) as development speeds up. A single test workflow at airCloset runs 3,000–3,500 times per month. Run count times task count equals a quietly growing bill.

The migration path

  • Until late March: GitHub-hosted (2-core)
  • Late March to June: Blacksmith (4 vCPU)
  • Late June to now: Namespace (4 vCPU/8GB)

They also evaluated self-hosting on AWS spot instances but rejected it due to instance startup overhead. Always-pooled runners win.

Each migration is literally a one-line change:

jobs:
  test:
    runs-on: nscloud-ubuntu-24.04-amd64-4x8

Migration 1: GitHub-hosted to Blacksmith

Comparing two weeks on either side, median run time dropped from 340s to 139s (-59%), and p90 from 598s to 157s (-74%). The machine doubled from 2-core to 4 vCPU. Unit price: GitHub 2-core $0.006/min, Blacksmith 4 vCPU $0.008/min. For 1.33x the price of 2 cores, you get twice the machine. Per-run cost dropped ~45%.

But Blacksmith had a flaky hang issue: npm install would occasionally hang silently, leaving runs stuck until the 6-hour default timeout. Over ~2.5 months, 32 runs died at a 30-minute timeout without notice. Manual cancels weren't counted, so 32 is a floor.

Migration 2: Blacksmith to Namespace (with a failure)

Namespace's Developer plan caps concurrency at 32 vCPUs (8 machines at 4 vCPU each). airCloset's AI-driven parallel development blew past that, causing queue pileups. They rolled back to Blacksmith after two days, upgraded to Business plan (160 vCPUs, 40 machines), and re-migrated successfully.

Lesson: measure peak concurrency before switching. Pull run history from the GitHub API to get the peak number of simultaneously running jobs.

Measured results: tail shrinks more than median

The rollback provided a controlled experiment. Comparing Blacksmith (rollback window) vs Namespace on identical workflows:

  • Median: 378s → 339s (-10%)
  • p90: 839s → 526s (-37%)
  • Hangs: 32 → 0

For agent-loop operation, tail latency matters more than median because loop iteration time is set by the slowest link.

Cost math

Published unit prices (Linux x64, as of July 2026):

RunnerSizePrice/min
GitHub-hosted standard2-core$0.006
GitHub larger runner4-core$0.012
Blacksmith4 vCPU$0.008
Namespace4 vCPU/8GB$0.004 (prepaid)

Namespace's 4 vCPU costs less per minute than GitHub's 2-core. Per run, GitHub → Blacksmith cut ~45%, Blacksmith → Namespace roughly halved it again. Total: ~25% of the GitHub-hosted era.

Caveats: Namespace has a plan fee ($100/month Team, $250/month Business). Overage is $0.006/min. Prices change; check current pages.

Which tier are you in?

  • Free tier: stay on GitHub-hosted. Do nothing.
  • Past free tier, bill stings: Blacksmith or Namespace both offer a one-line change for twice the machine. Blacksmith has 3,000 free minutes/month; Namespace has a 30-day trial.
  • AI agents are your main developers: choose on tail latency and stability, and estimate peak concurrency before migrating.

Actionable takeaways

  1. If you're paying for GitHub-hosted runners, switch to a cheaper provider with a one-line runs-on change. The cost savings are immediate.
  2. Measure peak concurrency before migrating to a plan with concurrency caps. Use the GitHub API to find the max number of simultaneous jobs.
  3. For AI-driven development, prioritize tail latency and stability over median speed. Silent hangs stall agent loops.