The topology as source
RBAC, ABAC, ReBAC and PBAC declared in .warden files under version control. One CLI lints, applies, diffs, formats and exports, idempotently and aware of what to prune.
RBAC, ABAC and Zanzibar-style relation tuples behind one Check call. Precedence is fixed and stated up front, explicit deny beating allow beating default deny, so you can layer a role model, attribute conditions and a relationship graph without guessing which one wins.
One engine covering roles, attributes, relations and time-bound policy, with one definition of what a subject is.
The whole authorisation model as .warden files, with one CLI to lint, apply, diff, format and export, idempotent and prune-aware.
Syntax highlighting, completion, hover, go-to-definition, diagnostics and formatting in VS Code, Neovim and Helix.
AuthorisationUses Warden for authorisation, with the policy topology held as .warden files under version control and applied from the binary at start.
Shipping something on Warden? The list is only as complete as the people who tell me. Ask to be on it, or just say what got in your way.
Get listed →Authorisation written as files you can review, covering four models without four vocabularies.
RBAC, ABAC, ReBAC and PBAC declared in .warden files under version control. One CLI lints, applies, diffs, formats and exports, idempotently and aware of what to prune.
Syntax highlighting, cross-file completion, hover, go-to-definition, diagnostics and formatting, reaching VS Code, Neovim and Helix from a single implementation.
Permissions, resource-scoped assignments and glob matching, with identifiers and timestamps filled in on create so the boilerplate is not yours to write.
Allow and deny policies over IP ranges, time windows, departments and any attribute on the context, with more than fifteen operators including CIDR membership and regex.
Relation tuples traversed breadth-first with subject sets through group membership, a configurable maximum depth and cycle detection.
Validity windows for incident freezes and scheduled grants, plus named side-effects such as audit-log and require-mfa emitted when a policy matches.
Hard tenant walls with a softer namespace hierarchy inside each one, inheriting from ancestors, isolated between siblings and empty by default at the global scope.
Applying over an embed.FS ships the .warden tree inside the binary, so production has no external files to lose.
Postgres, SQLite, MongoDB and in-memory behind one composite Store interface, picked by DSN, with migrations managed by Grove and round-trip tested.
Roles and permissions for the common case.
Attribute rules where roles run out.
Relationship checks for graph-shaped ownership.
One call. The model used is an implementation detail.
Warden answers "are you allowed to do this?" across three authorization models behind one API: RBAC, ABAC and ReBAC.
Precedence is fixed and stated up front: explicit deny beats allow beats default deny. Most systems that support more than one model leave this implicit, and the result is that nobody can predict the outcome of a conflict without reading the implementation.
All data is tenant-scoped via Forge scope or standalone context helpers. There is an in-memory LRU cache with TTL and per-tenant or per-subject invalidation, plugin hooks for audit logging and metrics, and a drop-in Forge extension with DI, routes and middleware.
An authorization check is a function call. Making it a network call means every request now depends on a third service, and the cache you build to fix that will have an invalidation bug.