Multi-Agent Engineering Protocol: How I Build Reliable Production Software with AI Agents
The hardest part of building production software with AI agents isn’t getting them to write code — it’s making the process reliable, auditable, and scalable. How I run a Strategist + Coordinator + Worker protocol (v3.8), the guardrails that catch mistakes early, and what it took to ship end-to-end voice booking in SlotSense.
At Chandra AI Labs, I build real production systems — not demos — using AI agents as core collaborators. The biggest challenge isn’t making an AI write code. It’s making the entire process reliable, auditable, and scalable across projects while avoiding the usual traps: context bloat, late discoveries, role confusion, and expensive mistakes that only surface after deployment.
That’s why I developed the Multi-Agent Engineering Protocol (currently at v3.8). It’s a practical framework that turns powerful AI models into structured, guardrailed team members. I’ve used it to ship complex features like full end-to-end voice booking in SlotSense, and the protocol itself keeps improving from every real project.
Two Specialized AI Agents + Human Coordinator (Designed to Scale)
Today the protocol runs with two AI agents + one human, but it is built as a true multi-agent, multi-human system. People can easily extend it with more specialized agents and additional humans in coordinator or reviewer roles.
Here’s how the roles work in practice:
-
Strategist (Claude in the main chat): The architect and prompt engineer. It designs phases, writes precise execution prompts, explains trade-offs, maintains architecture decisions, and owns the living backlog and retrospectives.
-
Coordinator (Human — me): The control point. I review designs, approve prompts, run sensitive operations (credentials, deploys, billing), validate results in fresh environments, and have final sign-off authority.
I’m also planning to integrate MCP (a context/handoff protocol) to offload routine data handoff and context management work from the Coordinator. This will reduce manual effort while I retain full authority to review, validate, and sign off on everything important.
-
Worker (Claude Code Terminal): The execution specialist. It writes code, runs tests and linters, updates documentation and the backlog, commits on a feature branch, opens a PR, and then stops. It never makes architectural decisions on its own.
Information flows in a strict, serial pipeline with clear gates. No parallel chaos. Nothing lands directly on main. This role separation is the foundation of the guardrails.
Built-in Guardrails That Catch Mistakes Early
The protocol contains deliberate structure that minimizes errors and surfaces them fast:
- Mandatory opening checklist (Section 0) — Every conversation starts with explicit self-certification against 12 rules (read requirements, verify state, design before code, maintain backlog, prefer root-cause fixes, etc.).
- One focused prompt per sub-phase — Work is broken into right-sized steps. I never batch uncertain work, but I also don’t create unnecessary round-trips.
- Diagnose before fixing — Especially on the second attempt. The next prompt after a failed fix is read-only diagnostics.
- Root-cause over workaround — Temporary patches are only allowed when they explicitly name the real problem, are labeled as interim, and are logged to the backlog.
- Fresh sessions + handoff documents — After every phase I create a clean handoff document and start a new chat. This prevents bloated context, keeps token usage efficient, and forces explicit capture of decisions and open items.
- Living backlog as first-class artifact — Every deferral is logged the moment it’s decided. The Worker updates the backlog per PR (just like CHANGELOG.md). This turns “we’ll do it later” into traceable reality.
These rules turned six stacked invisible failures during the SlotSense voice phase into codified improvements in v3.8 (mocked integrations hiding real problems, config and permissions not traveling with code, observability must come first, regional endpoints need explicit configuration, etc.).
Real-World Results: SlotSense Voice Booking
Using this protocol I delivered a complete resident voice experience: tap the mic, speak a booking in English, hear the reply, say “confirm,” and the booking is created. It works end-to-end in our dev environment today.
The protocol made it possible without the usual mess:
- Clear ADRs captured the voice architecture.
- Precise prompts handled STT, TTS, barge-in, logging fixes, and IAM codification.
- Early diagnosis of config, permission, and observability issues.
- All lessons immediately fed back into the protocol itself.
You can explore the full SlotSense project here: https://github.com/chandranakkalakunta/slot-sense
Why This Approach Stands Out
Most AI-assisted development still runs in loose “chat and hope” mode. That’s fine for experiments. It fails for production systems.
My Multi-Agent Engineering Protocol delivers:
- Clear roles and responsibilities (human stays in control)
- Optimized, gated flow that catches mistakes early
- Dramatically better token efficiency through phase-based handoffs and fresh sessions
- Institutional memory via ADRs, backlog, CHANGELOGs, and retrospectives
- A design that naturally scales to more agents and multiple humans
I’m already applying it across multiple projects at Chandra AI Labs. Every phase makes the protocol stronger.
The Bigger Opportunity
As AI agents become more capable, the real bottleneck won’t be raw coding ability — it will be coordination, verification, and long-term maintainability. The Multi-Agent Engineering Protocol is my practical answer to that challenge.
It treats AI as a powerful but fallible collaborator that needs clear interfaces, strong process, and human authority at the right points.
I’m happy to share the full protocol document, example handoffs, or walk through how it worked on specific features.
This article reflects work done at Chandra AI Labs. The Multi-Agent Engineering Protocol continues to evolve with every project I ship.