Skip to main content

Configuration Guide

For administrators setting up Rivaro for their development team. Covers AppContexts, detection keys, rate limits, and organization requirements.

Overview

Before a developer can send traffic through the proxy, an administrator needs to:

  1. Create an AppContext — defines which AI provider to proxy to
  2. Create a Detection Key — authenticates proxy requests and links to the AppContext
  3. Optionally configure — rate limits, allowed models, enabled detectors

The developer then uses the detection key and your Rivaro proxy URL to start sending traffic.

AppContexts

An AppContext is the core configuration object. It tells Rivaro which AI provider adapter to use, which models are allowed, which detectors to enable, and what rate limits apply.

Creating an AppContext

In the Rivaro dashboard, go to Settings > Adapters and select your provider.

FieldRequiredDescription
NameYesDisplay name (e.g. "Production OpenAI", "Staging Claude")
Adapter typeYesProvider identifier (e.g. gpt-4, claude-3-opus, azure-openai)
Allowed modelsNoRestrict which models can be requested. If empty, all models are allowed.
Enabled detectorsNoWhich risk categories to scan for. If empty, all detectors run.
Rate limitNoMax requests per minute for this context
Monthly quotaNoMax total requests per month

Configuration options

The AppContext has a flexible configuration map for provider-specific settings:

KeyProviderDescription
allowed_modelsAllArray of permitted model names (e.g. ["gpt-4", "gpt-3.5-turbo"])
azureResourceNameAzureYour Azure OpenAI resource name
azureDeploymentNameAzureDefault deployment name
bedrockModelIdBedrockFull Bedrock model ARN
bedrockModelFormatBedrockclaude, llama, mistral, titan, or converse
projectIdVertex AIGCP project ID
locationVertex AIGCP region (default: us-central1)

Governance fields

For organizations with governance requirements, AppContexts also support:

FieldDescription
OwnerTeam or person responsible for this context
DepartmentOrganizational department
Data classificationSensitivity level of data flowing through
PurposeDescription of what this context is used for

Detection Keys

A detection key authenticates proxy requests and links them to an AppContext. Each key is bound to exactly one AppContext.

Creating a key

In the dashboard, go to Settings > Detection Keys and click Create Key.

FieldRequiredDescription
NameYesDescriptive name (e.g. "Production Key", "CI/CD Pipeline")
AppContextYesWhich AppContext this key routes to

On creation, the full key is displayed once:

detect_live_aBcDeFgHiJkLmNoPqRsTuVwXyZ012345
warning

Save this immediately. The full key cannot be retrieved after this screen. Only the prefix and last four characters are stored for display.

Key lifecycle

ActionHowEffect
CreateDashboardKey is active immediately
RevokeDashboard or DELETE /api/detection-keys/{id}Key permanently stops working
UpdateDashboard or PUT /api/detection-keys/{id}Change name or set expiration
ExpireAutomaticKey stops working after expiresAt timestamp

Key properties

PropertyDescription
idUnique key identifier
displayKeyMasked display (prefix…last4)
nameHuman-readable name
appContextIdLinked AppContext
createdByEmail of the creator
createdAtCreation timestamp
lastUsedAtLast successful authentication
usageCountTotal requests made with this key
expiresAtOptional expiration timestamp

Best practices

  • One key per environment — separate keys for production, staging, and development so you can revoke independently
  • One key per service — if multiple services use the proxy, give each its own key for usage tracking
  • Set expiration — for temporary access (contractors, trials), set an expiration date
  • Revoke promptly — if a key is compromised, revoke it immediately in the dashboard

Rate Limits

Rivaro enforces rate limits at multiple levels.

Per-AppContext limits

Set rateLimitPerMinute on the AppContext to limit how many requests per minute can flow through that context. This is the primary knob for controlling proxy throughput.

Global defaults

If no AppContext-level limit is set, global defaults apply:

ScopeDefaultDescription
Per API key100 req/minRequests per detection key
Per IP60 req/minRequests from the same IP
Auth endpoints10 req/minLogin/auth attempts

Rate limit response headers

When rate limits are active, every response includes:

HeaderDescription
X-RateLimit-LimitMax requests for this window
X-RateLimit-RemainingRemaining requests in current window
X-RateLimit-ResetTimestamp when the window resets

When the limit is exceeded, the response is 429 Too Many Requests with a Retry-After header (in seconds).

Organization Requirements

Organization status

The organization must be in ACTIVE status for the proxy to work. Other statuses and their effects:

StatusProxyDashboardNotes
ACTIVEWorksWorksNormal operation
TRIALWorksWorksTrial period with usage limits
TRIAL_EXPIREDBlockedLimitedUpgrade required
CANCELEDBlockedRead-onlyReactivate to resume
ARCHIVEDBlockedBlockedContact support

When the proxy is blocked due to organization status, developers receive a 403 error:

{"error": "Organization is not active"}

Giving credentials to your developers

After setup, your developers need two things:

  1. Proxy base URL — your Rivaro instance URL (e.g. https://your-org.rivaro.ai)
  2. Detection key — the detect_live_... key you created

They will also need their own AI provider API key (OpenAI, Anthropic, etc.). Rivaro does not store provider credentials — developers pass them in each request via the standard provider auth header.

See the Getting Started guide for the exact SDK configuration your developers need.

Next steps