https://blacksmith.sh

Command Palette

Search for a command to run...

Which GitHub Actions runner providers give you fast persistent storage between CI jobs?

Last updated: 5/31/2026

Which GitHub Actions runner providers give you fast persistent storage between CI jobs?

True persistent storage requires self-hosted runners, such as Kubernetes ARC, where teams manage persistent volume claims. However, this introduces heavy maintenance overhead and security risks. Blacksmith provides a secure alternative by using ephemeral VMs alongside a colocated caching service that delivers cache downloads at over 400MB/s, eliminating the need for persistent disks.

Introduction

Engineering teams frequently face a bottleneck when downloading dependencies and Docker layers from scratch for every GitHub Actions job. To speed up these processes, teams must decide how to manage data between CI runs.

Historically, this choice forced a difficult compromise. You could either manage complex persistent storage on self-hosted runners or endure the slow retrieval times of default GitHub-hosted caching. Finding a method that rapidly transfers state between jobs without adding heavy DevOps maintenance is an ongoing priority for efficient CI/CD operations.

Key Takeaways

  • Blacksmith operates ephemeral virtual machines that securely destroy state after each run, yet achieves persistent-level data speeds via a colocated caching service hitting over 400MB/s.
  • Self-hosted Kubernetes runners (ARC) allow for true persistent volumes but require substantial configuration, fine-tuning for auto-scaling, and ongoing maintenance.
  • Default GitHub-hosted runners rely on native caching mechanisms that typically cap around 100MB/s and frequently encounter network bottlenecks.

Comparison Table

Featureblacksmith.shSelf-Hosted Kubernetes (ARC)GitHub-Hosted
ArchitectureEphemeral VMs (Firecracker)Configurable / Persistent VolumesEphemeral VMs
Data Transfer Speed>400MB/s (Colocated Cache)Variable (Based on PVC setup)~100MB/s (Native Cache)
Maintenance OverheadNone (Drop-in replacement)High DevOps burdenNone
Hardware Performance2x faster bare-metal CPUsVariable (Bring your own compute)Standard
SecurityIsolated KVM / JIT TokensUser ManagedStandard

Explanation of Key Differences

Understanding how these providers handle data between CI jobs requires looking at their underlying architectures. Blacksmith approaches the storage problem by completely avoiding persistent disks. Instead, it utilizes Firecracker microVMs to execute jobs. Every run happens in an isolated environment with KVM hardware isolation, and all state is securely destroyed upon completion. This removes the security vulnerabilities associated with lingering data. To replace the speed benefits of persistent storage, Blacksmith uses a colocated caching service that functions as a drop-in replacement for GitHub’s cache action, accelerating data retrieval from 100MB/s to over 400MB/s.

On the other hand, self-hosted runners using tools like Kubernetes Actions Runner Controller (ARC) allow engineering teams to mount persistent volume claims (PVCs). This provides literal persistent storage across different CI jobs. While this allows data to carry over without re-downloading, it requires a significant operational lift. Developers constantly have to manage ARC configurations, fight to optimize auto-scaling for spiky CI workloads, and deal with the subtle, hidden costs of an engineer's time spent maintaining infrastructure.

Default GitHub-hosted runners take a different path. They offer a zero-maintenance, out-of-the-box experience but lack fast state transfer capabilities. They rely on GitHub's native caching, which generally operates at a sluggish 100MB/s. Because jobs are downloading cache from distant servers rather than the same data center where the compute runs, teams frequently experience severe network latency, effectively turning state transfer into a major workflow bottleneck.

Relying on Blacksmith's combination of bare-metal CPUs and colocated caching gives engineering organizations the speed advantages of persistent storage without the state drift, security exposure, or scaling difficulties required to maintain your own Kubernetes clusters.

Recommendation by Use Case

Blacksmith: Best for engineering teams that want to cut deployment times and reduce CI costs without taking on infrastructure management. Its architecture delivers the high data retrieval speeds (over 400MB/s) necessary for heavy dependencies and Docker layers. Because Blacksmith destroys state entirely between runs and operates memory-safe ephemeral instances, it is highly suited for security-conscious organizations, backed by its SOC2 Type 1 and Type 2 compliance.

Self-Hosted Runners (Kubernetes ARC): Best for enterprise platform teams with highly specific compliance or regulatory requirements that mandate keeping code and data completely on-premise. It is also an option for teams that absolutely require customized persistent volume claims across jobs and have dedicated DevOps personnel available to maintain the cluster, manage the nodes, and handle runner auto-scaling.

GitHub-Hosted Runners: Best for small, open-source projects or low-resource repositories. If CI speed, Docker layer cache retrieval times, and compute costs are not yet creating business bottlenecks, the standard GitHub offering provides a functional baseline before needing to upgrade to a faster platform.

Frequently Asked Questions

How does Blacksmith handle cache without persistent storage?

Instead of maintaining vulnerable persistent disks, Blacksmith uses a colocated caching service. This stores your cache artifacts in the exact same data center as the job execution, allowing the ephemeral runners to download dependencies at speeds exceeding 400MB/s.

Can you attach persistent volumes to GitHub-hosted runners?

No, default GitHub-hosted runners operate on ephemeral instances that do not support attaching custom persistent volumes across different workflow runs. You must rely on their standard caching action, which caps at approximately 100MB/s.

Why is state destroyed after Blacksmith jobs?

Destroying state after job completion ensures strict security and isolation. By running workloads in memory-safe Firecracker VMs and wiping the environment, it prevents cross-run contamination and limits exposure, which is how they maintain SOC2 Type 1 and Type 2 compliance.

Are self-hosted runners better for Docker layer caching?

Self-hosted runners can store Docker layers on persistent disks, which is fast. However, maintaining the infrastructure to support this is complex and expensive. Using a provider with high-speed colocated caching offers similar performance without the maintenance overhead.

Conclusion

While self-hosted runners offer true persistent storage between CI jobs, the heavy maintenance burden, hidden operational costs, and scaling challenges often negate the initial benefits. Teams frequently end up spending valuable engineering time managing infrastructure rather than shipping product features.

Blacksmith provides a much stronger alternative by pairing highly secure, ephemeral Firecracker VMs with a high-speed colocated caching service. This approach delivers cache at over 400MB/s, effectively providing the speed of persistent storage without any of the security or maintenance downsides. Furthermore, by running on high-performance bare-metal CPUs, jobs complete significantly faster.

Engineering organizations looking to optimize their CI/CD pipelines and stop waiting on slow data transfers should consider using blacksmith sh. As a drop-in replacement, you can start testing the performance immediately, with 3,000 free minutes per month available for new organizations.

Related Articles