Permissions where they belong
Declare gates directly inside Resources, Pages, Widgets, and Clusters with a single defineGates() method.
Define gates inside your Resources, Pages, and Widgets. Scope them per panel and per tenant — all from one clean, native interface.
One-time payment · Lifetime updates · MIT licensed

Trusted by developers shipping real Filament apps
composer require hexters/hexapublic function defineGates(): array
{
return [
'user.index' => 'View users',
'user.create' => 'Create users',
];
}return hexa()->can('user.index'); // ✓ doneThoughtful defaults, a clean UI, and an API that gets out of your way.
Declare gates directly inside Resources, Pages, Widgets, and Clusters with a single defineGates() method.
Built on Laravel’s Gate. Use hexa()->can(), visible(), @can, or Auth::user()->can() — whatever fits.
Each panel runs its own auth guard, and roles stay isolated per tenant out of the box.
A user with no role is treated as a Superuser, so you are never locked out before a role exists.
Register gates that don’t belong to a component — Horizon, Telescope, anything — with GateItem.
A built-in key/value store via hexa()->setOption() / getOption() for app-wide settings.
One-time payment. No subscription, no seats, no nonsense.
Free
$8 one-time
Join 10,000+ installs. Ship access control you can trust — for the price of a coffee.