Open-source authorization for TypeScriptMIT core · scoped RBAC · your own database
Authorization for TypeScript apps, declared in code.
Your applications declare their permissions in the code that enforces them. Your team grants them without an engineering ticket. Every check runs in your own database.
Agents respond to the immediate task at hand, often losing the bigger picture. alfiz-verify ensures that your agent never forgets to protect new routes.
A surface is not done until all four points hold:
1 · The page
Gated before a row is fetched.
2 · Navigation
Only items the principal matches are rendered at all.
3 · The server action
Gated before any work. The step that gets skipped, so it errors.
4 · Conditional UI
Gated at the scope of the thing it acts on.
ci — every commitbash
$ alfiz-verify✖[ungated-action] app/actions/export.ts:14exported server action "exportDocument" contains no gate✖[visibility-as-gate] app/actions/share.ts:15canAny() is a visibility affordance, never a gate⚠[unreferenced-leaf]"docs.files.read_history"declared, but referenced by no gate or nav item
Your first check, in under ten minutes.
Install two packages, declare a catalog, wire the driver you already have, and call can().