Isolation guarantees
What this means in practice
- Cross-tenant data leak through routing. Not possible — the router’s input is a single tenant’s message; the classifier output is consumed inline and discarded; the only persisted artifact is
ModelSelectUsage, which isuserId-scoped. - A neighboring user’s bad-faith Custom Router affecting your routing. Not possible — your requests route through the pre-trained router unless you set
routerIdto one you own. - A leaked AgentOpt iteration leaving state behind. Not possible — sandboxes are torn down per iteration. The only artifact that survives is the iteration’s checkpoint row in
AgentOptRuns(youruserId). - Provider key exfiltration via a logged request. Not possible in per-provider mode — keys never traverse our backend. In gateway mode (OpenRouter, LLM Gateway), the key is stored in your account’s encrypted secrets and only injected at egress.
Architecture, in one sentence
All requests terminate at the FastAPI gateway on Modal; per-tenant state lives inuserId-scoped rows in PostgreSQL; there is no peer-to-peer state between tenants, between routers, or between optimization runs.
What we do not guarantee
Honesty matters. These are not currently guaranteed:- At-rest encryption of training datasets. Datasets you upload to a public URL for Custom Router training are downloaded into Modal Volumes and persisted in the trained model. If the dataset itself is sensitive, redact it before uploading.
- Cross-region failover. A single region outage will produce errors until that region recovers.
- Provider-level isolation. When a request is forwarded to OpenAI or Anthropic, that provider’s security model applies; we cannot guarantee what they log on their side.
Related
Routing Lifecycle
See where in the lifecycle each isolation boundary is enforced.
API Authentication
Bearer-token scheme and key rotation.
AgentOpt
How the per-iteration sandbox is mounted.
Custom Router
Where your training data lives after training.