Iris sits in front of the accounts you own, hands each developer a key of their own, and records every call — tokens, cost, model, origin and policy outcome. When something is blocked, it shows you exactly what and why.
Runs on your own infrastructure. Upstream credentials stay encrypted and never reach a developer’s machine.
# One base URL, one key. Every model you connected.
export OPENAI_BASE_URL=https://iris.yourdomain.com/v1
export OPENAI_API_KEY=sk-iris-••••••••••••
# Anthropic-shaped clients work too.
export ANTHROPIC_BASE_URL=https://iris.yourdomain.comWhat you get
Routing traffic through one URL takes an afternoon. Knowing who spent what, proving a guardrail works, and noticing a leaked key — that is the part Iris is built for.
Attach the subscriptions and API keys you already pay for. Iris exposes them as a single OpenAI- and Anthropic-compatible URL, so existing clients work unchanged.
Member keys attribute spend to a human. Service keys cover CI. Either can be scoped to specific models, rate limited, budgeted and revoked on its own.
When a rule fires you see the matched snippet with the secret already redacted, the exact path it was found at, the detector version, and what the caller received.
Every call records its origin. Iris baselines the addresses each key is used from and tells you the first time a new one appears — the signal a key has leaked.
Tokens, cost, models and error rate for each person, read from rollups rather than a table scan, with an optional monthly ceiling.
New rules start in simulate: they record what they would have done and change nothing. Promote one to enforce once you have seen it behave.
How it reports
Most tools round everything into a confident number. Iris separates what a provider actually reported from what was inferred, and says which is which — on every screen.
Provider-reported token counts are shown as facts. Estimates are labelled as estimates.
A subscription-served call shows its tokens and says “covered by subscription”, never a made-up per-token price.
IP is evidence and an anomaly signal. It is never treated as someone’s identity.
A rule that has never matched is reported as inert, not as success.
Connect an account, name your models, issue a key, watch the first call arrive.