Access: roles, identities and devices
People, applications, AI agents and boxes each authenticate differently, and each has its own place in the records.
Roles
| Role | May | May not | Authenticates with |
|---|---|---|---|
| Owner | Everything with a seal | Be an auditor | Passkey |
| Roost admin | Open the console, manage devices | Seal actions | Passkey |
| Security officer | Approve key and policy changes (M of N) | Use application keys | Passkey, physical key on site |
| Operator | Run operations and maintenance | Change policy | Passkey |
| Auditor | Read and verify records, export | Be an owner, create keys | Passkey |
| Application | Use keys in its partition under policy | Change anything | Short-lived credential or mutual TLS |
| AI agent | Use delegated keys within limits | Exceed limits without a person | Own short-lived identity |
Applications: no long-lived PIN
An application presents its identity, a certificate or a workload identity, and receives a short-lived credential. The PKCS#11 PIN slot carries that credential, so a leaked PIN is useless minutes later.
roost identity create orders-api --partition prod --ttl 15m --via spiffe://acme/orders-apiAI agents
roost agent create ledger-bot --on-behalf-of team:finance --keys data-key-eu --actions unwrap --limit 200/h --approve-above 1000Every action records that the agent acted, on whose behalf, and who approved when a limit was exceeded. roost agent disable ledger-bot cuts one agent off at once. Unused agents expire.
Trusting a box
Clients trust a box by its identity, not its address, so an IP change does not break anything. The first connection uses an enrollment code from the console; the box checks the client, the client checks the box and its attestation, and the enrollment is recorded.
roost enroll --code 7F3K-92QD # printed by the console; works onceOnly port 443 is used. Mutual TLS is set up by the enrollment; nobody copies certificate files by hand.
Access Identities · Agents
| Identity | Kind | Partition | Authenticates with | Credential | Last used |
|---|---|---|---|---|---|
| orders-api | Application | prod | Workload identity | 15 min, renews | 3 s ago |
| ci-runner | Application | dev | Mutual TLS | 15 min, renews | 2 min ago |
| ledger-bot | AI agent · for team:finance | prod | Own identity | 10 min, renews | 40 s ago |
Keysdata-key-eu Actionsunwrap Limit200 / h · 173 used Approve above1,000 | |||||
| J. Park | Security officer | prod · payments | Passkey + site key | — | 09:12 |
| M. Lee | Auditor | all (read) | Passkey | — | yesterday |