How Rouva handles reliability, your data, and your bill.
Rouva is built for small teams and solo developers who use AI APIs in their product or workflow and want the bill to stop being a mystery — typically anyone whose monthly AI spend adds up to more than the subscription costs, across providers such as Anthropic, OpenAI, and any others you use. If you need self-hosting or on-prem deployment, we're not that (yet) — Rouva is fully managed, which is the point.
Rouva doesn't log your conversations. Each request stores metadata only — token counts, cost, task type, and a quality score — to power your dashboard. If semantic caching applies, a short prompt preview and the cached response are kept so repeat questions can be answered instantly — and prompts that look personal or account-specific are automatically excluded from caching.
Yours. You connect your existing provider keys, and usage is billed by each provider directly to you at their standard rates — Rouva never marks up tokens. Keys are encrypted at rest with AES-256-GCM and only decrypted at request time.
Auto-routed requests fail over automatically: if a provider returns an error or is overloaded, Rouva retries with the next capable model from another provider you've connected, so your request still completes. And because you bring your own API keys, you can always call providers directly — there's no lock-in.
One lightweight classification step before your request is forwarded — classification results are cached, so repeat patterns skip it entirely. Responses stream straight through from the provider, and quality scoring runs after your response completes, never in the request path.
Nothing is lost. AI models don't hold your conversation between requests — every request is self-contained and carries the full transcript with it. Rouva forwards that complete history to whichever model it selects, translating provider-specific formats (like system prompts) so the new model sees exactly what the previous one did. Switching mid-conversation is seamless.
Conservatively. Savings are counted only when you explicitly requested a model and Rouva routed to a cheaper one that could handle the task: what the requested model would have cost, minus what you actually paid. Auto-routed requests record zero savings — we don't inflate the number against a hypothetical baseline.
Yes — pass a model explicitly and Rouva treats it as a cost ceiling: it routes cheaper when possible, but never more expensive. The one exception is Routing Overrides: if you've configured an account-level override for the detected task type and Intelligent Routing is on, the override takes precedence over the caller's model choice.
Routing Overrides let you pin specific models to specific task types at the account level — as enforced policy, not a hint. Configure them in Settings → Intelligent Routing. When an override is active for a task type, Rouva ignores the model the caller requested and routes to your override model instead, across all endpoints and SDKs. Overrides require Intelligent Routing to be enabled. For tools requests, overrides apply only when the override targets the same provider as the pinned model — cross-provider substitution would send the wrong tool schema format upstream.
Yes. Go to the Team page in your dashboard and invite members by email. Members get a workspace API key that routes through your connected provider keys — you control spend caps per member and can revoke access at any time. Spend is tracked separately per member in the dashboard.
Barely. Install the @rouvanpm/rouva SDK, or point your existing HTTP calls at the Rouva gateway endpoint with your rva_ key. One integration covers every connected provider — the docs quickstart takes about two minutes.
model is required for all tools requests. Tool schemas are provider-specific, so Rouva never re-routes them across providers. If you have a routing override configured for the detected task type and the override targets the same provider as your pinned model, Rouva will substitute that override model — otherwise the pinned model is used exactly.
Only within the same provider. If you have a routing override set for the detected task type and the override model is from the same provider as your pinned model, Rouva applies it. Cross-provider substitution is never performed — Anthropic and OpenAI tool schemas are incompatible formats.
Quality scoring is skipped for tools requests — tool call responses are structured JSON, not prose, so the judge has nothing to score. Confidence always shows "—". Task type shows when Intelligent Routing is enabled and an override is configured; otherwise it shows "Agent tool". Usage and cost are tracked normally.
This is OpenAI's own behavior — when tool_choice forces a specific function, OpenAI returns "stop" rather than "tool_calls". Rouva passes the value through unchanged. To reliably detect tool calls, check for the presence of message.tool_calls rather than branching on finish_reason.
Still have a question? Email support@rouva.io or book a demo.