Overview
All `@multitenant/*` packages at a glance.
All public libraries are scoped @multitenant/… on npm. Install only what your app needs; @multitenant/next is a convenience meta-package for Next.js App Router projects. Each published package has its own page under Packages in the sidebar.
Core & config
| Package | Role |
|---|---|
@multitenant/core | createTenantRegistry, resolveByHost, resolveByRequest, getTenantConfig, isTenantFeatureEnabled, TenantNotFoundError, … |
@multitenant/config | loadTenantsConfig, validateTenantsConfig — same validation as multitenant check |
npm install @multitenant/core @multitenant/configCLI & dev proxy
| Package | Role |
|---|---|
@multitenant/cli | multitenant init, check, print, dev (local proxy + config hot reload) |
@multitenant/dev-proxy | HTTP proxy + WebSocket upgrade used by multitenant dev |
npm install -D @multitenant/cliOr run CLI without installing ( npx / pnpm dlx / yarn dlx ) — see CLI.
Next.js
| Package | Role |
|---|---|
@multitenant/next | Meta — re-exports core, config, react, next-app |
@multitenant/next-app | App Router — createTenantMiddleware, getTenantFromHeaders, requireTenant; /auto, /auto-node |
@multitenant/next-pages | Pages Router — withTenantGSSP, withTenantApi |
npm install @multitenant/next-app next react react-domMeta package (one line for typical App Router setups):
npm install @multitenant/next next react react-domReact
| Package | Role |
|---|---|
@multitenant/react | TenantProvider, useTenant, useMarket, useTenantConfig, useTenantFlag, … |
Peers: react ≥ 18.
Servers
| Package | Role |
|---|---|
@multitenant/express | multitenantExpress({ registry, environment }) → req.tenant |
@multitenant/nest | MultitenantModuleForRoot, @Tenant() decorator |
npm install @multitenant/express expressnpm install @multitenant/nest @nestjs/common @nestjs/coreIdentity & database (optional)
| Package | Role |
|---|---|
@multitenant/identity | Encrypted session cookie helpers, getSessionFromCookieHeader, buildSessionSetCookieHeader, assertAccess |
@multitenant/database | runWithTenantScope, Postgres helpers, bounded pool cache — Node only, not Edge |
ORM references (thin, Postgres-oriented)
@multitenant/drizzle, @multitenant/kysely, @multitenant/prisma, @multitenant/typeorm — map ResolvedTenant → pool/client/DataSource. They do not replace createTenantRegistry; they sit beside it.
Versions are per package on npm. Release process: docs/RELEASE.md and:
npm run release:publish(from the monorepo root)