The fleet
Four core agents everywhere, a type's own on top, and why each returns a pointer.
Four standing roles come with the harness. They are the same file in every home and every repo.
| Agent | Model | Effort | Hands back |
|---|---|---|---|
| Researcher | Opus | xhigh | findings + reasoning, as a file path |
| Historian | Haiku | low | URLs only — commits, PRs, be-internal pages |
| Librarian | Sonnet | high | a local .md path, pulled via context7 |
| Designer | Opus | medium | an .md of ASCII diagrams + captions |
A type adds its own. The wiki type adds two:
| Agent | Model | Hands back |
|---|---|---|
| Writer | Opus | a finished page under docs/, one of five kinds |
| Reader | Opus | a brief of the idea as a stranger read it, plus question-* pages |
The rule that makes it work
Researcher ─┐
Historian ─┤
Librarian ─┼──▶ a POINTER ──▶ lead agent
Designer ─┤ not prose context stays clean
+ type's ─┘
A subagent that returns three paragraphs has spent your lead’s context. One that returns a URL or a file path costs almost nothing, and the lead opens it only if it needs to. Cheap models can hold the expensive roles because fetching is not thinking.
Where they live
be-harness/repo/.claude/agents/ researcher historian librarian designer
│
├──▶ ~/.claude/agents/ user level — everywhere
└──▶ be-wiki-x/.claude/agents/ project level — plus writer, reader
Hashed in the repo copy: edit one and validate fails. To change a core
agent, change be-harness. To change the writer, change
be-wiki-template.
A real definition
---
name: historian
description: Returns URLs to relevant git and web history. Never summarizes.
model: haiku
effort: low
tools: [Bash, Read, Grep, WebFetch, SendMessage, mcp__github__*]
---
.mcp.json in every repo gives the historian the GitHub MCP and the
librarian context7. /mcp signs in once per machine.
Spawned on demand, never at startup
/gm does not bring a team up. The lead dispatches with the Agent tool
at the moment work exists, several in one message when they are
independent, and names the artifact it expects back. SendMessage to an
agent’s name resumes the same agent with its history intact — resume the
Historian rather than spawning a second one.
The advisor is not one of these
It is a server-side tool the lead calls at decision points, attached by
advisorModel in every settings.json. See
The advisor.