Agent roster¶
The coordinator builds every task graph from a roster of agents. Each agent has a role that determines where it can sit in the graph (see How the coordinator works). Agents come from a few places.
Coordinator-native agents are defined by angelo and spawned from a persona prompt, so they run identically on any host:
| Agent | Role | What it does |
|---|---|---|
| engineer | implementer | Edits files to implement the change. |
| reviewer | checker | Traces code paths, checks completeness, finds bugs. |
| critic | checker | Adversarial red team; must produce ≥1 finding. |
| tester | checker | Writes and runs tests. |
| memory | meta | Records session outcomes to the memory tree. |
Cursor built-ins map to the editor's own review/exploration subagents via a
native_subagent field; in Cursor the coordinator spawns the native tool, and
elsewhere it falls back to an equivalent persona (see Host-native
subagents below):
| Agent | Role | What it does |
|---|---|---|
| explore | planner | Read-only codebase research; scopes context before engineers run. |
| bugbot | checker | Sweeps the diff for bugs (breadth). |
| security-review | checker | Reviews the diff for vulnerabilities. |
Capability-contributed agents are supplied by an optional bundle rather than
the coordinator core, so they appear in the roster only when that capability is
enabled for the project. The zettelkasten grounded-extraction bundle (enabled by
angelo init --with-zettelkasten) contributes four:
| Agent | Role | What it does |
|---|---|---|
| extractor | planner | Reads one source against a schema; emits grounded claim+quote candidates. |
| scribe | implementer | Commits the candidates as claim+quote note pairs, tagged and linked to the hub. |
| auditor | checker | Verifies grounding integrity and schema-dimension coverage (a deliberately different model family). |
| synthesizer | implementer | Runs last; places the run's claims onto every spine they fit and wires cross-source themes. |
When the bundle is absent these agents are not surfaced by agents(action="list") /
agents(action="get") and the extraction graph is not registered. See Grounded
extraction for how the pipeline wires them together.
Custom and project-local agents live in .cursor/agents.yaml — see
Create a custom agent. A custom agent can
extends: a built-in to inherit its persona and only override a model or pass
count.
Roles¶
A role determines where an agent may sit in the graph, and the validator enforces it:
- implementer — writes code. Checkers must run downstream of one.
- planner — read-only design/analysis; runs before implementers and must not depend on one. A planner-only graph (pure analysis, no implementer) is valid.
- checker — read-only verifier; must have an implementer in its dependency ancestry.
- meta — exempt from ancestry rules; can run anywhere, including standalone.
Every graph must contain at least one implementer or planner; a graph of only checkers and meta agents is rejected.
Host-native subagents¶
explore, bugbot, and security-review map to Cursor's built-in
review/exploration subagents via a native_subagent field: in Cursor the
coordinator spawns the native tool (which computes its own diff); elsewhere
(Claude Code, headless runs) it falls back to an equivalent persona. The graph,
roles, and failure handling are identical either way — the field only changes
how the subagent is spawned. There is no reader agent: the read-only
research agent is explore, and correctness verification is reviewer.
Related¶
Semantically related entries from the memory graph.