Filament Tenancy — now available
One database per tenant. Any number of database servers.
Filament Tenancy brings together the two tools we love most for multi-tenant Laravel — Filament v5's panel experience and stancl/tenancy v4's database-per-tenant isolation. Tenants reachable by subdomain, custom domain, or path, async provisioning with a polished waiting room, and a load-balanced database pool that grows with you.
New on the blog: Filament v5 + stancl/tenancy — the best of both, together
tenant
Adding a database server is one connection definition and one line of config.
stancl/tenancy ships a brilliant primitive: every tenant can carry its own database connection, and provisioning, migrations, and runtime queries all follow it. Filament Tenancy builds on that and turns your servers into a pool — list ordinary Laravel connections and every new tenant lands on the one with the fewest tenants. Out of capacity? Add a server, and you're done.
- Placement is persisted per tenant — provisioning, runtime connections, migrations, and deletion all follow it automatically
- Strategies: least-tenants, round-robin, weighted — no proxy, no extra network hop
- Data-residency customer? Pin the tenant to a specific server — pins are never rebalanced
The best of both, out of the box
Filament's experience. stancl's isolation. Already wired together.
- Subdomain, custom domain, or path — zero wiring. The plugin registers its own central-domain-aware middleware, matches verified hosts, and manages the session cookie domain per host at runtime.
-
Custom domains per tenant. Tenants attach
app.their-company.com: DNS ownership verification, full-host routing, and single-origin login handoff with logout-everywhere revocation. - Async provisioning with a real waiting room. Databases are created and migrated through your queue while new tenants watch a polished Livewire-polled page — and are redirected the moment they're ready.
- Ready-tenant gating everywhere. The switcher only lists ready tenants; middleware keeps half-provisioned panels unreachable; failures flip to a retry path — no route in the panel leads to a half-provisioned database.
- Cross-database resource syncing. Mirror users, catalogs, or licenses between central and every tenant database — bidirectional, queueable, with mapping cleanup when tenants are deleted.
Built for production
Tested against real servers.
The craft in multi-database tenancy lives in the seams — sessions across hosts, central vs. tenant writes, queue pipelines, slug uniqueness from a tenant subdomain. Those seams are exactly what this plugin tests:
- 300+ tests. Including an end-to-end suite that provisions tenants across three real PostgreSQL servers — not just SQLite in memory.
-
Failure paths first. A failed provisioning job flips the tenant to
failed, surfaces in the waiting room, and retries with one artisan command. -
Octane-safe. Per-request tenancy resets and multi-DB-safe defaults — tenant databases carry no
tenant_idcolumns; isolation lives in the connection. -
Universal migrations. String tenant keys and an adaptive user FK — bring your own
Organizationmodel, keep your existing users table. - Testing helpers included. Boot tenancy in your own test suite with the shipped helpers instead of reverse-engineering the runtime.
Launch pricing
One-time price. A year of updates. Yours forever.
Buy once and keep every version you receive, forever. Your license includes a year of updates and new features; renewing afterwards is optional. These are launch-window prices — Solo moves to $149 and Unlimited to $299 when the window closes.
Solo
- One production project · unlimited developers
- Up to 3 tokens for local, CI, and production installs
- 1 year of updates — keep every version you receive
Unlimited
Recommended- Unlimited projects — client work included
- Unlimited tokens for local, CI, and production installs
- 1 year of updates — keep every version you receive
Composer-native delivery with license tokens, invoices handled by our merchant of record, and the full plugin page for install details. Questions first? Write us at support@packstub.dev.