- Who is requesting access: a user, group, agent, service account, or userset.
- What they are accessing: a project, room, repository, feed, secret, service account, or other project resource.
- Which role they have on that resource.
- Which room API scope a participant token carries after access is granted.
Principals
Resources
Project Roles
Project roles apply at the project level.owner is assigned to the project owner. admin inherits owner-level administrative capabilities. developer inherits a focused operational subset. Direct, narrower roles can also be granted independently.
Room, Agent, and Repository Roles
These roles apply to resource policies for rooms and repositories. They also describe the effective role set used for room and agent access decisions.
For rooms,
viewer, operator, developer, and admin map to room API scopes:
Group Roles
Feed Roles
Secret Roles
Service Account Roles
Effective Permissions
Effective permissions are the checks MeshAgent evaluates after combining direct resource roles with inherited project roles. You do not assign these directly; you grant the roles that satisfy them.Room API Scope Permissions
Room API scopes are embedded in participant tokens. They are not project roles. They control what a connected participant can call inside a room. If a grant object is absent, that API surface is denied. When a grant object exists,None in an allowlist generally means unrestricted access within that grant, and a boolean set to false disables that operation.
livekit
queues
messaging
dataset
If
dataset.tables is None, the participant may read, write, and alter every dataset table allowed by the grant.
sqlite
If
sqlite.databases is None, the participant may use all SQLite databases allowed by the grant. If a matching database grant has tables: None, table read, write, and alter access applies to all tables in that database.
memory
If
memory.memories is None, the participant may use all memories allowed by the grant.
sync
If
sync.paths is None, the participant may read and write all sync paths allowed by the grant.
storage
If
storage.paths is None, the participant may read and write all storage paths allowed by the grant.
containers
If
containers.registry is absent, registry list, pull, run, and write checks allow any repository covered by the container grant.