Manage members, roles, groups, SSO, API keys, and service accounts
Governe provides comprehensive identity and access management (IAM) for your organization. This includes user management, role-based permissions, SSO configuration, and programmatic access through API keys and service accounts.
Access to Prisme.ai is two-staged: a user must first have an account on the platform, and then become a member of one or more organizations. Platform access is the prerequisite — without it, organization invites and links cannot be redeemed.A platform account is created in one of two ways:
Local signup — the user signs up with an email and password. Local signup must be enabled at the platform level, and depending on configuration, new accounts may require superadmin validation before they become active.
SSO login — the user authenticates through a configured identity provider (OIDC or SAML). The account is created automatically on first login. If the SSO provider is attached to an organization, the user is also added to that organization (see SSO auto-join).
A user without a platform account who clicks an organization invitation link will see an authentication error — they need to sign up or log in first. To onboard a user who has no account yet, send them an email invite instead (see below).
Once a user has a platform account, they can become a member of one or more organizations. Prisme.ai offers four distinct mechanisms, each with different trade-offs:
Mechanism
Trigger
Role
Groups
Re-evaluated
Works without a pre-existing platform account?
Email invite
Admin invites a user by email; the user accepts on first login or signup
Admin-chosen role
No
No
Yes — the invitation prepares the membership for first connection
Invitation code (link)
User opens a shared link while authenticated
Code’s roleSlug
No
No
No — the user must already be logged in
Join rules
Evaluated on every /me call after login
Rule’s role
Rule’s groups
Yes — members no longer matching are removed
Either
SSO auto-join
SSO login from a domain configured on an organization
Email invite — invite a specific person who may not yet have an account. The invitation prepares their membership with the right role; they automatically join the organization on their first login, whether through local signup or SSO.
Invitation code (link) — share a single link with a group of people so they can join the organization on their own with the right role. Invitation codes only work for users who already have a platform account. You can monitor the usage count and revoke a link at any time.
Join rules — automatically grant organization membership based on user attributes (email domain, SSO claims, custom metadata). Best when membership should be governed by conditions you control rather than per-user actions.
SSO auto-join — use when an organization has its own SSO provider; everyone authenticating via that provider becomes a member. Combine with join rules to assign granular roles or groups.
Sharing an invitation link with someone who isn’t on the platform yet? Invitation links require the recipient to be authenticated. Either send them an email invite (which works without a pre-existing account), or ask them to sign up first (local signup or SSO) before clicking the link.
What happens next depends on whether the user already has a platform account:
Situation
Outcome
The user already has a platform account
They are added to the organization immediately with Active status and the assigned role. No email is sent.
The user does not have a platform account yet
An invitation email is sent. They appear with Pending status until their first login (via local signup or SSO), at which point the prepared membership is activated with the assigned role.
For sharing access with multiple people at once via a reusable link, use Invitation Codes instead.
Join rules allow automatic organization membership based on user attributes. Rules are evaluated dynamically and can assign both a role and group memberships.
Join rules are evaluated on every /me API call (the first call the platform makes after authentication). A per-user version cache ensures rules are only re-evaluated when they change:
Each org’s join rules have a version counter (incremented when rules are updated)
The gateway tracks which version was last evaluated for each user
If the version matches, evaluation is skipped for that org
Max Uses: Limit how many times the code can be used (optional)
Expiration: When the code expires (optional)
Share the generated link
Recipients must be authenticated on the platform to redeem an invitation link. If a recipient does not have a platform account yet, use an email invite instead, or ask them to sign up first (local signup or SSO).
Roles define what actions members can perform. Each role contains a set of permissions.
For the big picture — how organization roles combine with super-admins and workspace roles to authorize every action on the platform — see Self-Hosting → Permissions Management.
Beyond the scopes hardcoded on a role, every resource instantiated by an Agent Factory or Knowledge project carries its own RBAC. From a project’s Share dialog, you can grant access to specific users or groups on that one resource, picking a product-managed role (e.g. Viewer / Editor / Owner). Those product roles map to the same product:resource:action permissions used by organization roles.This lets you give fine-grained access to a single agent or knowledge base even when the user’s organization role has no scope for that resource.
Permissions are intersected, not unioned. An action on a resource is allowed only when the equivalent permission is granted both by the user’s organization role and by their role on the resource. Granting Editor on a single agent does not bypass the organization role — if that role does not include agent-factory:agents:write, the user still cannot edit the agent.
Member base + agent-factory:*, storage:*, knowledge:*
*
Full agent-factory & knowledge access
Builder
builder
Agent Maker + builder:*
*
Builder + agent-factory + knowledge access
Agent Standard
agent-standard
llm:*, tools:*
—
Default agent role (for service accounts)
All system roles except owner can be customized per organization. When an admin edits a system role in the Governe UI, a custom role override is saved for that organization that fully replaces the system definition.
Select permissions using the Permission Tree Editor
The role editor displays permissions as a hierarchical tree organized by product > resource > action:
Checking a product node sets the product-level wildcard (e.g. storage:*)
Checking a resource node sets the resource-level wildcard (e.g. storage:vector_stores:*)
Individual actions can be toggled independently
For products supporting instance scoping, a Scopes section appears under each resource, allowing admins to set the “All resources” wildcard or add specific resource IDs
Configure Single Sign-On with your corporate identity provider.
The provider config format (OIDC / SAML, attributesMapping, claims, certificates, …) is identical to the platform-level SSO documented under Self-Hosting → Authentication & SSO. The only difference is where you declare it: a Kubernetes ConfigMap for platform-wide SSO vs the Governance UI here for per-organization SSO. Refer to the self-hosting page for the full field-by-field reference and IdP-specific tips (Google Workspace, Okta, Auth0, Keycloak, ADFS, OneLogin, …).
When updating SSO config, the system validates that domains are not already claimed by another organization. If a domain conflict is found, the update is rejected with a DOMAIN_ALREADY_USED error.
SSO provider secrets (OIDC clientSecret, SAML certificates) are encrypted at rest using envelope encryption (@prisme.ai/secrets) when the SECRETS_MASTER_KEYS environment variable is configured:
A per-organization Data Encryption Key (DEK) encrypts the SSO config
The DEK is wrapped by a platform-level Key Encryption Key (KEK) using AES-256-GCM
Wrapped DEKs are stored in MongoDB alongside the org; plaintext secrets are never persisted
If SECRETS_MASTER_KEYS is not configured, SSO configs are stored in plaintext.
API keys (iak_*) enable programmatic access to the Prisme.ai platform from external systems. They are scoped to an organization and carry specific permissions and resource scopes.
The embedded orgSlug allows the auth middleware to resolve the organization without a database lookup. Keys are stored hashed — the plaintext key is returned only once at creation time.
Scopes restrict which resources a key can access, even if the permission allows the action. They use the same product:resource:id format as role scopes:
API key validation is handled natively by the platform runtime. When a request includes an iak_* key, the runtime resolves the organization, permissions, and scopes, then injects them into the standard run.permissions and run.scopes variables — the same variables used for user session auth. No cross-workspace HTTP call is needed.