Skip to the dashboard

mint

Token usage, cost and rate limit headroom, in one place.

Sign in

mint
Edit profile
Sign out

Every model, across every account

Tokens per day, every account

Cost per day, by provider

Model Where it runs Share Input Cache read Output Requests Cost

No accounts are configured yet. An administrator can add one on the Accounts tab.

Configured accounts

One row per credential. The last four characters are the only part of a credential this page is ever sent.

Label Provider Credential Monthly cap State Last read Actions

Add an account

Typed in, not read from the provider. The gauge says so.

Rate limits

A limit read from the provider is marked as reported and cannot be typed over. A limit nobody has set leaves its gauge blank rather than drawing a percentage of an unknown number.

Account Model Requests per minute Input tokens per minute Output tokens per minute Source Actions

A star means the whole account.

What each provider actually reports

The three providers do not answer the same questions, and this table is the same data the gauges are drawn from. Where a cell says no, the matching figure on the dashboard reads "not reported" rather than zero.

Provider Usage by minute Request counts Usage by day Cost Configured limits Accepts pushed usage

How the numbers are made

Requests per minute
The last complete one-minute bucket from the provider's own usage report, divided by the configured limit. The minute in progress is never used: it reads low for most of its length and then jumps, which looks like traffic collapsing and recovering once a minute.
Input tokens per minute
Uncached input plus cache writes. Tokens read from the cache are excluded, because on every current Claude model except Haiku 3.5 they do not count toward the input limit. Including them would overstate the pressure on a well-cached workload several times over.
Cost
The provider's own cost report, not a price list multiplied by token counts. The two do not reconcile exactly and the providers say so, so this app stores what it was told rather than what it could infer.
The rollup across every account
The panel at the top of the dashboard is one row per model, summed across every enabled account, so the same model called from two accounts appears once. Three things it deliberately does not do. It does not present a total over a mixture of reported and unreported figures as though it were complete: every total says how many accounts it covers and is marked partial when that is fewer than all of them. It does not attribute cost to a model the provider did not attribute it to, because a share worked out from token counts would look like an invoice line and would not be one. And it does not roll up rate limits at all: two accounts at half their limits are not one account at its limit, so headroom stays on the cards, where a number and its own limit sit together.
Nothing here costs you anything
This app never sends a request to a model endpoint. Rate limit headroom could be read from the response headers of a one-token call, and that is deliberately not done: a monitor that spends the budget it monitors is a bug with a good excuse.

People

Sign-in is decided by my.thermals.app. What somebody may do once they are in is decided here, from this app's own table. The identity token carries no role and none is read from it.

Person Email Role Last seen

Audit

When Who Action Subject Detail
. Identity by my.thermals.app