Skip to content

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.

Semantically related entries from the memory graph.