Every model, across every account
Tokens per day, every account
Cost per day, by provider
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.
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.
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.
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.