aivyx-coder · ManualContents ↓
Specialist teams
With a team switched on, the model you talk to becomes a lead that can hand pieces of work to specialists — each with a role, a personality, and a narrower set of tools than the lead. A reviewer that can only read can’t edit; a tester can run commands but not write files.
Teams are off by default:
[team]
enabled = true
The built-in team
| Member | Can use |
|---|---|
| coordinator | the lead’s entry — the agent you talk to, which keeps its own tools |
| implementer | read, write and edit files, search |
| reviewer | read, search, git history |
| tester | read, search, run commands |
How the lead uses it
- One request —
delegate_to_specialistgives a specialist a bounded task; it works in its own conversation and reports back. - A conversation —
spawn_specialistopens a session with one specialist that remembers earlier exchanges;query_specialistsends follow-ups;close_specialistends it. At mostmax_concurrent_specialist_sessions(default 3) are open at once, and a session idle forspecialist_session_idle_timeout_secs(default 600) is dropped. Specialists can consult each other directly, one hop deep. - A mission —
decompose_taskrecords a plan of steps, each assigned to a specialist;verify_outputrecords whether each step’s result passed;synthesize_resultsrecords the final deliverable.
Every specialist action goes through the same approvals as yours: you’ll see prompts for a specialist’s edits and commands just as for the lead’s. Each specialist gets its own private temporary directory, and its steps show in the transcript.
Your own roster
Point roster_path at a TOML file describing your team:
lead = "lead"
[[members]]
name = "lead"
role = "Plans the work and delegates"
persona = "Calm and methodical"
tool_allowlist = ["set_tasks"]
[[members]]
name = "docs-writer"
role = "Writes and updates documentation"
persona = "Clear and concise"
tool_allowlist = ["read_file", "write_file", "edit_file", "grep", "glob"]
extra_deny_paths = ["src/"] # this member may not touch src/
task = "summarize" # optional: routing task for this member
[team]
enabled = true
roster_path = "~/my-team.toml"
It’s checked at start-up: an unknown lead, a duplicate member, or a tool
the lead itself doesn’t have stops aivyx-coder with an error rather than
running with a broken team. extra_deny_paths adds to the global deny
list for that member only. With model routing
on, task lets a member use a different model from the lead.