Namespaces
Isolated multi-tenant environments with dedicated vector storage, access controls, and complete data separation
Why do anything?
Multi-tenant applications need complete data isolation. Without namespaces, customer data can leak across boundaries, creating security and compliance risks.
Why now?
Enterprise AI applications demand SOC 2-grade controls and data residency. Manual tenant isolation is error-prone and doesn't scale.
Why this feature?
Each namespace maps to a dedicated Qdrant collection with 12 protected payload indexes. Full cascade deletion ensures no orphaned data. Supports cross-namespace migration for tenant onboarding.
How It Works
Namespaces provide tenant isolation by mapping each namespace to a dedicated Qdrant collection. All documents within a namespace share the same vector storage while maintaining complete separation from other namespaces.
Namespace Creation
Generate namespace_id, create Qdrant collection with same name
Index Configuration
Set up 12 protected payload indexes for _internal fields
Access Control Setup
Configure namespace-scoped API keys and permissions
Cascade Deletion
12-step process: webhooks → alerts → taxonomies → clusters → retrievers → collections → batches → documents → buckets → secrets → namespace
Why This Approach
Namespace-per-Qdrant-collection ensures complete vector isolation. Protected indexes guarantee system field queryability. Cascade deletion prevents orphaned resources.
Where This Is Used
Recent updates
Full changelog- Jul 27, 2026Adding a payload index no longer fails on every high-availability namespaceAdding a payload index returned a masked 500 on any namespace that has a read replica, which is every HA namespace. Two independent causes, both now fixed. The index-creation call was being fanned out to read replicas as well as primaries, and a replica rejects every write by design, so a single replica failing took the whole request down. Separately, the namespace identifier from the URL was used directly as a vector-store id, so addressing a namespace by name (what the docs tell you to do) resolved to nothing and persisted nothing, while addressing it by id worked. That split is why the failure looked like it depended on managed versus standalone mode when it did not. Index creation now targets primaries only, replicas pick the index up on their next snapshot restore, and names and ids both resolve.
- Jul 27, 2026Updating payload indexes then reading the namespace back now shows the change immediatelyNamespaces are cached for 60 seconds and every sibling write evicts that cache, but the payload-index update did not. So the documented confirm-your-write flow (PATCH, then GET to check) returned the old index list for up to a minute after a request that had actually succeeded. A write you cannot read back is indistinguishable from a write that silently failed, which is exactly the state that sends you debugging a request that worked. The update now evicts the cache under both the name and the id key, since callers address namespaces either way.
- Jul 27, 2026Namespace promotion is now scoped to the organization that owns the namespaceThe promote and validate-promotion routes were the only namespace endpoints that did not resolve the namespace through the organization-scoped service, and on that path it is the only ownership check there is. Both now resolve through it before touching the vector store, matching every sibling route. The same change fixes addressing these two routes by namespace name, which previously raised a bare error from deep inside the store. Found by an audit for this class of identifier-resolution defect rather than by a report; the remaining instances are tracked and the durable fix is a shared resolver plus a lint rule, so the class stops recurring.
- Jul 25, 2026Exploring the sample data no longer dead-ends when you add your ownThe read-only sample namespace could become your active workspace just by opening it, and that selection persisted. On your next visit you were parked on demo data, and Create Bucket failed at submit with a raw message about SYSTEM-scoped namespaces. Three changes close it: Studio now boot-corrects a sample namespace you never explicitly chose back to your own `default`, Create Bucket is disabled with a tooltip explaining why while a read-only namespace is active, and the remaining read-only errors say you are on sample data and what to do instead. Choosing the sample deliberately from the namespace selector is still respected.