Building software through agents isn't a future promise — it's how I ship code today. This post walks through the architecture behind my 3-agent autonomous system: how the agents are structured, what tools they use, and how they coordinate to ship production code around the clock.
The Architecture
The system runs three specialized agents, each with distinct responsibilities:
- Router Agent — Receives tasks, breaks them into subtasks, and dispatches work to the appropriate agent
- Coding Agent — Writes code, runs tests, creates PRs, and handles deployments
- Research Agent — Investigates documentation, explores APIs, and gathers context for coding tasks
Each agent runs as an independent process on dedicated hardware, communicating through structured task queues.
Why Three Agents?
A single agent trying to do everything hits context limits fast. By splitting responsibilities, each agent stays focused and effective within its context window. The router acts as an orchestration layer — it doesn't write code, it just decides who should.
The Tools Layer
Every agent connects to the world through MCP (Model Context Protocol) servers. These provide:
- GitHub MCP — Create branches, open PRs, read code
- Vercel MCP — Deploy and check deployment status
- File system MCP — Read and write local files
- Custom skills — Reusable capabilities defined via the SKILL.md standard
What I Learned
The biggest insight: agents are only as good as their tools. A perfectly prompted agent with bad tools will produce bad results. I spent more time building and refining MCP servers than I did on the agents themselves.
The second insight: let agents fail fast. Rather than complex error handling, I let agents attempt tasks and report failures quickly. The router can then reassign or adjust.
Results
- Code ships 24/7 without manual intervention
- Average PR turnaround: under 10 minutes from task to merged code
- Zero manual deploys — everything goes through the agentic pipeline
The system isn't perfect, but it's genuinely productive. Most mornings I wake up to merged PRs and deployed features that were written while I slept.