runnerhut
Blog
Benchmarks, engineering notes and product news.
2026-08-11 · productCI when your teammates are agentsAI coding agents push far more often than humans. Here is how that changes pipeline design and cost control.2026-08-06 · companyWhy we publish instructions for leavingEvery migration page on this site includes the diff to migrate back off us. Here is the reasoning.2026-08-04 · engineeringWhat we learned running a million CI jobsQueue time, cache behaviour, right-sizing and the failure modes that only appear at scale.2026-07-21 · guidesStop retrying flaky testsAutomatic retries convert a real bug into an intermittent one, and train your team to distrust every failure.2026-07-15 · guidesDocker Hub rate limits are a CI problem, not a Docker problemAnonymous pulls are rate-limited per IP, and CI runners share IPs. Here is how to stop finding out at 3am.2026-07-09 · productWhat EU data residency actually requires for CIPinning your compute region is not data residency. Your cache, logs and support access all handle your source code too.2026-07-02 · benchmarksThe 10 GB cache limit is the real CI bottleneckWe instrumented 40,000 workflow runs. Cache behaviour predicted wall-clock time better than vCPU count, and most teams cross the cap without ever noticing.2026-06-30 · companyWhich CI vendors have shut down, and what it tells youBuildJet and Cirrus CI both exited. A look at what the category consolidation actually signals for buyers.2026-06-24 · companyrunnerhut is now SOC 2 Type 2We completed our SOC 2 Type 2 audit covering security, availability and confidentiality.2026-06-11 · benchmarksWhy your QEMU arm64 build is 40× slowerA measured breakdown of emulated versus native arm64 Docker builds across five real workloads, and why the penalty varies so much.2026-06-03 · benchmarksMost CI runners are the wrong size40% of jobs we see average under 30% CPU utilization. Another 12% are pinned at 100% on the critical path.2026-05-28 · companyrunnerhut raises a Series AWe raised to build out macOS and GPU capacity, EU data residency, and the observability layer.2026-05-20 · guidesThree lines of YAML that cut our customers' CI bill by a thirdConcurrency cancellation is the highest-return change available in GitHub Actions, and most repositories still do not have it.2026-05-13 · engineeringWhat is your CI job actually talking to?We put a default-deny egress policy in audit mode across a sample of pipelines. Nobody predicted their own allowlist correctly.2026-05-06 · engineeringMigrating CI to arm64: what actually breaksWe moved 200 repositories to arm64 runners. Here is the complete list of what failed and why.2026-04-23 · engineeringBuilding a CI cache that does not throttleHow we serve cache restores at 1 GB/s, and why bandwidth matters more than capacity.2026-04-21 · engineeringDocker architecture for CI engineersDaemon, containerd, BuildKit and the snapshotter — what each one does, and which one is making your build slow.2026-04-14 · companyBuildJet shut down. Here is what that means for managed CI.A competitor exiting the category is worth taking seriously rather than spinning. Here is our honest read on why BuildJet closed and what it says about managed runners.2026-04-02 · engineeringHow we cut runner start time to three secondsWarm pools, snapshot restore and the unglamorous work of predicting demand.2026-03-25 · guidesStacked diffs make CI more expensive — do them anywayStacking multiplies pipeline runs. The fix is concurrency control, not fewer pull requests.2026-03-18 · engineeringOne job, one VM: how we isolate CI workloadsWhy we do not run CI jobs in containers on a shared kernel, and what that costs us.2026-03-04 · guidesThe hidden cost of macOS minutesmacOS bills at roughly ten times the Linux rate. Most teams run more work on it than they need to.2026-02-25 · engineeringYour CI pipeline is a distributed traceModelling workflow runs as OpenTelemetry traces makes the critical path obvious in a way that a list of step durations never does.2026-02-18 · guidesDebugging CI with a breakpoint instead of 40 commitsPrint-statement debugging via push is the slowest loop in software. SSH into the runner instead.2026-02-11 · guidesYour cache key is probably wrongFour cache key mistakes that account for almost every low hit rate we see during onboarding.2026-02-04 · guidesA GitHub Actions security checklist that is actually shortFive changes that remove most of the realistic risk in a typical Actions setup.2026-01-29 · engineeringThe economics of running CI infrastructureWhere the money actually goes when you operate a runner fleet: idle capacity, egress, and the cost of a three-second start.2026-01-15 · engineeringDocker layer caching is not what you think it isMost CI Docker caching setups spend more time transferring the cache than they save by using it.2026-01-08 · guidesWhat to do when GitHub Actions changes its pricesPlatform pricing moves. Here is how to model the impact on your pipeline in an afternoon rather than a quarter.