Coming soon

Stop building tenant isolation.
Start building what matters.

Install @tenantscale/sdk and add tenant isolation, audit logging, scoped keys, and plan enforcement to any API — one line per feature.

Get early access to the hosted dashboard
You're on the list. We'll be in touch.

🍀 First 20 signups get lifetime 40% off. No spam, just updates.

import { TenantScale } from '@tenantscale/sdk'
import { authenticateApiKey } from '@tenantscale/hono'

const ts = new TenantScale({
  supabaseUrl: process.env.SUPABASE_URL,
  supabaseKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
})

// One line — every request is tenant-isolated
app.use('/api/*', authenticateApiKey({ ts }))

app.get('/api/tenant', (c) => {
  const tenant = ts.getTenant(c)
  return c.json({ tenant: tenant.name })
})
import { TenantScale } from '@tenantscale/sdk'
import { authenticateApiKey } from '@tenantscale/express'

const ts = new TenantScale({
  supabaseUrl: process.env.SUPABASE_URL,
  supabaseKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
})

// One middleware — auth, tenant isolation, audit logging
app.use('/api', authenticateApiKey({ ts }))

app.get('/api/usage', (req, res) => {
  res.json({ tenant: req.tenantId })
})
import { TenantScale } from '@tenantscale/sdk'
import { createHandler } from '@tenantscale/next'

const ts = new TenantScale({
  supabaseUrl: process.env.SUPABASE_URL,
  supabaseKey: process.env.SUPABASE_SERVICE_ROLE_KEY,
})

const h = createHandler({ ts })

// app/api/tenants/route.ts
export const GET = h.withApiKey(async (req, { apiKey }) => {
  return Response.json({ tenant: apiKey.tenant_id })
})
# Analyze existing codebase for multi-tenant readiness
npx @tenantscale/cli migrate

# Detects: framework, ORM, routes, auth patterns
# Generates: migration SQL, tenant middleware, plan config

# Scaffold a new multi-tenant project
npx @tenantscale/cli init --framework hono

# Works with: Express, Hono, Next.js, Fastify (coming)

Drop in any adapter. All share one TenantScale instance. Works with Express, Hono, Next.js, and more.

Never leak tenant data Per-tenant audit log Ship admin in minutes AI context file included
1
integration, all tenants
TENANTSCALE.md
AI context file included
MCP
server for Claude & Cursor

How it works

Add multi-tenancy to any API in three steps. No new infra, no heavy refactors.

1

Install & configure

npm install @tenantscale/sdk @tenantscale/express

Point it at your Supabase project — that's it. The SDK handles the rest.

2

Wrap your routes

app.use('/api', authenticateApiKey({ ts }))

One line per feature. Auth, plan limits, rate limiting, audit logs — all middleware.

3

Ship with confidence

Every request is tenant-isolated. Audit trail, plan gating, SSRF-safe webhooks, and rate limits — all working, all tested.

Why not build it yourself?

Because multi-tenancy is a trap. What looks like a weekend project turns into months of edge cases. Here's what you're actually signing up for:

Feature
Build yourself
Use TenantScale
Tenant isolation
Custom middleware per framework. One bug = data leak.
Drop-in middleware. Every framework. Tested.
Audit logging
Raw DB rows, no structure, no retention policies.
Immutable events, auto-logged on every auth. Configurable retention.
Plan enforcement
Ad-hoc checks scattered across route handlers.
Declarative middleware. Change limits from the dashboard — no deploy.
Rate limiting
Redis + bespoke code. Easy to get wrong.
Plan-aware, in-memory or Redis. Proper 429 with Retry-After.
SSRF protection
An afterthought. Private IP leaks are common.
Blocks private IPs, loopback, internal hostnames by default.
Webhooks
HMAC signing, retry logic, delivery logs — all manual.
HMAC-signed, auto-retry, delivery dashboard included.
Stripe billing
Webhook endpoints, subscription sync, portal — weeks of work.
One config. Checkouts, customer portal, plan sync.
Engineering time
2–6 weeks for a solid implementation.
10 minutes to install and configure.

Open source (MIT) — no lock-in, no upsells. Self-host unlimited tenants for free.

Star on GitHub

Open source + hosted cloud

The MIT-licensed SDK is free forever with zero tenant limits — self-host it, scale infinitely. The hosted cloud API has paid tiers based on tenant count. 🍀 First 20 founders get 40% off cloud for life.

🔓
SDK is open source (MIT) — no limits, no billing
The @tenantscale/sdk and @tenantscale/mcp packages are MIT — unrestricted. Run them on your own infrastructure with unlimited tenants, API calls, and audit logs forever. The API server is BSL 1.1 (free to self-host). The hosted cloud service (managed auth, dashboard, webhook dispatch) is coming soon.
Cloud Free
$0
hosted, no credit card
Up to 3 hosted tenants
  • Query guard & post-hoc validator
  • Audit logging (7-day retention)
  • Scoped API keys
  • 1,000 API calls/day
  • MCP server for Claude & Cursor
  • Community support
Join waitlist
Cloud Hobby
$29
per month
Up to 15 tenants
  • Everything in Free, plus:
  • 30-day audit retention
  • Webhooks (HMAC-signed)
  • 10,000 API calls/day
  • Email support
  • Team members (up to 3)
Join waitlist
Cloud Pro
$99
per month
Up to 100 tenants
  • Everything in Hobby, plus:
  • 90-day audit retention
  • Webhook retry & delivery log
  • 100,000 API calls/day
  • Slack support (4h response)
Join waitlist
Cloud Scale
$249
per month
Up to 500 tenants
  • Everything in Pro, plus:
  • 1-year audit retention
  • SSO / SAML (coming soon)
  • 500,000 API calls/day
  • Slack support (1h response)
  • Priority feature requests
Join waitlist

Enterprise

Unlimited hosted tenants, dedicated infrastructure, custom SLA, phone support, and white-label options. SOC 2 Type II report available on request (coming soon). For large organizations with compliance needs. (SDK self-host is always free and unlimited — no enterprise plan needed for that.)

Contact us