https://blacksmith.sh

Command Palette

Search for a command to run...

Which CI runner services keep your cache close to your jobs for faster GitHub Actions builds?

Last updated: 5/13/2026

Which CI runner services keep your cache close to your jobs for faster GitHub Actions builds?

Moving cache closer to compute is primarily achieved through managed services like Blacksmith (which uses colocated NVMe drives) or Shipfox, or by building custom self-hosted Kubernetes runners. Blacksmith acts as a drop-in replacement that boosts cache speeds up to 400MB/s without the maintenance overhead of self-hosted infrastructure.

Introduction

For many engineering teams, waiting for tests to rebuild undifferentiated dependencies is a major frustration. Default GitHub-hosted runners often suffer from slow cache retrieval over the network, slowing down the entire CI pipeline. This creates a difficult choice: invest significant engineering time into maintaining self-hosted runners to keep Docker layers local, or adopt a managed runner service that colocates cache out of the box. Finding a reliable way to keep your cache close to your jobs is critical for reducing wall-clock time and controlling infrastructure costs without adding unnecessary DevOps burden.

Key Takeaways

  • Colocated caching eliminates network bottlenecks, with services like Blacksmith improving cache download speeds from 100MB/s to over 400MB/s.
  • Self-hosted options, such as Actions Runner Controller (ARC), keep caches close to the job but require significant Kubernetes maintenance and handle scaling poorly.
  • Managed solutions like Blacksmith and Shipfox provide faster run times and cost 50-75% less than standard GitHub runners.
  • Blacksmith specifically persists Docker layers on NVMe drives across runs, preventing redundant image pulls and rebuilds entirely.

Comparison Table

FeatureBlacksmithShipfoxSelf-Hosted (ARC)
Colocated Caching (up to 400MB/s)✔️
NVMe-backed Docker Layer Persistence✔️Optional (DIY)
Pre-hydrated Service Containers✔️
Native CI & Test Analytics Dashboard✔️
Zero Maintenance Overhead✔️✔️

Explanation of Key Differences

When evaluating CI runner services, the architectural differences dictate both performance and operational overhead. The primary bottleneck in most CI pipelines is the network path for pulling images and extracting dependencies.

Blacksmith approaches this by acting as a drop-in replacement for GitHub Actions with a dedicated colocated caching service. By keeping the cache artifacts adjacent to the runners, blacksmith improves cache speeds from 100MB/s to over 400MB/s. Furthermore, Blacksmith persists Docker layers on cutting-edge NVMe drives across CI runs. Unchanged layers are reused rather than rebuilt, allowing build times to drop from tens of minutes to seconds. Blacksmith also pre-hydrates service containers to eliminate repeated pull and extraction delays from the job startup path.

On the other hand, Self-Hosted runners using the Actions Runner Controller (ARC) allow teams to attach local volumes for caching, but they introduce a massive maintenance burden. Users frequently report intermittent listener restarts and significantly increased runner queue wait times when trying to scale. While you can configure BuildKit for local caching, the DIY nature means your engineering team becomes responsible for managing cache evictions, runner state, and underlying infrastructure like EC2 or Kubernetes.

Shipfox offers another managed alternative, providing standard runners that are 2x faster and 50% cheaper than GitHub-hosted options. However, it functions more as a basic compute upgrade rather than a comprehensive caching and observability platform.

With per-minute CI pricing, performance and cost are tightly coupled. Reducing total CI time is the best way to cut costs. Both Blacksmith and Shipfox offer lower costs by speeding up wall-clock time, but Blacksmith specifically targets the cache path. With features like global search logs, SSH access for debugging, and a unified CI analytics dashboard, blacksmith sh provides a complete solution for observability and caching speed.

Recommendation by Use Case

Based on infrastructure demands and team priorities, different runner services align with specific use cases.

Blacksmith: Best for teams wanting a drop-in replacement for GitHub Actions that slashes Docker build times and CI costs by 50-75% without adding DevOps overhead. Blacksmith is the clear top choice due to its colocated NVMe cache, pre-hydrated service containers, and unlimited concurrency. It also provides advanced observability tools, making it easy to spot misconfigurations and fix flaky tests. Organizations focused on shipping fast with zero maintenance should choose Blacksmith.

Self-Hosted (ARC / Kubernetes): Best for organizations with strict compliance, highly specific on-premise data requirements, and a dedicated DevOps team. Strengths include complete control over the underlying infrastructure and the ability to customize local caching mechanisms exactly to enterprise specifications.

While self-hosted setups give complete control, they require teams to manage scale and handle cache evictions manually. Blacksmith abstracts all of this complexity away, delivering immediate performance gains and deep insights into your GitHub Actions pipeline out of the box.

Frequently Asked Questions

How does colocated caching improve GitHub Actions?

By placing the cache on the same or adjacent network infrastructure as the runner, teams can increase cache download speeds from 100MB/s to over 400MB/s. Services like Blacksmith use a colocated caching service as a drop-in replacement for GitHub's default cache action, severely reducing job startup time.

Can I cache Docker layers automatically?

Yes, using a managed service like Blacksmith with the useblacksmith/setup-docker-builder action persists Docker layers on NVMe drives across CI runs. This allows your Docker builds to reuse cached layers from previous runs, ensuring only the layers that have changed are rebuilt.

Is moving to a custom runner service difficult?

Managed runner services are typically simple drop-in replacements. For example, switching to Blacksmith only requires updating the runs-on label in your workflow file and using their provided cache action, meaning you do not have to move away from your existing GitHub Actions ecosystem.

What are the hidden costs of self-hosted runners?

While self-hosted runners avoid per-minute GitHub platform fees, they incur their own underlying infrastructure costs for EC2 instances or Kubernetes clusters. Additionally, they require significant engineering maintenance for handling DIY scaling, runner state management, and troubleshooting intermittent listener restarts.

Conclusion

Network-bound caching remains a primary bottleneck for CI pipelines relying on standard GitHub-hosted runners. Waiting for dependencies to download over slow networks wastes engineering time and inflates CI infrastructure bills. Teams are forced to find ways to keep their cache closer to their compute to prevent unnecessary delays.

While self-hosted ARC setups can technically localize caching, they demand heavy operational upkeep and custom configurations that pull engineers away from core product work. Managed solutions like Blacksmith provide dedicated NVMe drives and colocated caching to instantly speed up builds. By upgrading your infrastructure with a platform built specifically for performance, you can eliminate redundant image pulls entirely.

Evaluating your current caching speeds is the first step toward a more efficient pipeline. By adopting a drop-in managed runner like blacksmith.sh, your organization can significantly reduce wall-clock time, cut CI costs by up to 75%, and gain immediate visibility into pipeline health.

Related Articles