# ADR 002: MCP Agent Mail Integration for Multi-Agent Coordination **Status:** Proposed **Date:** 2025-11-08 **Epic:** [bd-spmx](../../.beads/beads.db) (Investigation & Proof of Concept) **Related Issues:** bd-6hji, bd-htfk, bd-muls ## Context Beads is designed for AI-supervised coding workflows where multiple AI agents coordinate work on shared codebases. As multi-agent systems become more common, we face challenges: ### Problem Statement 1. **Git Sync Latency**: Current git-based synchronization has 2-5 second round-trip latency for status updates 2. **No Collision Prevention**: Two agents can claim the same issue simultaneously, causing wasted work and merge conflicts 3. **Git Repository Pollution**: Frequent agent status updates create noisy git history with dozens of micro-commits 4. **Lack of Real-Time Awareness**: Agents don't know what other agents are working on until after git sync completes ### Current Workflow ``` Agent A: bd update bd-123 --status in_progress ↓ (30s debounce) ↓ export to JSONL ↓ git commit + push (1-2s) ↓ Agent B: git pull (1-2s) ↓ import from JSONL ↓ sees bd-123 is taken (too late!) ``` Total latency: **2000-5000ms** ## Decision **Adopt MCP Agent Mail as an *optional* coordination layer** for real-time multi-agent communication, while maintaining full backward compatibility with git-only workflows. ## Alternatives Considered ### 1. Custom RPC Server **Pros:** - Full control over implementation - Optimized for beads-specific needs **Cons:** - High development cost (3-4 weeks) - Maintenance burden - Reinventing the wheel **Verdict:** ❌ Too much effort for marginal benefit ### 2. Redis/Memcached **Pros:** - Battle-tested infrastructure - Low latency **Cons:** - Heavy dependency (requires separate service) - Overkill for lightweight coordination - No built-in authentication/multi-tenancy **Verdict:** ❌ Too heavy for beads' lightweight ethos ### 3. Git-Only (Status Quo) **Pros:** - Zero dependencies - Works everywhere git works **Cons:** - 2-5s latency for status updates - No collision prevention - Noisy git history **Verdict:** ✅ Remains the default, Agent Mail is optional enhancement ### 4. MCP Agent Mail (Chosen) **Pros:** - Lightweight HTTP server (<50MB memory) - <100ms latency for status updates (20-50x faster than git) - Built-in file reservation system (prevents collisions) - Project/agent isolation (multi-tenancy support) - Optional: graceful degradation to git-only mode - Active maintenance by @Dicklesworthstone **Cons:** - External dependency (requires running server) - Adds complexity for single-agent workflows (mitigated by optional nature) **Verdict:** ✅ Best balance of benefits vs. cost ## Integration Principles ### 1. **Optional & Non-Intrusive** - Agent Mail is 100% optional - Beads works identically without it (git-only mode) - No breaking changes to existing workflows ### 2. **Graceful Degradation** - If server unavailable, fall back to git-only sync - No errors, no crashes, just log a warning ### 3. **Lightweight HTTP Client** - Use standard library HTTP client (no SDK bloat) - Minimal code footprint in beads (<500 LOC) ### 4. **Configuration via Environment** ```bash # Enable Agent Mail (optional) export BEADS_AGENT_MAIL_URL=http://127.0.0.1:8765 export BEADS_AGENT_MAIL_TOKEN= export BEADS_AGENT_NAME=assistant-alpha # Disabled by default (git-only mode) bd ready # Works without Agent Mail ``` ## Proof of Concept Results ### File Reservation Testing (bd-6hji) ✅ - **Test:** Two agents (BrownBear, ChartreuseHill) race to claim bd-123 - **Result:** First agent gets reservation, second gets clear conflict error - **Verdict:** Collision prevention works as expected ### Latency Benchmarking (bd-htfk) ✅ - **Git Sync:** 2000-5000ms (commit + push + pull + import) - **Agent Mail:** <100ms (HTTP send + fetch round-trip) - **Improvement:** 20-50x latency reduction - **Verdict:** Real-time coordination achievable ### Installation (bd-muls) ✅ - **Server:** Runs on port 8765, <50MB memory - **Web UI:** Accessible for human supervision - **Verdict:** Easy to deploy and monitor ## Architecture ``` ┌─────────────────────────────────────────────┐ │ bd (Beads CLI) │ │ │ │ ┌─────────────┐ ┌─────────────────┐ │ │ │ Git Sync │ │ Agent Mail │ │ │ │ (required) │ │ (optional) │ │ │ │ │ │ │ │ │ │ - Export │ │ - Reservations │ │ │ │ - Import │ │ - Notifications │ │ │ │ - Commit │ │ - Status updates│ │ │ │ - Push/Pull │ │ │ │ │ └─────────────┘ └─────────────────┘ │ │ │ │ │ └─────────┼──────────────────────┼────────────┘ │ │ ▼ ▼ ┌──────────────┐ ┌──────────────┐ │ .beads/ │ │ Agent Mail │ │ issues.jsonl │ │ Server │ │ (git) │ │ (HTTP) │ └──────────────┘ └──────────────┘ ``` ### Coordination Flow (with Agent Mail) ``` Agent A: bd update bd-123 --status in_progress ↓ ├─ Agent Mail: POST /api/reservations (5ms) │ └─ Reserve bd-123 for Agent A ├─ Local: Update .beads/beads.db └─ Background: Export to JSONL (30s debounce) Agent B: bd update bd-123 --status in_progress ↓ └─ Agent Mail: POST /api/reservations (5ms) └─ HTTP 409 Conflict: "bd-123 reserved by Agent A" └─ bd exits with clear error Total latency: <100ms (vs 2000-5000ms with git-only) ``` ## Implementation Plan ### Phase 1: Core Integration (bd-wfmw) - [ ] HTTP client wrapper for Agent Mail API - [ ] Reservation check before status updates - [ ] Graceful fallback when server unavailable - [ ] Environment-based configuration ### Phase 2: Enhanced Features - [ ] Notification system (agent X finished bd-Y) - [ ] Automatic reservation expiry (TTL) - [ ] Multi-project support - [ ] Web dashboard for human supervision ### Phase 3: Documentation - [ ] Quick start guide - [ ] Multi-agent workflow examples - [ ] Troubleshooting guide ## Risks & Mitigations ### Risk 1: Server Dependency **Mitigation:** Graceful degradation to git-only mode. Beads never *requires* Agent Mail. ### Risk 2: Configuration Complexity **Mitigation:** Zero config required for single-agent workflows. Environment variables for multi-agent setups. ### Risk 3: Upstream Changes **Mitigation:** Use HTTP API directly (not SDK). Minimal surface area for breaking changes. ### Risk 4: Data Durability **Mitigation:** Git remains the source of truth. Agent Mail is ephemeral coordination state only. ## Success Metrics - ✅ Latency reduction: 20-50x (verified) - ✅ Collision prevention: 100% effective (verified) - 🔲 Git operation reduction: ≥70% (pending bd-nemp) - 🔲 Zero functional regression in git-only mode ## References - [MCP Agent Mail Repository](https://github.com/Dicklesworthstone/mcp_agent_mail) - [bd-spmx Epic](../../.beads/beads.db) - Investigation & Proof of Concept - [bd-6hji](../../.beads/beads.db) - File Reservation Testing - [bd-htfk](../../.beads/beads.db) - Latency Benchmarking - [Latency Results](../../latency_results.md) ## Decision Outcome **Proceed with Agent Mail integration** using the optional, non-intrusive approach outlined above. The proof of concept validated the core benefits (latency, collision prevention) while the lightweight HTTP integration minimizes risk and complexity. Git-only mode remains the default and fully supported workflow for single-agent scenarios.