Most platforms bolt multi-tenancy onto one shared permission model: every tenant is just rows tagged with a tenant_id. Canopy isolates at the environment level: each environment is its own authorization system, with its own permission catalog, roles, and hierarchy, sharing nothing with the next. Identities stay unified at the account level, so one person is a single identity, granted access independently in each environment.
Each environment defines its own permission vocabulary, roles, and hierarchy. Two environments on Canopy can run completely different access models, with no shared authorization config between them.
Without proper isolation, permission checks become tenant-aware conditionals, roles leak across customers, and a schema change ripples to everyone.
Identities live at the account level: one person, one identity. Everything that grants access is sealed inside an environment: its own hierarchy, roles, permission catalog, and keys, sharing nothing with the next.
One person is a single identity, unified across every environment in the account.
Its own tree shape, never shared or joined across environments.
Its own catalog and roles, defined for this environment alone.
Keys, OAuth clients, and webhooks scoped to this environment only.
No shared assumptions. No global constraints. No two environments need to look alike.
Its own vocabulary of permission keys.
Roles that bundle exactly the permissions it needs.
Its own tree shape and depth.
Its own API keys and connected systems.
No two environments need to look alike.
New accounts are created through a self-service flow, and each starts with a ready-to-use environment that evolves independently.
A new account spins up with its first environment, isolated and ready instantly.
Each environment begins with the essentials, ready to use.
Add regions, teams, and custom roles to any environment, independently of every other one.
Each environment grows independently, from flat RBAC to a deep hierarchy.
A retail chain, a healthcare provider, and a logistics company: each in its own environment, with its own hierarchy, permission model, and roles. All coexisting, completely isolated.