Skip to content

Find the slow step, then the expensive one

CI observability and analytics

Per-job duration, queue time, cache hit rate and cost, broken down by workflow, label and repository.

Duration percentiles

p50 and p95 per job, because the average hides the runs that hurt.

Cost attribution

Spend per workflow, per label, per repository, per team.

Cache insight

Hit rate and restore time per cache key.

OpenTelemetry export

Ship CI spans to the tracing backend you already run.

Most CI optimisation work targets the wrong step because nobody measured. Duration percentiles per job usually reveal that one flaky integration test, not the build, owns your p95.

Common questions

What should I look at first?
p95 duration, not the mean. Developers experience the slow tail, and a healthy average with a triple-length p95 means half your team is waiting.
How do I find which workflow got slower?
Compare p95 per workflow month over month, and segment by cache hit and miss — those are effectively two different distributions and a regression often only affects one.
Can I export this to my own tooling?
Yes. Workflow runs export as OpenTelemetry traces with jobs and steps as spans, so CI sits alongside production telemetry in whatever backend you already run.

Your next build could be twice as fast, at half the price

Start free. Migrating away is the same one line, and we publish that diff too.