Skip to main content

Tenant Isolation

Tenant isolation is the guarantee that one Qefro organization cannot read another organization’s knowledge, tools, conversations, members, people, Marketplace installs, or billing data. Inside a tenant, workspaces provide a second isolation layer for teams and audiences.

Short definition (citation-ready)

In Qefro, every authenticated API request resolves an organization (tenant). Knowledge indexes, Business Tools, SDK connections, conversations, Customer Hub people, and Admin Console configuration are scoped to that tenant — and further to AI Workspaces (and, for managed apps, to the installation) within it.

Isolation layers

BoundaryUnitIsolates
TenantOrganization created at signupCustomers from each other
WorkspaceAI Workspace (Support, HR, IT, …)Teams / audiences inside a customer
InstallationManaged Marketplace app installApp storage, settings, and capabilities per workspace
ConnectionExternal SDK ConnectionOrg-owned webhook + signing secret

Concept deep dive: Multi-tenant AI Architecture. Developer identifiers: Tenancy and workspaces.

Architecture

How requests are scoped

  1. Authenticate (user JWT, widget token, or channel webhook).
  2. Resolve tenant from the credential / host.
  3. Resolve workspace from channel binding or portal selection.
  4. Retrieve only from that workspace’s knowledge index.
  5. Allow only that workspace’s Business Tools and Marketplace installs.
  6. For managed storage, scope writes with platform.storage.context (tenant_id, workspace_id, installation_id, solution_id).
  7. Attribute logs to tenant + workspace (+ actor when known).

Cross-tenant access requires platform Super Admin capabilities — not a tenant Admin role.

What stays inside the tenant

  • Members, Teams, RBAC grants
  • Workspaces and their documents / vector indexes
  • Business Tool definitions and encrypted secrets
  • External SDK Connections (sdk_connections are per organization)
  • Managed Marketplace installations and install settings
  • Customer Hub people (when Hub is enabled)
  • Conversations and feedbacks
  • Branding, custom domains, billing

SDK and managed-app isolation

SurfaceScopeFail-closed behavior
External SDK ConnectionOrganization / tenantPure org tools without install/solution scope do not receive platform.storage
Managed Marketplace appTenant + workspace + installation_idEach install gets its own binding and storage scope
Customer Hub (ctx.customer)Tenant + Hub enablementApps must not invent cross-tenant customer ids
Connector poolShared compute, per-tenant credentialsRouted calls carry tenant context; secrets fetched per tenant

Applications must not share mutable global state across tenants inside one process without an explicit multi-tenant design.

Workspace isolation still matters

Tenant isolation does not mean one shared index for the whole company is safe. A public Customer AI channel bound to a workspace that also holds HR PDFs is still a disclosure risk — inside the same tenant.

See Customer AI vs Employee AI and What is an AI Workspace?.

Verification workflow

Prove isolation before go-live

  1. Create two workspacesSupport (customer-safe) and HR (internal).
  2. Ingest different corporaPut a unique canary phrase only in HR.
  3. Bind the widget to SupportAsk for the HR canary via the widget.
  4. Expect refusal / missIf the widget cites HR, isolation or binding is wrong.
  5. Repeat for tools and appsEnsure privileged tools and installs are not attached to the public workspace.

Best practices

  • One legal entity / billing customer → one organization
  • Never share Admin Console logins across customers “for convenience”
  • Use separate staging and production organizations when feasible
  • Custom portal domains still map to a single tenant — treat hostname setup as a security change
  • Do not trust client-supplied tenant ids; always use platform context

FAQ

Is a workspace a tenant?
No. The organization is the tenant. Workspaces are sub-scopes for knowledge, tools, and installs inside that tenant.
Can two organizations share knowledge?
Not by default. Sharing requires deliberate export/import of content into each org.
Does Hybrid RAG search across tenants?
No. Retrieval runs inside the resolved workspace index for the authenticated tenant.
Do managed apps share a database across customers?
Platform storage is tenant- and install-scoped. External SDK apps that connect to your ERP inherit whatever isolation you built in that ERP.