Permissions your security team will read without flinching.
78 typed permissions, role matrix, API key allowlist. Extend it in the same PR as your feature.
Role names in a dropdown aren't a permission model.
Many platforms ship three roles (admin/member/viewer) and call it done. Security teams see through it in one scan.
Appstrate has a typed permission model: 78 distinct capabilities, explicit role-to-permission matrix, and an API key allowlist separate from user permissions.
Every route declares what it requires.
requirePermission("resource", "action") is a compile-time check. Adding a permission is a type error until you update the matrix.
Every piece of Appstrate is a declared, versioned artifact — the agent, its tools, its skills, its provider connections. You describe them once; the platform handles packaging, dependencies, isolation, and execution.
Each section below goes deeper on what that means for permissions your security team will read without flinching.
View the full example in the docs →What makes it work.
78 typed permissions
Resource × action. Compile-time checked.
Role matrix
Owner / Admin / Member. Customizable on Enterprise.
API key allowlist
Orthogonal to user permissions. Keys have explicit scopes.
Audit-ready
Every permission check logs user, resource, action, result.
Works great with
A permission model your CISO will sign off on.
Read /docs/security/rbac. Export the matrix as CSV for your audit.