*.tenantsdb.com
🔌 Connection Format
All databases follow a consistent connection pattern. Workspace databases use _dev suffix, tenant databases use double underscore __.
TypeDatabase NameExample
Workspace {blueprint}_dev myapp_dev
Tenant {blueprint}__{tenant} myapp__acme
PostgreSQL
postgresql://{project_id}:{password}@pg.tenantsdb.com:5432/{database}
MySQL
mysql://{project_id}:{password}@mysql.tenantsdb.com:3306/{database}
MongoDB
mongodb://{project_id}:{password}@mongo.tenantsdb.com:27017/{database}?authMechanism=PLAIN&directConnection=true
Redis
redis://{tenant_id}:{api_key}@redis.tenantsdb.com:6379/0
📡 Endpoints
DatabaseHostPort
PostgreSQLpg.tenantsdb.com5432
MySQLmysql.tenantsdb.com3306
MongoDBmongo.tenantsdb.com27017
Redisredis.tenantsdb.com6379

🐘 PostgreSQL
Connect with psql, Sequelize, SQLAlchemy, Prisma, or any PostgreSQL-compatible driver.
Connect to Workspace
Shell
psql "postgresql://tdb_2abf90d3:tdb_d2bf66ed7898c448@pg.tenantsdb.com:5432/myapp_dev"
Build Schema
SQL
CREATE TABLE accounts (
    id SERIAL PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    balance DECIMAL(15,2) DEFAULT 0
);

INSERT INTO accounts (name, balance) VALUES
  ('Alice', 1000),
  ('Bob', 2000);
Or import a template: tdb workspaces schema myapp --template fintech
Connect to Tenant Databases
acme
Shell
psql "postgresql://tdb_2abf90d3:tdb_d2bf66ed7898c448@pg.tenantsdb.com:5432/myapp__acme"
globex
Shell
psql "postgresql://tdb_2abf90d3:tdb_d2bf66ed7898c448@pg.tenantsdb.com:5432/myapp__globex"
Same credentials, different database. Isolated data.
ORM Examples
Sequelize (Node.js)
JavaScript
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize(process.env.DATABASE_URL);
// DATABASE_URL=postgresql://tdb_2abf90d3:tdb_d2bf66ed@pg.tenantsdb.com:5432/myapp__acme
SQLAlchemy (Python)
Python
from sqlalchemy import create_engine
engine = create_engine(os.environ['DATABASE_URL'])
# DATABASE_URL=postgresql://tdb_2abf90d3:tdb_d2bf66ed@pg.tenantsdb.com:5432/myapp__acme
Prisma
.env
DATABASE_URL="postgresql://tdb_2abf90d3:tdb_d2bf66ed@pg.tenantsdb.com:5432/myapp__acme"

🐬 MySQL
Connect with mysql client, Sequelize, SQLAlchemy, Prisma, or any MySQL-compatible driver.
Connect to Workspace
Shell
mysql -h mysql.tenantsdb.com -P 3306 \
  -u tdb_2abf90d3 -ptdb_d2bf66ed7898c448 \
  myapp_dev --enable-cleartext-plugin
The --enable-cleartext-plugin flag is required for TenantsDB proxy authentication.
Build Schema
SQL
CREATE TABLE accounts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    balance DECIMAL(15,2) DEFAULT 0
);

INSERT INTO accounts (name, balance) VALUES
  ('Alice', 1000),
  ('Bob', 2000);
Connect to Tenant Databases
acme
Shell
mysql -h mysql.tenantsdb.com -P 3306 \
  -u tdb_2abf90d3 -ptdb_d2bf66ed7898c448 \
  myapp__acme --enable-cleartext-plugin
globex
Shell
mysql -h mysql.tenantsdb.com -P 3306 \
  -u tdb_2abf90d3 -ptdb_d2bf66ed7898c448 \
  myapp__globex --enable-cleartext-plugin
Same credentials, different database. ORMs handle the cleartext plugin automatically.
ORM Examples
Sequelize (Node.js)
JavaScript
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize(process.env.DATABASE_URL);
// DATABASE_URL=mysql://tdb_2abf90d3:tdb_d2bf66ed@mysql.tenantsdb.com:3306/myapp__acme
SQLAlchemy (Python)
Python
from sqlalchemy import create_engine
engine = create_engine(os.environ['DATABASE_URL'])
# DATABASE_URL=mysql://tdb_2abf90d3:tdb_d2bf66ed@mysql.tenantsdb.com:3306/myapp__acme
Prisma
.env
DATABASE_URL="mysql://tdb_2abf90d3:tdb_d2bf66ed@mysql.tenantsdb.com:3306/myapp__acme"

🍃 MongoDB
Connect with mongosh, Mongoose, PyMongo, or the native MongoDB driver.
Connect to Workspace
Shell
mongosh "mongodb://tdb_2abf90d3:tdb_d2bf66ed7898c448@mongo.tenantsdb.com:27017/myapp_dev?authMechanism=PLAIN&directConnection=true"
authMechanism=PLAIN and directConnection=true are required for TenantsDB proxy authentication.
Build Schema
JavaScript
db.createCollection("accounts")

db.accounts.insertMany([
    { name: "Alice", balance: 1000 },
    { name: "Bob", balance: 2000 }
])

db.accounts.createIndex({ name: 1 })
Connect to Tenant Databases
acme
Shell
mongosh "mongodb://tdb_2abf90d3:tdb_d2bf66ed7898c448@mongo.tenantsdb.com:27017/myapp__acme?authMechanism=PLAIN&directConnection=true"
globex
Shell
mongosh "mongodb://tdb_2abf90d3:tdb_d2bf66ed7898c448@mongo.tenantsdb.com:27017/myapp__globex?authMechanism=PLAIN&directConnection=true"
Same credentials, different database. Isolated data.
Driver Examples
Node.js (native)
JavaScript
const { MongoClient } = require('mongodb');
const client = new MongoClient(process.env.MONGODB_URL);
// MONGODB_URL=mongodb://tdb_2abf90d3:tdb_d2bf66ed@mongo.tenantsdb.com:27017/myapp__acme?authMechanism=PLAIN&directConnection=true
Mongoose
JavaScript
const mongoose = require('mongoose');
mongoose.connect(process.env.MONGODB_URL);
// MONGODB_URL=mongodb://tdb_2abf90d3:tdb_d2bf66ed@mongo.tenantsdb.com:27017/myapp__acme?authMechanism=PLAIN&directConnection=true
PyMongo (Python)
Python
from pymongo import MongoClient
client = MongoClient(os.environ['MONGODB_URL'])
# MONGODB_URL=mongodb://tdb_2abf90d3:tdb_d2bf66ed@mongo.tenantsdb.com:27017/myapp__acme?authMechanism=PLAIN&directConnection=true

🔴 Redis
Connect with redis-cli, ioredis, redis-py, or node-redis.
Connect to Workspace
Shell
redis-cli -u "redis://dev:tenantsdb_sk_a91de156...@redis.tenantsdb.com:6379/0"
Redis uses {tenant_id}:{api_key} for authentication, unlike other databases which use {project_id}:{password}.
Add Data
Redis
SET user:1 "Alice"
SET user:2 "Bob"
HSET account:1 name "Alice" balance 1000
HSET account:2 name "Bob" balance 2000
Connect to Tenant Databases
acme
Shell
redis-cli -u "redis://acme:tenantsdb_sk_a91de156...@redis.tenantsdb.com:6379/0"
globex
Shell
redis-cli -u "redis://globex:tenantsdb_sk_a91de156...@redis.tenantsdb.com:6379/0"
Same API key, different tenant. Each tenant has an isolated keyspace with automatic key prefixing.
Client Examples
ioredis (Node.js)
JavaScript
const Redis = require('ioredis');
const redis = new Redis(process.env.REDIS_URL);
// REDIS_URL=redis://acme:tenantsdb_sk_xxx@redis.tenantsdb.com:6379/0
node-redis
JavaScript
const { createClient } = require('redis');
const client = createClient({ url: process.env.REDIS_URL });
// REDIS_URL=redis://acme:tenantsdb_sk_xxx@redis.tenantsdb.com:6379/0
redis-py (Python)
Python
import redis
r = redis.Redis.from_url(os.environ['REDIS_URL'])
# REDIS_URL=redis://acme:tenantsdb_sk_xxx@redis.tenantsdb.com:6379/0