Skip to content
Latchkey

RunsOn vs GitHub-Hosted Runners: A Licence, Not a Rate

RunsOn has no per-minute price. It is a flat annual licence per legal entity and the compute is your own AWS bill, which makes it either the cheapest or the most expensive option on this site depending entirely on volume.

Every other provider in this category meters you. RunsOn does not: you pay an annual licence starting from EUR 300/year for under 50,000 runners per month, rising to EUR 3,600/year at 500,000+, and the runners execute in your own AWS account. As their pricing page puts it, this is your AWS bill, not theirs.

That inverts the usual comparison. Instead of comparing $0.004 against $0.006, you are comparing a fixed annual cost plus EC2 at your own rates against a metered rate. The crossover point is entirely a function of how many minutes you run.

Standard GitHub-hosted runners are free and unlimited on public repositories, and public repos get 4 vCPU and 16 GB rather than the 2 vCPU and 8 GB private repositories receive. No paid runner beats free, so everything below assumes a private repository past its included minutes.

Two different cost shapes

GitHub-hostedRunsOn
Pricing modelPer minute, per sizeFlat annual licence, no metering
Entry price$0 until included minutes are usedFrom EUR 300/year
Compute costIncluded in the rateYour own AWS bill, at your own rates
Where it runsGitHub infrastructureYour AWS account
Spot instancesNot availableAvailable, since it is your EC2
Operational burdenNoneYours: capacity, images, incidents
Free tier2,000-50,000 min by planFree for OSS, nonprofit, education

Where the crossover is

A licence beats metering above a volume threshold and loses below it. The arithmetic is simple enough to do before you trial anything.

Monthly Linux minutesGitHub-hosted at $0.006RunsOn licence + rough EC2
10,000$60/moEUR 25/mo licence + EC2 (~$15)
100,000$600/moEUR 25/mo licence + EC2 (~$150)
1,000,000$6,000/moEUR 300/mo licence + EC2 (~$1,500)

What you take on

  • Capacity planning and scale-out behaviour become yours. A pool that does not scale during a busy afternoon is your incident.
  • Runner images need maintaining, or you inherit the drift between your image and what GitHub-hosted workflows assume.
  • Security boundary moves into your account: network policy, IAM, and isolation between jobs are your responsibility.
  • Spot interruptions surface as mid-run failures, which is a real trade for the discount rather than a free win.

Switching, and switching back

Every managed runner in this category is selected by the runs-on label, so adoption and reversal are the same one-line edit. That makes a two-week trial on your slowest job a better decision procedure than any amount of modelling.

workflow.yml
jobs:
  build:
    runs-on: ubuntu-latest        # GitHub-hosted
    # runs-on: latchkey-small     # Latchkey

How to evaluate a managed runner honestly

Runner vendors compete on a headline per-minute rate, and the rate is rarely what decides the bill. Measure the whole job, on your own pipeline, before committing.

  • Compare at equal machine shape. A cheaper per-minute rate on fewer vCPUs or less RAM is not cheaper per unit of work.
  • Check billing granularity. Per-minute rounding costs real money on a wide matrix of short jobs; per-second does not.
  • Include queue and boot time. A runner that is cheaper per minute but slower to start can cost more per merge.
  • Count your re-runs. If a meaningful share of your runs are retries of a failed job, you are paying for the same work twice at whatever rate you negotiated, and no rate card prices that.
  • Verify the free tier is recurring. A one-time credit is not a free tier.

The verdict

Low volume: RunsOn is the most expensive option here. A EUR 300/year floor against a $0 GitHub bill inside included minutes is not a close call.

High volume with AWS expertise in-house: RunsOn is very likely the cheapest option available, and the gap widens with scale. At a million minutes a month the licence is a rounding error against the metered alternative.

Regulated or network-isolated environments: RunsOn is one of the few options that runs entirely inside your account.

The honest deciding question is not price, it is whether you want to own runner operations. If nobody on the team wants that pager, a metered provider is cheaper than it looks.

Frequently asked questions

RunsOn vs GitHub-Hosted Runners: A Licence, Not a Rate?
Every other provider in this category meters you. RunsOn does not: you pay an annual licence starting from EUR 300/year for under 50,000 runners per month, rising to EUR 3,600/year at 500,000+, and the runners execute in your own AWS account. As their pricing page puts it, this is your AWS bill, not theirs.
Where the crossover is?
A licence beats metering above a volume threshold and loses below it. The arithmetic is simple enough to do before you trial anything.
Switching, and switching back?
Every managed runner in this category is selected by the runs-on label, so adoption and reversal are the same one-line edit. That makes a two-week trial on your slowest job a better decision procedure than any amount of modelling.
Which should I choose?
Low volume: RunsOn is the most expensive option here. A EUR 300/year floor against a $0 GitHub bill inside included minutes is not a close call.

Related guides

References

RunsOn is cheaper per minute. It still bills you twice for a flaky job - Latchkey repairs it instead. Start free → 30-day trial · No credit card