Skip to content
Latchkey

Migrate Your Cost-Heavy Workflows to Latchkey First

Savings are not evenly spread - a few workflows eat most of your minutes. Move those first and most of the cost cut lands immediately.

Per-minute savings compound with volume, so the highest-minute workflows deliver the biggest dollar drop per label swap. This guide shows how to find them and migrate in priority order.

Find the top spenders

  1. Pull per-workflow minute usage (GitHub billing export or the Latchkey cost calculator).
  2. Rank workflows by total minutes, not by count of runs.
  3. Flag anything on larger or macOS runners - those carry the highest per-minute cost.

Migrate in priority order

  1. Swap runs-on: on the single biggest spender first.
  2. Confirm timing and results match in a parallel run.
  3. Move down the ranked list until the long tail is not worth the effort.
.github/workflows/e2e.yml
jobs:
  e2e:
    runs-on: latchkey-large   # was: ubuntu-latest-8-cores (top spender)
    steps:
      - uses: actions/checkout@v4
      - run: npm run test:e2e

Gotchas

  • Rank by minutes, not run count - a rare-but-long e2e job can outspend a frequent fast one.
  • Right-size at the same time: an over-provisioned big runner on a small job wastes the savings.
  • Stop at the point where the remaining long tail is not worth migrating.

What you gain

  • Roughly 69% lower per-minute cost than GitHub-hosted runners.
  • Warm pools remove queue time - jobs start almost immediately.
  • Self-healing detects, fixes, and auto-retries transient and mechanical failures.
  • Zero ops: no agents, autoscalers, or controllers to patch and babysit.

Key takeaways

  • A few workflows hold most of the cost.
  • Migrate highest-minute jobs first for fast ROI.
  • Right-size as you go to keep the full savings.

Related guides

See what you would save - Latchkey managed runners with self-healing. Start free →