26 % faster than CASL (real benchmark)
The fastest zero-depABAC engine
Build powerful, flexible access control policies with modular packages. From lightweight core to full admin UI—install only what you need.
9.37 µs
Warm evaluation (100 policies)
4.2 KB
abac-engine (gzip)
18 KB
Full admin UI
Everything you need for ABAC
A complete suite of tools to manage, test, and deploy your access control policies
Policy Management
Create, edit, and manage ABAC policies with a powerful visual interface.
View Policies- Logical operators (AND, OR, NOT)
- Comparison operators
- Real-time policy editor
- Policy versioning
- Nested conditions
Real-time Evaluation
Test policies in real-time with our powerful evaluation engine. See results instantly.
- Lightning-fast evaluation
- Detailed audit logs
- Debug mode
Framework Agnostic
Use with React, Next.js, or any JavaScript framework. TypeScript-first design.
- Core package (framework-free)
- React hooks & components
- Next.js utilities
Get started in minutes
Choose your approach: use the core engine directly or get a full admin UI
abac-engine
Core evaluation engine with zero dependencies
1
Install
npm install abac-engine2
Define Policy
import { PolicyBuilder, ConditionBuilder,
AttributeRef } from 'abac-engine'
const policy = PolicyBuilder
.create('doc-access')
.version('1.0.0')
.permit()
.condition(
ConditionBuilder.equals(
AttributeRef.subject('role'),
'user'
)
)
.build()3
Create Engine
import { ABACEngine, CombiningAlgorithm }
from 'abac-engine'
const engine = new ABACEngine({
policies: [policy],
combiningAlgorithm:
CombiningAlgorithm.DenyOverrides
})4
Evaluate Request
const decision = await engine.evaluate({
subject: {
id: 'user-1',
attributes: { role: 'user' }
},
resource: { id: 'doc-1' },
action: { id: 'read' }
})
// decision.decision === 'Permit'@devcraft-ts packages
Modular admin UI - headless hooks or pre-built components
1
Install Package
# Headless hooks (~30kb)
npm install @devcraft-ts/abac-admin-react
# Or pre-built UI (~130kb)
npm install @devcraft-ts/abac-admin-react-ui2
Setup Provider
import { ABACProvider }
from '@devcraft-ts/abac-admin-react'
function App() {
return (
<ABACProvider config={{
baseURL: '/api/abac'
}}>
<PolicyManager />
</ABACProvider>
)
}3
Use Hooks
import { usePolicies }
from '@devcraft-ts/abac-admin-react'
function PolicyManager() {
const { policies, createPolicy }
= usePolicies()
// Build your custom UI
return <div>...</div>
}4
Create Policies
await createPolicy({
policyId: 'doc-policy',
version: '1.0.0',
effect: 'PERMIT',
conditions: {
type: 'equals',
left: { category: 'subject', key: 'role' },
right: 'admin'
},
isActive: true,
category: 'document',
tags: ['read'],
createdBy: 'user-123'
})Ready to get started?
Try our demo and see how easy it is to manage access control policies
View Demo Policies