---
title: Multi-agent collaboration
summary: Spawning child agents, supervision contracts, and workspace modes for parallel work.
order: 35
---
# Multi-Agent Collaboration
Holon supports spawning child agents for parallel work, delegation, and
specialized subtasks. Each child agent runs in its own context with a
well-defined supervision contract.
## Concepts
### Agent Presets
| `private_child` (default) | Parent-supervised | `agent_id` + `task_handle` | Delegated subtasks, parallel work |
| `public_named` | Self-owned | `agent_id` only | Long-lived, addressable agents |
### Workspace Modes
| `inherit` (default) | Child shares the parent's workspace |
| `worktree` | Child gets an isolated worktree for safe experimentation |
### Task Handle Supervision
When spawning a `private_child`, the parent receives a `task_handle` with a
`task_id`. Use this to:
- **TaskStatus** — Inspect lifecycle, waiting state, and metadata
- **TaskOutput** — Read bounded output or wait for completion
- **TaskInput** — Send follow-up input to the child
- **TaskStop** — Stop the child agent explicitly
## Usage Patterns
### Parallel investigation
Spawn multiple children to explore different aspects simultaneously:
```
Parent agent:
SpawnAgent("Review src/runtime/ for performance issues")
SpawnAgent("Review src/runtime/ for error handling gaps")
SpawnAgent("Review src/runtime/ for missing tests")
→ Wait for all task handles to complete
→ Aggregate findings into final report
```
### Specialized delegates
Assign specialized agents for distinct concerns:
```
Parent agent:
SpawnAgent("Code review", template="code-reviewer")
SpawnAgent("Test writing", template="test-writer")
```
### Safe experimentation
Use `worktree` mode to let a child experiment without affecting the main
workspace:
```
Parent agent:
SpawnAgent("Try alternative implementation approach",
workspace_mode=worktree)
→ Child works in isolated worktree
→ Parent reviews child's output
→ Parent applies the best approach to main workspace
```
## Supervision Flow
A typical parent-child interaction:
1. **Spawn** — Parent calls `SpawnAgent` with `initial_message` describing the
task
2. **Monitor** — Parent uses `TaskStatus` to check if the child is still
working, sleeping, or waiting
3. **Review** — Parent reads `TaskOutput` to get bounded previews or wait for
completion
4. **Deliver** — Parent aggregates child results into the final user-facing
answer
The parent remains responsible for:
- **Verification** — Child output is evidence, not authority
- **Aggregation** — Combining results from multiple children
- **Final delivery** — The parent produces the user-facing answer
## Best Practices
- **Keep delegations focused.** Each child should have one clear objective.
- **Supervise explicitly.** Check `TaskStatus` before assuming completion.
- **Treat child output as evidence.** Review and verify before passing to the
user.
- **Limit parallelism.** Spawn only as many children as the task actually
benefits from.
- **Stop idle children.** Use `TaskStop` for children that are no longer
needed.
## See Also
- [Runtime Model](/concepts/runtime-model.md) — Agent lifecycle and task
supervision
- [Trust Boundaries](/concepts/trust-boundaries.md) — Why child output is
evidence, not authority
- [Work Items Guide](/guides/work-items.md) — Tracking objectives across
agents