Multi-model AI management · Supabase native

Every AI model, every prompt, every dollar — managed in one place.

odnoga is the AI control plane for Supabase SaaS. Version your prompts, route across every LLM, bill your end users on Stripe, and trace every call — without writing the infrastructure.

No cardSupabase-nativeOpenAI-compatibleMCP & Vercel AI SDK
supabase/functions/chat/index.ts
const jwt = req.headers.get("authorization")!.split(" ")[1];
const { data: { user } } = await supabase.auth.getUser(jwt); // verified, not decoded
if (!user) return new Response("Unauthorized", { status: 401 });

const r = await fetch(ODNOGA + "/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${Deno.env.get("ODNOGA_API_KEY")}`,
    "x-odnoga-end-user": user.id,                    // metered per end user
  },
  body: JSON.stringify({
    model: "auto",                                   // router picks the model
    messages: [{ role: "user", content: "Hello!" }],
  }),
});

Read the Supabase-native guide.

Tokens processed through odnoga

One key — every provider

Why odnoga

Three things nobody else gives you in one platform.

Generic LLM gateways forward requests. odnoga ships the business layer your multi-tenant SaaS actually needs.

Prompt management

Git-like prompts. No redeploys.

Version and label prompts, capture a reviewed real example, compare 2–8 models on identical frozen cases, then A/B test and switch production without redeploying.

const r = await ai.prompts.chat({
  slug: 'welcome-email',
  label: 'production',
  variables: { name: 'Ada' },
});
Prompt management →
Supabase-native

Twelve lines in your Edge Function.

Built for Supabase Edge Functions: forward the caller's Supabase user id and every request is metered, billed and traced per end user — no package to install, no metering layer to write.

const jwt = req.headers.get("authorization")!.split(" ")[1];
const { data: { user } } = await supabase.auth.getUser(jwt);
if (!user) return new Response("Unauthorized", { status: 401 });

await fetch("https://api.odnoga.com/functions/v1/airouter-openai-compat/v1/chat/completions", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${Deno.env.get("ODNOGA_API_KEY")}`,
    "x-odnoga-end-user": user.id, // metered per end user
  },
  body: JSON.stringify({ model: "auto", messages }),
});
Supabase native →
Multi-tenant billing

Per-end-user billing on Stripe.

One header attributes cost to your end user. Tenants get their own Stripe customer, their own plans, one consolidated invoice across every vendor — OpenAI, Anthropic, Gemini, Replicate.

// One header attributes cost & limits.
await fetch("https://api.odnoga.com/functions/v1/airouter-openai-compat/v1/chat/completions", {
  headers: {
    Authorization: `Bearer ${KEY}`,
    "x-airouter-end-user": "tenant_acme:user_42",
  },
  body: JSON.stringify({ model: "auto", messages }),
});
Multi-tenant billing →
Vault & key rotation
"auto" routing + fallback
Bieżąca obserwowalność
Soft & hard budgets
Drop-in OpenAI-compatible
2–8 model evaluation lab
Explicit real-run capture
Two-layer caching controls
Contextual support tickets
Built-in MCP server

Let your AI assistant run your AI gateway

odnoga ships a built-in MCP server. Connect Claude, Cursor, VS Code or Lovable, sign in through OAuth, approve the scopes — and your AI tool can configure the gateway with the same rules and audit trail as the dashboard. No API keys to copy.

70MCP tools your AI assistant can use today

Prompts

Save versions, move labels, resolve with variables.

Routing

Read and preview policy, propose auto chains — you confirm every change.

Models & catalog

List models, check health, track catalog sync and pricing.

Usage & billing

Spend summaries, trends, errors, invoices and wallets.

Batches & cache

Run offline jobs, tune caching, see what caching actually saved.

Schemas & settings

Version output schemas, manage web-search policy and workspaces.

1

Add the odnoga MCP URL in your AI tool.

2

Sign in through OAuth and pick a workspace.

3

Approve the scopes — revoke anytime per app.

Every scope is opt-in, write scopes always require explicit approval, and every action a tool takes is recorded with the client name and IP.

Why we built it

We were the team drowning in this.

Building a multi-tenant AI SaaS, we hit the same walls every time. odnoga is what we wished existed.

Pain

Models hardcoded across 100+ edge functions.

Fix

Routing rules in the dashboard. Change models server-side, no redeploy.

Pain

Prompts buried in code. No A/B, no rollback.

Fix

Prompt registry with versions, labels, A/B routing and instant rollback.

Pain

Edge functions are a black box. Who called what, when, for whom?

Fix

Every call is a row: tenant, end-user, prompt version, cost, latency, provider.

Pain

You can't bill your customers. AI cost just sits on your card.

Fix

Per-end-user attribution + tenant Stripe + consolidated invoice across all vendors.

In production

Real products run all AI on odnoga

SalesDots.ai

Salesdots runs every AI operation on odnoga

An AI-powered sales platform — lead enrichment, outreach drafting, call summaries, deal scoring — with every request routed through odnoga.

  • All AI through the odnoga gateway
  • Prompts versioned, no redeploys
  • Per-tenant billing on Stripe
  • Every call traced per end user
2ooL.AI logo2ooL.AI

2ool.ai powers its Luna AI copilot with odnoga

An all-in-one platform for IT consulting firms — CV management, ATS, projects, timesheets, client portal — where Luna, the AI copilot, runs every operation through odnoga.

  • Luna copilot — every action via the gateway
  • Project intelligence over offers, SOWs and RFPs
  • AI usage metered per tenant as credits
  • RBAC-aware actions, traced per user
12+
model providers
<40ms
router overhead
99.95%
uptime SLA
1 header
rozliczenia użytkowników
Stripe
Full billing integration
At a glance

What is odnoga?

odnoga is a multi-model AI control plane for multi-tenant SaaS. It combines an OpenAI-compatible gateway, prompt versioning, a laboratory that compares 2–8 models on frozen real-world cases, explicit response and vendor prompt caching, per-end-user billing, routing, an encrypted key vault and request-level traceability — natively wired into Supabase.

Who is it for?

SaaS teams building on Supabase that manage many AI models and prompts, and need to bill their own customers for AI usage without writing the metering, billing and tracing layer themselves.

How is it different?

  • Per-end-user attribution built for Supabase: forward the JWT subject and usage, budgets and invoices follow that user.
  • Prompt operations are one workflow: versions, real-run capture, frozen multi-model evaluations, A/B routing and atomic label switching.
  • Multi-tenant billing with per-end-user attribution and consolidated Stripe invoicing across every vendor.
  • Two explicit caches: deterministic answer reuse and vendor prompt caching, each with separate controls and measured savings.

Ready to start?

5 minutes to your first request. No card.