The CEO agent does not talk to fifty workers
Graph Engineering pattern 10 of 15: the Hierarchical Fleet Graph. Hierarchy as coordination-cost compression, context locality — and a measured 22-fleet run against rysh's own roadmap.
The CEO agent does not talk to fifty workers. Somewhere between five agents and fifty, every flat topology drowns: the manager's context fills with status instead of decisions, and the star (pattern 1) collapses under its own fan-out. The fix is the one human organizations found centuries ago — hierarchy. Not as bureaucracy: as coordination-cost compression.
Context for new readers: pattern 10 of 15 in the Graph Engineering series. rysh is an agentic terminal multiplexer; this is the pattern we run on rysh itself, so this article carries measured numbers rather than projections.
The topology
CEO
|
Fleet Coordinator
/ | \
FM1 FM2 FMn
| | |
Fleet1 Fleet2 Fleetn
/|..\ /|..\ /|..\
W W W W W W W W W
A CEO agent owns the goal and its top-level decomposition. A fleet coordinator allocates workstreams to fleet managers and handles cross-fleet dependencies. Each fleet manager runs its own bounded fleet — internally just a star or a fan-out/fan-in — and reports upward in compressed form: decisions needed, blockers, deltas against plan. Never raw activity.
Two properties, one shape
Compression. Information is summarized on the way up and refined into instructions on the way down, exactly as in a human organization and for exactly the same reason: coordination cost grows super-linearly with direct relationships. A manager that forwards raw worker output upward is overhead without function.
Context locality. Each fleet's workers share deep context about their workstream; the fleet manager owns the boundary; the layers above deal only in interfaces between workstreams. This mirrors the codebase structure the fleets are usually building — and it bounds the blast radius of any single agent's confusion to its own fleet.
The measured run
On 2026-08-11, one command registered 22 fleets against rysh's own roadmap and brought three up — four agents each, twelve live Claude sessions, twelve worktrees, a tab and a board per fleet, zero failures. The other nineteen were refused by a concurrency cap the registry itself enforces. Two details make that a claim rather than a boast: registered is free — the cap counts only running fleets, so a driver may register everything it discovers and promote a bounded few; and over-cap is refused, not queued, with the refusal naming the fleets already up — so a typo and a full cap do not read alike.
Whose chart it is — honestly
The panes, the given-names, the persistent pane metadata, the worktree isolation and the pane-to-pane addressing all ship in the rysh binary. The ceo→manager→worker chart built on top of them is our in-house driver tooling, and we name it as such: the binary's fleet registry knows a fleet's name, state, board and members — it does not know that one member manages another. The topology is engineered by the organization on primitives the platform guarantees. That is Graph Engineering practiced on ourselves.
Where it breaks
- Hierarchy without compression — raw output forwarded upward drowns the top anyway, with extra latency.
- Cross-fleet dependencies routed through the top — two fleets sharing an interface meet at the coordinator, not via CEO round-trips.
- Depth for its own sake — every layer adds latency and telephone-game distortion. Two management layers cover most real epics.
The dimension answers
| Dimension | Answer |
|---|---|
| Nodes | CEO, coordinator, fleet managers, worker fleets |
| Edges | Vertical delegation/reporting; cross-fleet edges at the coordinator |
| Cycles | Plan-revision loops between adjacent layers |
| Humans | Goal-setting above the CEO agent; approval on external effects |
| Exit rule | Per-fleet exit rules roll up; CEO closes the epic against its goal |
Honest scope
- 22 registered / 3 up / 12 live sessions is one measured run with its date — not a capability ceiling, and not a claim about larger counts.
- The fleet registry and
##fleetverbs ship in the released CLI — contained in every release since v0.2.6. - The hierarchy itself is in-house script tooling on shipped primitives; there is no org-chart data model or shipped orchestrator in the binary.
- rysh is open-core: the CLI is Apache-2.0, the server is proprietary. It runs on Claude, with your own key.
Next: pattern 11, the Research–Synthesis Graph — broad exploration, central synthesis, and an experimenter that keeps conclusions honest.
Building this with design partners → rysh.ai/design-partner