What the numbers mean

Ran, billed, cost, chargeback — and why cost is not your GitHub bill.

Ran

The real time a job took, from start to finish. This is the honest number, not the one you are charged for.

Billed

What GitHub charges for. GitHub rounds every job up to a whole minute, so four jobs of 20 seconds each are billed as 4 minutes, not 2. This is why billed minutes are larger than the minutes that ran.

Billed can be 0 while the job really ran: GitHub charges nothing for a standard runner on a public repository, and nothing for a self-hosted runner.

Cost, and chargeback

Billed minutes multiplied by the per-minute price GitHub publishes for the machine the job ran on. Different jobs in one run can run on different machines at different prices. A run's cost is the sum of its jobs; a repository's cost is the sum of its runs.

Chargeback is the same figure, used for what it is good at: showing which repository, workflow or team used the minutes, so the cost can be shared out inside your company.

Why this is not your GitHub bill

  • Your GitHub plan includes free minutes every month. Kaptimus cannot see how many you have left, so it does not take them off. The figure is what the minutes are worth, not what you will be charged.
  • GitHub can change its prices. GitHub's own invoice is the one that counts.
  • A job Kaptimus could not price is shown as not priced and left out of the totals — it is unknown, not free.

Standard, larger and self-hosted runners

  • Standard runners (the ones GitHub provides by default) are priced from their label — for example ubuntu-latest.
  • Larger runners (machines your organization creates) are priced from the machine's own facts: its system, its number of cores, and whether it has a GPU. Kaptimus looks the machine up right after the job; until it has, the job shows as not priced.
  • Self-hosted runners cost nothing on GitHub's side, so they are shown as 0.

Attempts, re-runs and carried-over jobs

  • Each time a run is started again it becomes a new attempt, and GitHub bills each attempt on its own. Two rows with one run number is correct, not a duplicate.
  • Triggered by is who started that attempt — on a re-run, whoever pressed re-run.
  • When you press "Re-run failed jobs", GitHub reports the jobs that did not re-run as if they had, with the earlier attempt's times. Kaptimus marks them carried over: they cost nothing, and GitHub does not charge for them either.

Visibility

Whether the repository was public or private when the run happened. A public repository on a standard runner is free, so this decides whether a run cost anything. If the repository is made private later, the old runs stay free.