Case study · th attest

We cut CI spend ~60% per day we actually code.

Not a caching trick and not fewer tests. We run the checks once on our own machine, credit each pass as a commit status, and CI skips those jobs. Here are our real numbers — normalized so a short, half-vacation month can’t flatter them.

Before · heavy coding day$53runner spend, avg of two matched July days
After · heavy coding day$22same class of day, once attest covered the checks

59% less per coding day · ~63% fewer CI jobs · cost per job unchanged

How a pass gets credited

The mechanism is a git-native primitive, not a cache. Every check that passes writes a ci-attest/<check> commit status onto the exact commit SHA. Your workflow reads those statuses and skips the matching jobs.

  1. 1
    Run the checks where the machine is quiet

    th attest runs your repo’s own checks — the same scripts/ci/<name>.sh CI runs — locally or on a build box over SSH, starting your container runtime and installing deps first so local equals CI.

  2. 2
    Each pass becomes a SHA-pinned commit status

    A pass posts ci-attest/<name> on the commit. The credit is bound to the SHA, so it is a claim about that exact code — never about your laptop.

  3. 3
    CI reads the statuses and skips those jobs

    Green rows finish in seconds instead of burning runner minutes. That skipped work is where the money goes.

  4. 4
    A new commit un-credits everything, automatically

    Push new code and the statuses no longer apply, so the checks run for real. Freshness is free — there is no cache to invalidate and no way to ship a stale green. A check that couldn’t run honestly publishes nothing and CI just runs it.

Run it instead of a plain push:

th attest --all           # run every check, push, credit the passes
th attest --status         # what is credited for HEAD right now

The numbers, matched day for day

September was only ten days in and half of it was time off — so a raw month-over-month ($828 → ~$47) overstates the win. Instead we compare days of equal intensity: a heavy coding day before attest against one after.

Average runner spend per heavy coding day

Before attest
$53.09
After attest
$21.57
$0  ·  scale to $70/day
Coding dayPushesCI jobsRunner cost
Jul 8 before2612,021$62.24
Jul 13 before2501,321$43.94
Sep 8 after146776$26.00
Sep 9 after102447$17.14

The tell that it’s real: cost per CI job didn’t move (~$0.03 both months). The runners aren’t cheaper — attest just means ~63% fewer jobs run per coding day, because the expensive check matrices already passed on a quiet machine.

It’s one command, in a single 10 MB binary.

th is free and open source. Point it at your repo’s checks, run it instead of git push, and watch the green rows skip.

brew install SmooAI/tools/th