Is There a Minimum Billing Increment?

WarpBuild bills GitHub Actions runners in one-minute increments, with no minimum block and no per-job fee, and the reports view shows billed minutes per job.

Last verified:

The billing increment for a WarpBuild GitHub Actions runner is one minute. There is no five-minute block, no ten-minute block, and no per-job runner fee on top of the minutes, so a job's runner line is its billed minutes multiplied by the per-minute rate of the label it ran on.

Answer

Runners bill on a per-minute basis, which the WarpBuild pricing page states in its billing FAQ and the cloud runners documentation carries as a per-minute rate against every label in the catalog, both checked on 2026-08-13. One minute is the entire increment. A job that finishes in 40 seconds and a job that finishes in 60 seconds land in the same one-minute bucket, so a fleet with thousands of tiny jobs needs to watch job count as closely as total minutes.

That makes the minimum runner charge for any single job easy to read off the rate list: it is one minute at the label rate.

PlatformRunner labelShapeRate per minuteMinimum runner charge for one job
Linux x64warp-ubuntu-latest-x64-2x2 vCPU, 8 GB$0.004$0.004
Linux x64warp-ubuntu-latest-x64-4x4 vCPU, 16 GB$0.008$0.008
Linux x64warp-ubuntu-latest-x64-8x8 vCPU, 32 GB$0.016$0.016
Linux x64warp-ubuntu-latest-x64-16x16 vCPU, 64 GB$0.032$0.032
Linux x64warp-ubuntu-latest-x64-32x32 vCPU, 128 GB$0.064$0.064
Linux ARM64warp-ubuntu-latest-arm64-2x2 vCPU, 8 GB$0.003$0.003
Linux ARM64warp-ubuntu-latest-arm64-4x4 vCPU, 16 GB$0.006$0.006
Linux ARM64warp-ubuntu-latest-arm64-8x8 vCPU, 32 GB$0.012$0.012
Linux ARM64warp-ubuntu-latest-arm64-16x16 vCPU, 64 GB$0.024$0.024
Linux ARM64warp-ubuntu-latest-arm64-32x32 vCPU, 128 GB$0.048$0.048
macOSwarp-macos-latest-arm64-6x6 vCPU, 22 GB$0.08$0.08
macOSwarp-macos-latest-arm64-12x12 vCPU, 44 GB$0.16$0.16
Windowswarp-windows-latest-x64-4x4 vCPU, 16 GB$0.016$0.016
Windowswarp-windows-latest-x64-8x8 vCPU, 32 GB$0.032$0.032
Windowswarp-windows-latest-x64-16x16 vCPU, 64 GB$0.064$0.064
Windowswarp-windows-latest-x64-32x32 vCPU, 128 GB$0.128$0.128

Rates come from the pricing page and the cloud runners documentation, checked on 2026-08-13. The floor for one job across the whole catalog is $0.003, one minute on warp-ubuntu-latest-arm64-2x, and the highest single-minute charge is $0.16 on warp-macos-latest-arm64-12x. Those four ladders are the complete picture.

The rate the increment multiplies is the other half of the answer. warp-ubuntu-latest-x64-2x (2 vCPU, 8 GB) costs $0.004 per minute against $0.006 per minute for GitHub-hosted ubuntu-latest on private repositories (2 vCPU, 8 GB): 33 percent lower list price. GitHub list price checked on 2026-08-13 at docs.github.com, where GitHub also documents its own per-minute accounting for GitHub Actions billing.

Billed minutes are not an estimate you have to reconstruct. The reports documentation describes a Billing section whose CI tab lists execution time and billed time in adjacent columns for every job execution, which is where the increment becomes visible per job.

Detail

Many short jobs against fewer long ones

The increment costs money only when jobs carry a fractional-minute tail, and the penalty scales with job count rather than with total work. Take 60 minutes of execution on warp-ubuntu-latest-x64-4x at $0.008 per minute and split it four ways.

Shape of the runJobsExecution per jobExecution totalBilled minutesCost per run
Wide lint and unit matrix900:4060 min90$0.720
Test shards on whole minutes203:0060 min60$0.480
Test shards with a tail203:1063 min 20 s80$0.640
Folded suites610:0060 min60$0.480

At 400 pull request runs a month, the 90-job shape costs $288.00 and the 6-job shape costs $192.00 for identical work, a $96.00 monthly difference created entirely by job count. The bound is simple enough to budget against: billed minutes never exceed execution minutes plus one minute per job. A 200-job fan-out therefore adds at most 200 billed minutes, which is $1.60 on warp-ubuntu-latest-x64-4x and $0.60 on warp-ubuntu-latest-arm64-2x. The same worst case on warp-macos-latest-arm64-6x at $0.08 per minute is $16.00 per run, which is why short macOS jobs are the ones worth folding together first.

A sharded matrix is the usual source of forty-second jobs.

name: tests
on:
  pull_request:
    branches: [main]

jobs:
  unit:
    runs-on: warp-ubuntu-latest-x64-4x
    strategy:
      matrix:
        shard: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    steps:
      - uses: actions/checkout@v5
      - uses: actions/setup-node@v4
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - run: npx jest --shard=${{ matrix.shard }}/10

Each shard pays for checkout and npm ci before it runs a single test, so the real cost of splitting is the rounding plus that repeated setup. Sharding still wins when developers are waiting on the result, since 10 shards return an answer in a tenth of the wall-clock time. It loses on a nightly schedule, where nobody is watching and the extra billed minutes buy nothing. The cost attribution guide covers how to find the matrices that grew past their usefulness.

Where billed minutes appear

The reports documentation, checked on 2026-08-13, describes three surfaces that carry the number.

Per job: the Billing section's CI tab gives one row per job execution with repository, job name, runner label, stack, snapshot usage, execution time, billed time, and the cost split between runner and snapshot. Sorting by the gap between execution time and billed time brings the rounded-up jobs to the top.

Per label and per repository: the same tab draws a daily stacked bar chart that groups by repository or by runner label, and filters cover repository, runner label, stack, job name, and snapshot usage. Summary cards total the period's cost, runner cost, snapshot cost, and job count. Every tab exports to CSV with all rows matching the current filters, which is the practical path into a spreadsheet.

Per job shape over time: the Jobs section aggregates each unique repository, workflow, and job name combination with run count, success rate, and P75 and P90 figures for duration, queue time, CPU, and memory. CPU and memory columns need observability enabled on the runner. Those percentiles are how a team decides whether a shard is short because the work is small or short because it is oversized.

The meters that do not use the minute increment

Runner minutes are one line among several, and the other meters carry their own units.

MeterUnitRate
CI runner minutesper minute$0.003 to $0.16 by label
Remote Docker builder sessionper minute of session$0.06 to $0.88 by profile
Cache storageper GB-month$0.20
Cache write or restoreper operation$0.0001
Snapshot restoreper job$0.04
Snapshot storageper snapshot-hour$0.025
Networking (Tailscale)included$0.00
BYOC runner minutesper minute$0.002 plus your own cloud bill

Rates from the pricing page, checked on 2026-08-13. A Docker builder session is measured from when the builder action starts until the job completes, and concurrent jobs sharing a profile share one session, so builder minutes and runner minutes are counted separately even inside the same job.

What the increment sits on top of

Pricing is purely usage based. There is no base subscription fee, no platform fee, and no seat fee, so the per-minute increment is the only unit that turns work into a runner bill. Signup includes $10 free credits, which is enough to run a few thousand short Linux jobs while you measure how your own matrices round, and the full rate structure is on the pricing page.

To turn all of this into a forecast, multiply expected job minutes per platform by the rate for the labels those jobs use, then add one minute per job as the rounding allowance. The bill estimation answer works through that calculation on a monthly fleet, and the full rate list stays on the pricing page.

Is there a minimum charge for a single GitHub Actions job?

One minute at the rate of the label the job ran on. That is $0.003 on warp-ubuntu-latest-arm64-2x and $0.16 on warp-macos-latest-arm64-12x. No per-job runner fee is added on top of that minute, and the full ladder is on the pricing page.

Does a 20 second job cost the same as a 60 second job?

Yes. Both land in the same one-minute bucket, so a matrix of 90 forty-second shards bills 90 minutes while the same 60 minutes of work folded into 6 jobs bills 60 minutes. The reports view shows execution time and billed time side by side per job, which is the direct way to confirm it.

Do Docker builders, cache, and snapshots use the same one-minute increment?

No. Docker builders bill per session measured in minutes from $0.06 per minute, cache storage bills $0.20 per GB-month, cache operations bill $0.0001 each, snapshot restores bill $0.04 per job, and snapshot storage bills $0.025 per snapshot-hour. The cost attribution guide covers splitting those meters across teams.

Start with $10 in free credits

Change the runner label in your workflow and keep the rest of your GitHub Actions setup. Runner time is billed per minute.