Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.opper.ai/llms.txt

Use this file to discover all available pages before exploring further.

Comply is the guardrail layer for your account. You decide which providers and regions are allowed, how long calls are retained, what you’ll spend in a month, and whether sensitive calls must stay inside Zero Data Retention providers.

Four kinds of rule

Open Controls → Comply in platform.opper.ai.

Model allowlist

Pick which models are reachable, on four axes. Leave any axis empty to skip it.
AxisExample
Providersanthropic, openai, gemini
Regionseu-west-1, us-west-2
CountriesEU only, US only, plus an “Other” bucket for models without country metadata
ModelsSpecific names like anthropic/claude-opus-4-7
A live counter shows “N of M models match” so you can check the rule’s reach before saving. When a child rule inherits from a parent, items the parent disallows are dimmed in the picker. A child rule can only narrow what the parent permits.

Trace retention

By default Opper keeps only metadata (model, tokens, cost, latency). A retention rule turns on full trace storage: set a number of days, 1 to 30, and the request, response, and spans in scope are kept that long, then deleted. With no rule (or 0 days), content is never written. Organization or project scope only.

Budget

FieldWhat it does
Monthly limitA dollar cap.
Soft alert at X%Default 80. When monthly spend crosses this, email alerts go out.
Email alertsCheckbox.
If an org-level budget is tighter than a project-level one, the org limit wins. Organization or project scope only.

Zero Data Retention (ZDR)

No config. Enabling a ZDR rule locks calls in scope to ZDR-eligible providers. Opper never writes request and response content to disk; it keeps only the usage counters needed for billing. The rule shows how many catalog models qualify. Organization or project scope only.

Where it applies

ScopeAllowlistRetentionBudgetZDR
Organization
Project

How scopes layer

Rules at different scopes layer rather than override. A project’s effective allowlist is the intersection of every allowlist that touches it, so org rules narrow what projects can do. You can never loosen at a lower scope.

Where you see the result

A Comply event appears on the trace span with a Scale icon and one of two statuses:
  • Passed: the call satisfied every Comply rule in its chain.
  • Blocked: a rule rejected the call. The span carries the error and the event identifies which rule.
Each event carries the rule name and a scope badge. In the playground, Comply runs when Project controls is on. A denied model fails the same way it would in production.
Set the strictest policy at organization scope (for example, “EU providers only”). Use project scope for narrower exceptions. The parent constraint always wins; you can’t loosen further down.