gdbots/iam
gdbots/iam is a PHP identity and access management package for Gdbots applications, providing users, roles, permissions, and authentication/authorization helpers to manage accounts and enforce access control across services.
gdbots:iam schemas — users, roles, permissions, and the relationships between them. Even if you never install it, the schema surface tells you how much entity modeling a real identity system requires. Use it to size your own build effort before you commit to a custom RBAC layer.gdbots/pbj, gdbots/ncr, and gdbots/curator. If your roadmap already contains an event-sourced or CQRS backbone, this package determines the ordering of that work (schemas → persistence → projections → IAM). If it does not, adopting this forces a much larger platform bet than the IAM feature alone implies.Consider it when all of the following are true:
pbj, ncr, curator) and storing to Cassandra or DynamoDB. Then this is the missing typed layer, not a new platform.Look elsewhere when any of these are true (which, for most Laravel teams, will be all of them):
spatie/laravel-permission or bouncer covers RBAC with a maintained, well-understood dependency; laravel/sanctum or laravel/passport covers tokens; a managed IdP (Auth0, Keycloak, Ory, Cognito, WorkOS) covers the rest with people contractually responsible for it.The honest default recommendation is unchanged by v3.0.0: do not add this as a dependency. Consume it as a design input.
To executives: This is not a product we should adopt — it is a well-structured blueprint for how someone else modeled identity and access management in PHP. It is free (Apache-2.0), small, and has effectively zero adoption. It did just publish a new major release, but the entire change is "now requires PHP 8.1" — no new capability, no security fix, no maintainer team behind it, and it is the first release in over three years. For a security-critical area like login, roles, and permissions, that is the wrong dependency to take on, and the version bump does not change that. What it is good for is saving us a week or two of schema design: we can read their entity model, confirm we have not missed anything (tenants, delegated admin, permission granularity), and then build on packages we actually control. My recommendation is a short, capped evaluation — a day or two of one engineer's time — with no production dependency, and a decision record that documents why we passed. If we are already deep in the gdbots event-sourcing stack, that changes the math and we should revisit, but even then I would vendor and own a fork rather than depend on it.
To engineering: Treat it as a reference spec, not a library. v3.0.0 is a single breaking change — PHP 8.1 support — which tells you two things: the project is not abandoned outright, but its maintenance cadence is measured in years, and its runtime support arrives as a major bump with no migration guide. Plan for it to lag PHP 8.2/8.3/8.4 similarly. It only functions inside the gdbots ecosystem — pbj for schema compilation, ncr for persistence, curator for event sourcing — so pulling it into a conventional Laravel app means hand-wiring serialization, storage, and projections with no service provider, config, or migrations to lean on. The Apache-2.0 license means we can fork the schemas freely; the 0-star, 0-dependent, single-commit-per-release profile means we would have to. Concretely: lift the entity model into our own Eloquent/spatie/laravel-permission design, note the gaps (fine-grained permissions, multi-tenancy), and keep the security-critical path on dependencies with active maintainers and a CVE process. If you want the event-sourced variant, put it behind a spike with an explicit exit criterion and a named owner.
How can I help you explore Laravel packages today?