Privacy is most credible when it is structural. With a database per user, each person's data lives in its own encrypted store, and a scoped token means only that user can read it. The guarantee is something the product is built around, not a setting layered on later.
// Per-user encryption with customer-held keys
import { createClient } from '@tursodatabase/api';
const turso = createClient({
org: process.env.TURSO_ORG,
token: process.env.TURSO_PLATFORM_TOKEN,
});
// Each user gets their own isolated, encrypted database
const userDb = await turso.databases.create(`user-${userId}`, {
group: 'production',
});
// Generate a scoped token so only this user can access their data
const { jwt } = await turso.databases.createToken(`user-${userId}`);
// Only the user can read their own data.
Each user's database is encrypted independently, so a breach of one is not a breach of all.
A token grants access to exactly one user's database and nothing else.
With embedded replication, a user's database can live on their device, so their data does not have to leave it.
Kin gives every user their own encrypted database, so only the user can access their own data. It is a promise the product is built around, not a feature on top.
Read the Kin storyOnboarding a new customer is a database creation call, so provisioning is instant and scriptable. Branch a tenant's database to test a migration in isolation, restore a single tenant to a point in time without touching the others, and bill predictably from your first thousand customers to your ten-millionth.