hakam/multi-tenancy-bundle
Hakam Multi-Tenancy Bundle is a Laravel package for adding multi-tenant support with tenant-aware database connections, migrations, and configuration, helping isolate tenant data and simplify managing multiple tenants in one application.
Framework-fit gate (read first): Despite the framing as a Laravel/PHP package, this is a Symfony bundle. It uses Symfony's bundle registration, DI container, and event system. It will not drop into a Laravel app without a real adapter layer. The first product decision it informs is therefore not "which tenancy library" but "are we a Symfony shop?" — if the answer is no, the evaluation stops here and you redirect to stancl/tenancy or spatie/laravel-multitenancy.
Build vs. buy for tenant isolation: If you are on Symfony and moving upmarket, this is a credible shortcut for the plumbing — tenant resolution (subdomain, path, header), tenant-scoped connections, and per-tenant switching. The build-vs-buy call should be framed as weeks of PM/eng time to design isolation semantics and edge cases vs. adopting a MIT-licensed bundle and owning the extension work ourselves.
Architecture commitment — the expensive, hard-to-reverse one: Single database with a tenant column, schema-per-tenant, or database-per-tenant is a decision that leaks into migrations, backups, analytics, billing, and support tooling. The package's stated flexibility across strategies is genuinely useful because it lets you defer or revisit that call — but deferring it is a cost, not a saving. Decide the default deliberately and document the exit path.
Roadmap and pricing tiering: Multi-tenancy is usually the enabling capability behind an enterprise/agency tier — SSO, isolated data, per-tenant branding, audit separation. This package unlocks the technical precondition; the PM decision it supports is when to gate those features and how to price isolation as a premium rather than shipping it as table stakes.
Use cases worth scoping: B2B SaaS with per-customer subdomains, agencies reselling a white-labeled instance, internal platforms serving regulated business units, and regional data-residency partitioning. Each has different isolation and compliance requirements — the same package supports all four, which is a risk as much as a benefit.
Adoption signal to weigh honestly: 133 stars, zero known dependents, and a low opportunity score (24.9) mean no downstream production validation. A single recent release date is not evidence of a release cadence. Treat this as "promising but unproven" and budget for a time-boxed spike plus a contingency of forking or replacing it.
Consider it when all of the following hold:
Look elsewhere when:
For executives: Multi-tenancy is the technical gate in front of our enterprise and agency revenue. This package is a permissively licensed (MIT) Symfony bundle that handles the tenant-routing and data-isolation plumbing, letting us ship a multi-tenant offering without a from-scratch build. It is not a vendor relationship — there is no support contract, and adoption means we own the code. The real decision on the table is the isolation model (shared vs. separated data per customer), because that choice is expensive to reverse and touches billing, compliance, and support. Recommendation: fund a time-boxed technical spike to validate it against our actual tenant model before committing it to a roadmap date.
For engineering: Symfony bundle, MIT, ~133 stars, zero known dependents — treat it as a head start on tenant resolution and scoped connections, not a finished platform. Plan to read the source, own the edge cases (tenant-aware migrations, background jobs, cache keys, queue workers, cross-tenant admin access), and keep a clean abstraction boundary so we can fork or swap it. The upside is a flexible, production-oriented design we don't have to invent; the cost is that we are the de facto maintainers. Do the spike against a real tenant switch, including a rollback and a data-leak test, before we commit.
Bottom line for the room: right tool if we're on Symfony and serious about multi-tenant; wrong tool if we're on Laravel or need a supported, battle-tested dependency. Confirm stack fit first — that single question decides the rest.
How can I help you explore Laravel packages today?