What an organization owns
Every agent belongs to one organization. A public agent is reachable by every member through their organization role; a private agent only through a grant on that agent, except by the owner, who keeps access to everything; builders and above switch an agent between the two. Each member gets a personal Space on joining, private to them and supervising the organization’s public agents. A member’s API keys are bound to the organization or to named agents; connections to integrations are personal or shared.The six roles
Roles nest: each includes the one before it. Sensitive permissions (money, secrets, role assignment, key issuance, telephony provisioning) are never implied by a broad grant; a role names them or lacks them.
An admin or owner assigns only roles whose permissions they fully hold; only an owner grants
owner, and the last owner can’t be downgraded or removed. An invitation goes by email, carries a role on the organization or on named agents (never owner; billing-admin only on the organization), and expires after 2 days; accepting it creates the member’s Space. A grant on one agent gives a role on that agent alone. The admin dashboard’s Admin users page invites by email to the selected agent; its Access page list sets no role, and the invitee joins as viewer.
Deactivating a member suspends their grants and revokes their organization-scoped API keys; reactivating restores the grants, not the keys. Removing deletes membership and grants and revokes the same keys. Neither touches the owner, and the last active admin can’t be deactivated.
Roles and API keys
A scoped API key carries a role, chosen when it is issued, on each organization or agent it may act on. The issuer may only give a role within their own reach, and every call is checked against both the key’s grants and its owner’s current grants, so demoting, deactivating, or removing the owner narrows or ends the key at once. A key never inherits its owner’s reach into private agents: they are named on the key, by id or as a snapshot taken at issue time, so agents created later are excluded. Keys take an optional expiry; an admin may issue and list keys for another member.One credential across client organizations
One user session or key reaches every organization it holds a grant in.lua agents --json --ci lists them all, with each agent’s visibility and your roles on it. lua init --agent-id <id> points a project at one agent; --agent-name <name> --org-id <id> creates an agent in a client organization; --org-name <name> creates an organization with you as owner; --from-agent-id <id> --org-id <id> copies an agent across organizations. A scoped key creates nothing; see What a scoped key cannot do.
What an administrator controls
admin and owner also set:
- Template install policy: an allow-list, a deny-list (deny wins), whether members may browse the public catalog, and an approval mode. Under
require-approvala member’s install queues as a request an admin approves or denies, an admin’s own install proceeds, and a blocked install fails withPOLICY_BLOCKED; the organization’s own templates are never blocked. - Single sign-on: SAML or OIDC for a domain proven with a DNS TXT record. Enforcing it blocks other sign-in methods on those domains. A first sign-in provisions the member with the default role (
viewerunless set) or the highest role mapped from the identity provider’s groups, neverowner. SCIM 2.0 provisioning and deprovisioning are accepted with a per-organization token; deprovisioning deactivates the member. A domain-join policy (off,allow-all,require-approval) lets verified-domain emails join asviewer. - Audit log: SSO and SCIM changes, member provisioning and deprovisioning, API key issuance, template and workflow policy writes, and feature switches, with actor, action, target, and time; read through the API, newest first, up to 200 a page. No file export.
- Workflow run retention (see Security and data) and archiving the organization, which needs an emailed confirmation code, leaves members, grants, and channels in place, and makes requests to its agents answer
ORG_ARCHIVEDuntil restored.
Organizations and neighbors
A role is a named bundle of the scopes on the Credentials page: that page maps CLI areas to scopes, this one scopes to roles. A Space is a routing surface, not a permission boundary: connections follow their owner, and a consulted agent runs with its own grants. An agent template’s consent rules travel with it; the install policy belongs to the installing organization.When to use it
- An agency with several clients: one organization per client, owned by the client. Agency staff hold
builder, the client’s operator holdsoperator, and the agency’s CI holds one scoped key per client organization, so revoking one client touches nothing else. Publish the shared agent as an agent template and install it into each client’s organization under that client’s policy. - One company, several departments: one organization; private agents with per-agent grants keep each department’s agents apart.
- One developer: one organization and a user session; roles start to matter when a second person or a CI key arrives.
Limits
Next steps
Credentials
User sessions, legacy and scoped keys, and the scope table.
Security and data
The mechanisms behind these controls, and what is not stated.
Agent templates
Publish once, install per client, update with consent.
For operators
What a client operator changes in the dashboard.

