Joopler docs
AI governance

See AI usage without touching a runtime

Connect a read-only admin key and Joopler reads each provider's own usage report. No proxy, no gateway, no change to anything you ship.

The lowest-friction way to see AI activity in Joopler: connect the provider with a read-only admin key, and the nightly run reads what that provider says your organization spent.

Nothing changes in any runtime. No traffic passes through us. You add no credential beyond the one the connector already uses for its control checks.

If you ship software with AI in it, this is usually the right starting point, because it asks nothing of the product you deliver to customers.

What you need

  • The Anthropic or OpenAI connector already connected on Integrations.
  • For OpenAI, an organization admin key with the api.usage.read scope.
  • For Anthropic, an Admin API key with organization read access.

Nothing else. If the connector is already green, usage starts appearing after the next nightly run.

Where it shows up

AI usage → Reported by the provider. Per provider: calls, tokens in, tokens out, how many models, and the newest day held. Under that, the top models by token volume.

What this is not

This is the honest part, and it is why the panel sits apart from everything else on the page.

A usage report is an aggregate the provider computed. It carries a model, a time bucket, token counts, and whichever API key or project the provider attributes the spend to. It cannot carry:

  • what was in the prompt, because none of it reached us
  • an argument hash, for the same reason
  • a data-loss finding, a prompt-injection verdict, or a classification
  • a person, unless your provider's own attribution names one

So pulled usage is stored in its own table and rendered in its own panel. The rest of the AI usage page counts calls we captured; this panel repeats a bill somebody else wrote. Conflating them would let a number that nobody inspected stand in for one that was.

Pulled from the providerCaptured by Joopler
Change to your runtimenoneproxy setting, or a gateway integration
What you seemodel, tokens, time, the provider's own actorthe call, its arguments hashed, what it touched
Data-loss and injection detectionnoyes
Blockingnoyes, in terminate mode
Per-call evidence recordno, one record per pullyes, one per call

Some specifics worth knowing

  • Anthropic reports tokens, not calls. Its message report has no request count, so calls show as a dash rather than zero. A zero would be a claim the provider never made.
  • Cost is not pulled. Each provider exposes cost through a separate endpoint, and deriving it from tokens here would present our arithmetic as theirs. Price your own usage on the rate card instead.
  • The newest day keeps changing. Providers finish writing a day after it ends, so we re-read the last few days on every run and correct the numbers rather than adding to them.
  • A failed read is reported, never drawn as a quiet flat line. If the key cannot read usage, the run says so and writes nothing. "We could not read it" and "nothing happened" are the two things this product must never confuse.

When to climb the next rung

Pull usage tells you how much. It cannot tell you what was sent, and it cannot stop anything. When you need those, the next rungs are bring your own gateway (send logs or ask for a verdict, keeping your own data path) and the egress proxy (capture the calls themselves).

See AI usage without touching a runtime