Docs

Run the meter on your own repo.

Self-hosted, deterministic, open-source. Install it and get a cost attribution for your own repository in about two minutes — a full TIER score takes about ten. A single Go binary over a SQLite file, nothing leaving your infrastructure.

$go install github.com/tiermetric/tier/cmd/tierd@latest && tierd score --repo .

Getting started

See a live board in 60 seconds.

No account, no config, and none of your own data required. Install the single binary, open an obviously-synthetic demo board — then, when you're ready, point it at your own repo. New to the whole idea first? Read the plain-language explanation of TIER, written in three layers.

Step 1 — see it (synthetic data, zero setup)

Install, then open the demo.

$ go install github.com/tiermetric/tier/cmd/tierd@latest
$ tierd demo                       # then open 127.0.0.1:8080 in a browser

The demo board is unmistakably fake — demo-* developers and a synthetic-data banner — so it can never be mistaken for real scores. A prebuilt container image is published too: ghcr.io/tiermetric/tierd:latest.

Step 2 — score your own repo (about ten minutes, honestly)

Point it at your spend and your merged PRs.

Five steps — named plainly, because the ratio needs both a cost side and an outcome side:

  1. Install — the go install above (or the published container image).
  2. Free look at the cost side — tierd score --repo . reads your local Claude Code session files under ~/.claude/projects/ and prints where the AI money went. No server, no token, nothing leaves your machine.
  3. Connect GitHub — export a token as TIER_GITHUB_TOKEN, then tierd backfill --repo your-org/your-repo to walk your merged-PR history — the outcomes side of the ratio.
  4. Serve — tierd serve --aggregation developer --watch-repo .. The --aggregation flag is required on purpose: you decide up front whether the dashboard names individuals (developer) or reports only k-anonymized team / division rollups. There is no default, so nothing changes silently. On any non-loopback bind an API token is mandatory (TIER_API_TOKEN, read from @/path/to/file so it never hits ps or shell history).
  5. Open the dashboard — 127.0.0.1:8080. Scores appear once merged PRs and captured spend overlap in the same window.

Running it on a remote host? The dashboard binds to 127.0.0.1 by default, which you can't reach from another machine. Two ways across:

  • The demo is synthetic and read-only, so it's safe to expose directly: tierd demo --addr 0.0.0.0:8124, then open http://<the-host>:8124.
  • A real serve carries real spend, so a non-loopback bind requires a token: tierd serve --addr 0.0.0.0:8124 --api-token @/path/to/token --aggregation team --watch-repo . — it refuses to bind 0.0.0.0 without one.
  • Or open no port at all and tunnel over SSH from the machine you're browsing on: ssh -N -L 8080:127.0.0.1:8080 you@the-host, then open http://127.0.0.1:8080 locally.

Two things worth knowing before you judge your first number. Spend capture only covers what your Claude Code logs retain (roughly 30 days), so match your scoring window to your capture window — a mismatched window inflates the score. And the meter prices at API list rates, so on pay-as-you-go your metered spend ≈ your invoice (Spend Leverage ≈ 1×); on a flat subscription it exceeds the invoice, and that gap is your Spend Leverage — a diagnostic of your pricing plan, not value TIER creates.

Documentation

The reference, in the repository.

The canonical docs live with the code, so they move in lockstep with what actually ships. Each is written in the same posture as the tool: what it does, what it doesn't, no marketing.

Start here

Understanding TIER

What TIER is and how the number is produced, in three layers — a plain-language short answer, then how the meter works, then the full method. Stop wherever you have what you came for.

Read the number

Interpreting the Number

The windowing skew, coverage dimming, cost_per_point, and why there is deliberately no absolute good/bad band. Read this before you trust a score.

Where it fits

How TIER Relates to DORA

A dimension-by-dimension mapping against DORA, SPACE, and DX Core 4. TIER is a complement on the AI-cost axis — run it beside your framework, never fused into it.

Peer learning

Move Practices, Not Scores

The name-free levers retro and the before/after practice experiment via the compare endpoint. Every step stays name-free or self-only by construction.

Law & privacy

Legal & Privacy

Works-council, DPIA, and GDPR Art. 22 guidance, and why TIER numbers stay out of reviews, pay, and ranking. The basis for the anti-coercion policy.

The contract

API Compatibility

The exact /scores and /scores/compare shapes, the append-only export columns, and the versioning rules a BI pipeline can pin to.

Trust posture

Security

The fail-closed posture: the allowlist parser, HMAC-verified webhooks, constant-time auth with brute-force lockout, and low-cardinality metrics labels.

Browse the full docs tree on GitHub →

Read the source

The whole tree is readable in an afternoon.

A single Go binary with 3 direct dependencies over a SQLite file. No clustering, no external datastore, no LLM in the scoring path. The argument for trusting the number is architecture you can audit, not "trust us."