Roster named the permissions page, the hive's topology file and the swarm's list of agents without saying which. The page and its links are renamed; the implementation docs and UI text follow separately.
33 lines
1.6 KiB
Markdown
33 lines
1.6 KiB
Markdown
# Agent permissions
|
|
|
|
Agents are a **flat set**: no agent manages another by position. The
|
|
`manage_root_agent` permission is the one grant that reaches another agent.
|
|
|
|
## The hive's list of agents
|
|
|
|
Which agents exist is the swarm's to decide:
|
|
[which agents exist](../swarm/README.md#which-agents-exist). Each hive also
|
|
keeps a small file of its own, `topology.json`, with the agents this hive has
|
|
state or config for. You never edit it: the hive rebuilds it from what it sees
|
|
locally, so a hand edit is overwritten, and one that doesn't parse stops the
|
|
rebuild until you fix it. It matters for one thing, covered next.
|
|
|
|
## Who may reach whose state
|
|
|
|
An agent holding no permission sees its own directories and nothing else. An
|
|
agent holding `manage_root_agent` gets every other agent's `state` directory on
|
|
this hive mounted read-write at `/agents/<name>/state`, never `config` or
|
|
`harness`. It's the only grant that reaches another agent's state. Ruth, the
|
|
root agent, holds it (the swarm creates her from the `ruth` archetype, see
|
|
[which agents exist](../swarm/README.md#which-agents-exist)). The mounts
|
|
follow the hive's list: an empty file means no mounts until the next rebuild.
|
|
|
|
## The manager is a normal agent
|
|
|
|
`ruth` differs from other agents in her name and in that grant. Her
|
|
permissions, prompt and tools work as for every agent, and destroying her is as
|
|
final as for any other.
|
|
|
|
How the hive reads and rebuilds the file, the wire protocol and the prompt blocks:
|
|
[`roster.md`](../../4-implementation/agent-state/roster.md). The operator/agent
|
|
trust boundary is a separate axis: [`boundary.md`](../hives/boundary.md).
|