Home  /  Platform  /  Per-tenant isolation

Per-tenant isolation · Engine-enforced

Your records aren't separated by a WHERE clause. They're separated by the database engine.

Most "private" AI products mean logically separated — same database, same model, a WHERE user_id = ? clause, and a vendor-trust assumption. We took the harder path. Postgres row-level security gates every query at the engine layer. Per tenant you get a Pinecone vector namespace, a GCS bucket, RLS-enforced row isolation, and an entity graph in the same RLS-protected Postgres as your records. A bug in our application code can't return another tenant's row — the engine refuses. The privacy guarantee is in the architecture, not the policy.

Read the security white paper →
Engine-enforced beats policy-enforced in any SOC 2 conversation. — What the technical evaluator is going to write in their report