Services and environments
Carry the change into production with connected service context.
What shipped, where it went, who wrote it, and how the service behaved afterwards. The four DORA metrics fall out of that record on their own.
Deploy frequency
14/day
Lead time
3.2h
Change failure
6%
MTTR
41min
One connected loop, held on the stage this capability serves. The other stages stay as context so you can see what feeds in and what comes next.
Carry the change into production.
Carry the change into production with connected service context.
Review deployment evidence beside the service and environment it affected.
Keep rollout controls visible beside release context.
Carry the change into production.
The record, not the orchestrator
lube is the memory of your deploys. It does not run them. Your deploy data arrives from GitHub Actions or the API, and we keep the whole story: the status trail, the commit range, the health verdict, and the uptime that followed. Keep your pipeline. We keep the receipts.
Every deployment across every product and environment lands in one append-only stream — what shipped, where, who wrote it, and its status the moment it changes.
Count deploys per time bucket, banded by service or by environment, with a ranked breakdown legend. Pin any series to isolate it — the cut is shareable in the URL.
Every figure is computed from your real deploy record — nothing is hand-entered. Read-time and backfill use identical logic, and each metric is reported across org, product, and service. Numbers shown elsewhere are illustrative.
Read what is live where at a glance: each cell is the deployed version, colored by health, so a stale prod or a stuck staging jumps out.
Each deploy records its transitions and their timing, so the whole run reads as a stepper — and the trail behind it is append-only.
Queued
09:42
Building
1m52s
Deploying
2m08s
Verifying
0m41s
Live
—
Append-only status events: each transition adds a row with a strictly increasing sequence number; finishedAt and durationMs land on the terminal event.
Aliases fold github_actions, api, and manual labels into a single stable service, each with its own typed environments.
When you revert, the restoring deploy links back to the one it brought back and pins itself as current. The trail stays append-only.
checkout-v2 · production
#4819
2.3.9 ok
#4820
2.4.0 bad
rolled back
#4821
2.3.9 back
current
#4821 restored the last healthy deploy and superseded #4820
Each deploy captures the commit range since the last success, with the author and pull request behind every change.
For a window after each deploy, we watch your uptime incidents. Anything that starts inside the window is correlated to the deploy and flags it faulty — the correlation, surfaced, not the cause, inferred.
deploy+30m window
Incidents that start inside the window flag the deploy faulty. We surface the correlation — we don't infer the cause.
Each service carries the product it belongs to, its live health, the environments it spans, and its DORA-derived cadence — filter, sort, and search the whole catalog.
Define production, staging, preview, and more, each typed and colored, with the currently deployed version and today's deploy count. Production changes are guarded.
How the record fills
Deploys arrive from GitHub Actions or a single POST to the report API — one call per deploy, idempotency-keyed so retries never double-count, carrying up to five hundred commits and your own metadata. Status transitions stream in as they change. lube keeps your pipeline exactly as it is and records the outcome.
A deployment is not one shape. lube records the strategy, trigger, provider, and health so the record matches reality.
Status
The lifecycle.
Strategy
How it rolled out.
Trigger
What kicked it off.
Provider
Who reported it.
Health
Post-deploy verdict.
Timing
Recorded per deploy.
Start with one service and follow it through.