Baudbot uses a small multi-agent architecture: one persistent orchestrator and task-scoped workers. This keeps the team-facing interface stable while allowing parallel execution in the background.
| Agent | Lifecycle | Primary responsibility |
|---|---|---|
control-agent |
Persistent | Intake, triage, delegation, user communication, orchestration |
dev-agent |
Ephemeral per task | Code changes, tests, PRs, CI/review iteration |
sentry-agent |
Persistent/on-demand | Sentry alert triage and investigation support |
The control-agent is the team-facing coordinator.
Responsibilities:
- monitor inbound requests (Slack; email only when experimental mode is enabled)
- create and manage todos
- select target repo(s)
- spawn and supervise dev-agent sessions
- relay progress/results to users
- enforce operational guardrails (cleanup, escalation)
It should remain lightweight on coding itself and focus on orchestration quality.
The dev-agent is a coding worker launched in a dedicated git worktree for each task.
Responsibilities:
- read project guidance (
CODEX.md,AGENTS.md,CLAUDE.mdas available) - implement requested changes
- run tests/build checks
- open PR and monitor CI
- fix failures and address review comments
- report completion details back to control-agent
Each dev-agent is task-scoped and should exit when work is done.
The sentry-agent handles incident-oriented analysis.
Responsibilities:
- investigate Sentry issues by issue ID
- summarize likely impact and root cause
- provide actionable recommendations for fixes
- hand off coding tasks to dev-agent through control-agent
Sentry-agent and future role agents (SRE/QA/etc.) are managed as subagent packages
under pi/subagents/<id>/ and deployed to ~/.pi/agent/subagents/.
Use the subagent_manage tool (or baudbot subagents ...) to install/enable/start/stop/reconcile.
- Control and sentry sessions are long-lived.
- Dev sessions are ephemeral and tied to todos.
- Session-control sockets allow inter-agent messaging (
send_to_session). - Naming conventions encode role and task context (for observability and cleanup).
Baudbot limits concurrent dev agents to keep resource usage predictable and avoid context thrash.
Use this model when scaling:
- keep a fixed max active dev-agent count
- queue additional tasks
- prioritize by urgency or user/channel policy
- Users talk to control-agent
- Dev-agent reports to control-agent
- Control-agent reports back to users
This keeps the external interface stable while allowing internal execution strategies to evolve.
For flow details, see team-workflow.md.