Subagents
A subagent is an agent exposed as a tool to another agent. The caller — the coordinator — decides when to hand off a question to the subagent, receives the subagent’s answer as a tool result, and uses it in its own response.
This lets you build specialized agents (one great at SQL, one great at Slack-drafting, one great at investigation) and have a single entry-point agent dispatch work across them without the user having to pick the right tool.
How it works
When a coordinator has subagents attached, auxilia builds it as a deep agent and wraps each subagent as a tool:
┌──────────────────┐
│ Coordinator │ ask_sql("top 10 customers by MRR")
│ (LLM + tools) │ ─────────────────────────────────────┐
└──────────────────┘ │
│ ▼
│ ┌──────────────────┐
│ │ SQL subagent │
│ │ (LLM + tools) │
│ └──────────────────┘
│ │
│ result │
│◀────────────────────────────────────────────────┘
▼
final messageSubagents run in their own LangGraph invocation; their tool calls, approvals, and messages are rolled up into the coordinator’s stream.
Constraints
auxilia enforces two structural rules at bind time:
- An agent that has subagents cannot itself be used as a subagent
- An agent that is already a subagent cannot have subagents
In other words, the subagent graph is one level deep — no nested coordinators. This keeps reasoning and HITL flows predictable.
Managing subagents
Only workspace admins can add or remove subagent links. From an agent’s configuration page:
- Open the Subagents section
- Click Add subagent and pick an agent from the workspace
- auxilia creates the coordinator → subagent binding
Removing a subagent unlinks it; both agents continue to exist.
Picking good subagents
Subagents shine when each one has a narrow, well-described purpose. The coordinator picks between subagents the same way an LLM picks between tools — based on names and descriptions — so:
- Give each subagent a clear description (it becomes the tool description)
- Make their instructions specific so they stay on task
- Bind each subagent to the minimum set of MCP servers it needs