Skip to content
Latchkey
Documentation menu

Runner usage and free minutes

How managed runner minutes are metered, what the free tier covers, where usage appears, and what happens when free minutes run out.

The Billing modal with the Managed Runners usage card
The Managed Runners card: free-tier bar, minutes this period, and estimated cost.

How metering works#

  • Usage is billed per minute, rounded up per job. A 90-second job on latchkey-small is 2 minutes.
  • Each size has its own rate: small $0.0025, medium $0.0050, large $0.0100, xlarge $0.0200 per minute. Custom-configuration runners bill at the xlarge rate.
  • Only time your job actually holds the runner is billed; jobs are capped by the 4-hour runner lifetime.
  • Self-healing carries no separate fee: extra runtime during a heal bills at the runner's standard per-minute rate.
  • Overage lands as metered line items on the same monthly Stripe invoice as your plan.

Rounding happens per job, not per month, which matters when jobs are short: a 61-second job bills as 2 minutes, so a workflow that fans out into many one-minute jobs consumes minutes noticeably faster than its total wall-clock time suggests. If that ever becomes visible on your gauge, consolidating very short jobs is the lever.

The free tier#

PlanFree runner minutes per month
Developer2,000
Launch4,000
Scale6,000
EnterpriseCustom

Free minutes reset on the first of each calendar month. Minutes within the free tier cost nothing; only usage beyond it is billed at the per-minute rates.

A worked example#

The numbers below are illustrative; the rates and allowances are the real ones. Say a team on Launch (4,000 free minutes) runs 6,000 minutes of latchkey-small in a month:

LineAmount
Minutes metered on latchkey-small6,000
Launch free tierFirst 4,000 minutes at no cost
Billable minutes6,000 - 4,000 = 2,000
Overage at $0.0025/min2,000 x $0.0025 = $5.00, as metered line items on the monthly invoice

Size scales this linearly: the same 6,000 minutes on latchkey-medium ($0.0050/min) would come to $10.00 of overage, and on latchkey-large ($0.0100/min) to $20.00. The calculator below runs the same arithmetic with your own numbers.

Estimate your cost#

Estimate your monthly runner cost

0
billable minutes (after free tier)
$0.00
estimated runner overage / month
$0.00
same minutes on GitHub-hosted Linux

Estimates only. GitHub comparison uses the $0.008/min 2-vCPU Linux list price; larger sizes scale proportionally. Your invoice is based on actual metered usage.

Where to see usage#

  • The Billing modal shows a free-tier progress bar, this period's total and billable minutes, and the estimated runner cost so far.
  • The Latchkey Runners page shows fleet-level cost, estimated savings versus GitHub-hosted, and free-tier consumption.
  • The Cost Analysis page tracks Latchkey runner spend alongside your GitHub spend, including free-tier gauges for both.

Running out of free minutes#

  • You are warned at 80% and again at 100% of your included minutes.
  • With a subscription on file: jobs keep running and the overage is metered to your invoice. There is no hard spend cap.
  • On a card-less trial: once free minutes are exhausted, new managed-runner jobs are blocked until you subscribe. Blocked jobs stay queued on GitHub (no error in the GitHub UI) and a "Managed runner blocked" notification is sent.

The timeline at a glance#

0180% usedFirst "free tier running out" warning: check the gauge and decide
02100% usedSecond warning: every further minute is billable, or blocked on a card-less trial
03Overage or blockWith a subscription, jobs keep running and the meter runs; a card-less trial stops launching new runners
04Monthly resetFree minutes reset on the first of the calendar month

Treat the 80% warning as the decision point rather than the 100% one: a fifth of the tier is still left, which is room to either trim usage (the Cost Analysis page shows where the spend is coming from) or accept the overage knowingly. With a subscription on file there is no hard spend cap, so accepting is a perfectly valid answer; it should just be a chosen one.

If launches are blocked#

Confirm it is the free-minute gate

Blocked jobs sit in queued on GitHub with no error, and a "Managed runner blocked" notification is sent. The free-tier gauge (in the billing modal or on the Runners page) confirms the state: 100% used on a card-less trial.

Subscribe to lift the block

New managed-runner jobs are blocked until you subscribe, so adding a subscription is the direct fix; with one on file, usage beyond the free tier simply meters to your invoice instead of blocking.

Or bridge to the monthly reset

Free minutes reset on the first of the calendar month. Until then, urgent workflows can point back at GitHub-hosted labels, which keep working side by side with latchkey-* labels the whole time.