Real tenant isolation. Without the operational overhead.

TenantsDB sits between your application and your databases. It provisions isolated environments per tenant, manages schema deployments across your fleet, and routes every query through a single endpoint.

4 Database Engines in 1 Platform

4 Database Engines in 1 Platform

No cold starts.
No scale-to-zero tricks.
No shared tables.

Every tenant database is always running. No wake-up latency. No connection delays. No RLS policies. Queries execute on first request.

Infrastructure Lifecycle

Design your schema

Connect and design your schema

Design your schema

Connect and design your schema

Version the blueprint

Track DDL changes internally

Version the blueprint

Track DDL changes internally

Deploy to the fleet

Provision isolated databases

Deploy to the fleet

Provision isolated databases

Schema Management

Design once. Deploy to every tenant.

Your blueprint is the source of truth. Every DDL change is tracked, versioned, and deployed identically to every tenant database.

Automatic schema versioning

One command deploys to all tenants

No migration scripts to maintain

Zero schema drift across tenants

WorkspaceDDL_COMMITBlueprint v1.4VERSIONED>_tdb deploy --alltenant_acme✓ SYNCEDtenant_globex✓ SYNCEDtenant_wayne✓ SYNCED
DEPLOY TO 1,000+ TENANTS WITH ZERO SCHEMA DRIFT
WorkspaceDDL_COMMITBlueprint v1.4VERSIONED>_tdb deploy --alltenant_acme✓ SYNCEDtenant_globex✓ SYNCEDtenant_wayne✓ SYNCED
DEPLOY TO 1,000+ TENANTS WITH ZERO SCHEMA DRIFT
TENANTSDB_PROXY
TENANT_01
acme
HOSTpg.tenantsdb.com
DBorders__acme
USERtdb_bff82659
✓ FULLY_ISOLATED
TENANT_02
globex
HOSTpg.tenantsdb.com
DBorders__globex
USERtdb_bff82659
✓ FULLY_ISOLATED
TENANT_03
wayne
HOSTpg.tenantsdb.com
DBorders__wayne
USERtdb_bff82659
✓ FULLY_ISOLATED
ONE ENDPOINT • OWN DATABASE • ZERO DATA BLEED
TENANTSDB_PROXY
TENANT_01
acme
HOSTpg.tenantsdb.com
DBorders__acme
USERtdb_bff82659
✓ FULLY_ISOLATED
TENANT_02
globex
HOSTpg.tenantsdb.com
DBorders__globex
USERtdb_bff82659
✓ FULLY_ISOLATED
TENANT_03
wayne
HOSTpg.tenantsdb.com
DBorders__wayne
USERtdb_bff82659
✓ FULLY_ISOLATED
ONE ENDPOINT • OWN DATABASE • ZERO DATA BLEED

Tenant Isolation

Every customer gets their own database.

No shared tables. No tenant_id columns. No WHERE clauses. Every tenant connects with their own connection string to their own database.

Own database and connection string

No tenant_id columns in your code

No data bleed between customers

Works with your existing drivers

Migrations

Shared to dedicated in one command.

Native database replication handles the cutover. Your app keeps running. The actual switch takes under 2 seconds.

Move tenants with zero downtime.

Native replication, no intermediate storage

Connection strings stay the same

Safety backup before every migration

>tdb tenants migrate acme --level 2 --blueprint App1
SHARED_L1ACTIVE
tenant_acme
⚡ < 2s
CUTOVER_WINDOW
MIGRATING...
DEDICATED_L2ACTIVE
tenant_acme
ZERO DOWNTIME PROVISIONING • NATIVE REPLICATION • INSTANT CUTOVER
>tdb tenants migrate acme --level 2 --blueprint App1
SHARED_L1ACTIVE
tenant_acme
⚡ < 2s
CUTOVER_WINDOW
MIGRATING...
DEDICATED_L2ACTIVE
tenant_acme
ZERO DOWNTIME PROVISIONING • NATIVE REPLICATION • INSTANT CUTOVER

One Query. Every Database.

OmniQL is TenantsDB's built-in query language. Write one query. The proxy compiles it to the native syntax of each database engine.

OMNIQL
:GET id, name FROM User WHERE active = true
POSTGRESQL
SELECT id, name FROM users WHERE active = true;
✓ NATIVE_COMPILE
MYSQL
SELECT id, name FROM users WHERE active = true;
✓ NATIVE_COMPILE
MONGODB
db.users.find({active: true}, {id:1, name:1})
✓ NATIVE_COMPILE
REDIS
HGETALL user:*
✓ NATIVE_COMPILE
NATIVE DRIVER COMPATIBLE • OPEN SOURCE STANDARD

One Query. Every Database.

OmniQL is TenantsDB's built-in query language. Write one query. The proxy compiles it to the native syntax of each database engine.

OMNIQL
:GET id, name FROM User WHERE active = true
POSTGRESQL
SELECT id, name FROM users WHERE active = true;
✓ NATIVE_COMPILE
MYSQL
SELECT id, name FROM users WHERE active = true;
✓ NATIVE_COMPILE
MONGODB
db.users.find({active: true}, {id:1, name:1})
✓ NATIVE_COMPILE
REDIS
HGETALL user:*
✓ NATIVE_COMPILE
NATIVE DRIVER COMPATIBLE • OPEN SOURCE STANDARD

One Query. Every Database.

OmniQL is TenantsDB's built-in query language. Write one query. The proxy compiles it to the native syntax of each database engine.

OMNIQL
:GET id, name FROM User WHERE active = true
POSTGRESQL
SELECT id, name FROM users WHERE active = true;
✓ NATIVE_COMPILE
MYSQL
SELECT id, name FROM users WHERE active = true;
✓ NATIVE_COMPILE
MONGODB
db.users.find({active: true}, {id:1, name:1})
✓ NATIVE_COMPILE
REDIS
HGETALL user:*
✓ NATIVE_COMPILE
NATIVE DRIVER COMPATIBLE • OPEN SOURCE STANDARD

Frequently asked questions.

Frequently asked questions.

What databases does TenantsDB support?

Do I need to change my application code?

What is a workspace?

What is a blueprint?

What is the difference between L1 and L2 isolation?

How does schema migration work across tenants?

Is there any downtime when migrating a tenant to dedicated infrastructure?

Can one tenant have multiple databases?

What is OmniQL?

How are resource limits enforced?

Can I migrate my existing shared database into TenantsDB?

Is my data safe during a migration?

What databases does TenantsDB support?

Do I need to change my application code?

What is a workspace?

What is a blueprint?

What is the difference between L1 and L2 isolation?

How does schema migration work across tenants?

Is there any downtime when migrating a tenant to dedicated infrastructure?

Can one tenant have multiple databases?

What is OmniQL?

How are resource limits enforced?

Can I migrate my existing shared database into TenantsDB?

Is my data safe during a migration?