Packstub

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

Own isolated database
Provisioned through your queue
Placed on the least-populated server
Our favorite feature horizontal scaling

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
Database pool diagram — TenancyPlugin::databasePool() spreading tenants across three servers: tenant-db-1 with 102 tenants (shared), tenant-db-2 with 98 tenants (next lands here), tenant-db-3 dedicated to one tenant, and a dashed 'add a server = add capacity' slot

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_id columns; isolation lives in the connection.
  • Universal migrations. String tenant keys and an adaptive user FK — bring your own Organization model, 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

$99 one-time
  • 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
$249 one-time
  • 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.