Accounts and permissions
For: People using the web UI.
Give each person an account and the tenant permissions their work requires. Reading job content is a separate permission.
Accounts and roles
oz0 user add kim --role member # prints a generated password, once
oz0 user grant kim --role operator # kim's role in the default tenant
oz0 user grant kim --role reader --tenant acme --content
oz0 user add sam --role admin --password-stdin < password.txt
oz0 user list
oz0 user revoke kim --tenant acme
oz0 user password kim # a new password; signs kim out everywhere
oz0 user remove kim
An account has a role in each tenant it is a member of. Each role can do what the ones before it can:
| Role | May |
|---|---|
| reader | Look: nodes, agents, plugins, jobs and their steps, queues, errors, insights, cost, findings; export a job's shape |
| operator | Also start, cancel and tag jobs, and decide approvals |
| admin | Also change the tenant: nodes and rollouts, plugins, secrets, join tokens, the budget; and read its audit log |
| owner | Also decide who is a member, under Access, People, or with user grant |
| auditor | Look, and read the audit log, evidence, retention and governance; change nothing |
| privacy-officer | Look, and find and erase data subjects and place legal holds; start no job |
| agent-user | Use the agents its membership grants in the chat drawer, and see only its own chats and jobs |
Each role is a set of permissions, and a membership may hold several roles; a server can add a role set's roles to these. Access, Roles lists the roles in force with their permissions, read-only; the role pickers under Access offer them. The web UI shows what the account's permissions allow (from /api/auth/me) and the API decides. An agent user lands in its chats and sees nothing else of the tenant. See Roles and permissions.
Seeing what jobs read and wrote, such as prompts, answers, tool arguments and results, and each step's input and output, is a permission of its own. Operators, admins and owners have it unless an owner takes it away (--content=false), and readers do not unless an owner gives it (--content). Without it, the job page shows the shape of each job: which tools it called and when, its steps and their cost, but not their content.
The account itself has a cluster role: admin (the owner of every tenant, who also adds tenants and accounts), reader (reads every tenant) or member (only its tenants). server init and dev mode create one admin. Everyone with a password can change it under Settings.
- Sessions last seven days and end when the password changes. Access and
oz0 user sessionslist them; see Sign-in. Five wrong passwords for one name from one address within 15 minutes cost a minute's wait. - The session cookie only works for requests from the app itself: other sites cannot use it, and the app loads nothing from anywhere else, so it works without internet access.
- The CLI keeps using its operator certificate; accounts are for people in a browser.
For lists across tenants, use All tenants.