Skip to content
VeguiPerms logo

Permission to build.

VeguiPerms brings predictable authorization to TypeScript. Model access with simple rules, let inheritance do the heavy lifting, and share one permission engine from server to UI.
THE MATCHING ENGINE

01 / CHECK A PERMISSION

ability.can(

workspaces.1.read

)

One subject. Three grants.
One deterministic answer.

02 / FIND THE WINNING GRANT

workspaces.1.readDIRECT · EXACT
DENY
workspaces.1.*DIRECT · WILDCARD
ALLOW
workspaces.*GROUP · DEVELOPERS
ALLOW
DENYExact direct grant wins over broader wildcards.
01 / 03

Illustrative checks for the same subject: direct grants take priority over inherited grants.

SMALL RULES. CLEAR DECISIONS.

Access control that fits your application.

Users, services and groups. Explicit grants and inherited permissions. A predictable answer to one simple question: can they?

Express more with less

Dot-separated permissions and wildcards turn a collection of special cases into a model you can read. Explore the concepts →

Inherit. Override. Resolve.

Share access through groups and default parents. Resolve conflicts with deterministic precedence. Understand inheritance →

Your data, your adapter

Start in memory. Persist with SQLite, MySQL, Postgres or MongoDB. The permission engine stays the same. Choose an adapter →

One model across your stack

Authorize on the server. Use resolved snapshots for UI decisions with the same matching semantics. Find your integration →

START SMALL. BUILD FROM HERE.

Your first permission check is a few lines away.

bun add vperms