Migrate from Cirun to Latchkey: A Fair Comparison
Cirun and Latchkey both give you cheaper GitHub Actions runners than GitHub-hosted, but they sit on opposite sides of one choice: run the infrastructure yourself in your own cloud, or hand it off entirely.
Cirun launches GitHub Actions runners - including GPU and ARM64 - on demand inside your own cloud account (AWS, GCP, Azure, Oracle, DigitalOcean, Hetzner, OpenStack, Vast.ai), configured through a .cirun.yml file, and you pay your cloud provider directly. Latchkey runs your GitHub Actions on fully-managed runners with no cloud account to connect or operate, adds self-healing so transient failures recover automatically, and bills a low per-minute rate. This page is a fair look at when to keep Cirun and when Latchkey fits better.
At a glance
| Capability | Cirun | Latchkey |
|---|---|---|
| Where runners run | Your own cloud account (multi-cloud) | Fully managed (no cloud to connect) |
| GPU / ARM64 / specialized HW | Yes (in your cloud) | Managed runner sizes |
| You operate the infra | Yes (credentials, quotas, images) | No |
| Config model | .cirun.yml in your repo | One-line runs-on label swap |
| Self-healing CI (auto-retry transient failures) | No | Yes |
| Cheaper than GitHub-hosted | Yes (you pay your cloud) | Yes (up to ~58% lower per minute) |
| Best known for | GPU / multi-cloud in your infra | Fully-managed self-healing runners |
What Cirun is genuinely good at
Cirun shines when you want runners inside your own cloud account and need hardware GitHub-hosted does not offer conveniently: GPU jobs, ARM64, big-RAM instances, or custom machine images. It supports many clouds (AWS, GCP, Azure, Oracle, DigitalOcean, Hetzner, OpenStack, Vast.ai), can use preemptible/spot instances for lower cost, and because compute runs in your account you keep full data-residency and network control. If your ML or robotics pipeline needs a specific GPU AMI, that flexibility is hard to beat.
The trade-off Cirun asks you to accept
Because runners live in your cloud, you own that cloud. You connect credentials, manage IAM permissions, watch GPU and vCPU quotas, pick regions and machine images, and pay the cloud bill. Cirun manages the orchestration, but the account, its limits, and its failure modes are yours. That is the same your-infra trade-off RunsOn makes - great for control, more surface area to operate.
What Latchkey adds
Latchkey is fully managed: there is no cloud account to connect, no IAM to grant, no quota to babysit. It is built around self-healing CI - out-of-memory kills, disk-full errors, registry timeouts, and other transient or mechanical failures are detected, fixed, and retried automatically, so flaky builds stop failing your pipeline. It also runs up to ~58% lower per-minute cost than GitHub-hosted, offers AI build optimization, and attaches with a drop-in runs-on label change.
Choosing between Cirun and Latchkey
- Pick Cirun if you need GPU, ARM64, or specialized hardware in your own cloud account and want full control over where compute runs.
- Pick Latchkey if you want fully-managed runners with nothing to operate, self-healing that removes flaky re-runs automatically, and a low per-minute rate without owning a cloud account.
How a migration looks
Moving off Cirun means retiring your .cirun.yml and cloud connection for the workflows you migrate, then pointing runs-on at a Latchkey label instead of the cirun-<label>--${{ github.run_id }} pattern. Because both use standard GitHub Actions runners, you can migrate one workflow at a time and keep Cirun for GPU jobs it handles well.
The verdict
If your priority is GPU or specialized hardware in your own cloud, Cirun is a strong choice and worth keeping for those jobs. If you want fully-managed runners with nothing to operate, self-healing that recovers flaky failures on its own, and a lower per-minute cost, Latchkey is the better fit. Verify current Cirun pricing on cirun.io, since vendor pricing changes. You can start free and compare against your real builds.