Nexus
1.x
Docs/Nexus/Multi-Tenancy
Open

Reading1 min
Updated31 Jul 2026
Sourcev1/concepts/multi-tenancy.mdx

Every request in Nexus is scoped to a tenant via context. This provides complete isolation for API keys, rate limits, usage tracking, and model aliases.

Setting Tenant Context01

ctx = nexus.WithTenant(ctx, "tenant-1")

All downstream operations (routing, caching, usage, guardrails) automatically respect the tenant scope.

Tenant Configuration02

Each tenant can have custom settings:

type TenantConfig struct {
    RateLimit     int
    BudgetLimit   float64
    AllowedModels []string
    Metadata      map[string]any
}

Per-Tenant Aliases03

Override model aliases per tenant:

nexus.WithTenantAlias("premium", "fast",
    model.AliasTarget{Provider: "openai", Model: "gpt-4o"},
)

Usage Isolation04

Usage records are always scoped to a tenant. Query per-tenant usage:

summary, _ := usageService.Summary(ctx, tenantID, timeRange)
// summary.TotalTokens, summary.TotalCost

Budget Enforcement05

Set budget limits per tenant. Nexus fires lifecycle events at 80% (warning) and 100% (exceeded):

// Plugin hooks
OnBudgetWarning(ctx, tenantID, usedPct)
OnBudgetExceeded(ctx, tenantID)