Tenant separation on dedicated schemas
- Every workspace gets its own PostgreSQL schemas (system, auth, app), derived from the tenant ID resolved from the session
- Generated module code runs in isolated Cloudflare Worker sandboxes with the database search path scoped to the tenant schema
- Conversations, files and knowledge sources are filtered by tenant at both application and schema level