Agent Coordination Map
Every agent in Mark's stack — what it can do, where it runs, how it talks to the others, and what every agent should do in the first 30 seconds of a session.
Why this map exists. Prime Directive #1 is integration + communication. Five agents all touching the same codebase, memory, and stack will step on each other unless each one knows (a) what the others are for, (b) which channel to use, and (c) what state to check at session start. This is that one-pager.
Read this at session start. Before anything else.
Refresh: hand-curated. Update when an agent is added, a channel changes, or the session-start routine changes.
1. Agent capability matrix
| Agent | Runs on | Primary role | Has memory MCP? | Can execute code on Apex? | Can execute code on G16? | Best for |
|---|---|---|---|---|---|---|
| G16 Claude Code (that's usually me) | G16 (Windows/WSL2) | Primary operator / architect / orchestrator | ✅ HTTPS | via SSH | ✅ direct | Planning, cross-cutting changes, PR creation, git ops, MCP registry work |
| Apex Claude Code | Apex (Windows, persistent session) | On-box implementer where TP3 actually runs | ✅ | ✅ direct | via scp/ssh | Postgres queries, MinIO ops, scheduled-task installs, anything touching the live stack |
| Cursor | G16 (Remote-SSH to Apex available) | IDE-based coder for iterative / multi-file work | ❓ (audit pending) | via Remote-SSH | ✅ | New features, refactors, multi-file edits, anything that benefits from an IDE |
| Jules (Google) | Cloud, watches GitHub | PR reviewer + test suggester | ❌ (no MCP, sees PRs only) | ❌ | ❌ | Reviewing PRs, security audits, code-health passes, test coverage suggestions |
| Antigravity | G16 (Windows desktop app) | Research agent + Google ecosystem | ✅ (registered, UI broken for HTTP MCP) | ❌ | ❌ (file-based bridge only) | Gemini-heavy research, Google Drive / Workspace automation, business-plan content |
| Gemini CLI | Apex | Sidecar for headless Gemini calls | ✅ (~/.gemini/settings.json) | ✅ via --approval-mode yolo | ❌ | One-shot Gemini prompts inside scripts, embedding calls, YAML/JSON generation |
| Claude Desktop | G16 | Interactive chat + writing assistant | via omi-mcp-public OAuth | ❌ | ❌ | Customer-facing prose, proposal editing, final-pass polish |
| claude.ai web / mobile | cloud / phone | Ambient Claude for Mark on the go | ✅ via OAuth gateway | ❌ | ❌ | Asking TP3 questions from phone, reading digests, brain-dump capture |
Hardware context: Apex = always-on Windows 11 server. G16 = primary dev laptop. Samsung Chromebook + Pixel 8 Pro = mobile. Tailscale mesh connects everything.
2. Channel matrix — "when I need to talk to X, I use Y"
| I am | I need to… | Channel | Latency | Notes |
|---|---|---|---|---|
| Any agent | Read / write shared memory | tp3-omi MCP (twin_memory_* tools) | <1 s | Canonical. Everyone has this. |
| Any agent | Drop work for another machine to execute | BRIEFS/pending/<slug>.md | ≤5 min (runner polls) | G16 runner exists; Apex runner pending. Use target: any for doc-only briefs. |
| G16 Claude | Tell Apex Claude something non-urgent | Git commit to main + a line in MEMORY.md | next git pull | Passive — Apex picks up on next pull. |
| G16 Claude | Tell Apex Claude something urgent | Drop a BRIEF OR write via twin_memory_broadcast | minutes | Broadcast memories are visible to all agents' next query. |
| Any agent | Ship code for review | Open a PR against main | minutes | Jules auto-reviews. Tag @MrB-Ed + any agent you want to pull in. |
| Any agent | Notify Mark | Slack DM to U0AK03UP9SQ via slack_post_message | seconds | Keep to ≤10 bullets, no prose paragraphs. |
| Any scheduled job | Emit a status / heartbeat | ntfy via tp3_ntfy_notify.py | seconds | Push to Mark's phone. Use for automated pings, not for inter-agent. |
| Antigravity | Tell other agents something | Append to _AGENT_COMMS_LOG.md in the shared Drive folder | next sync | File-based bridge (Antigravity's MCP UI is broken for HTTP). Newest entry at top, signed. |
| Any agent | Propose a cross-agent change | Open a GitHub issue → @Jules for review | async | Issues are the durable record; chat isn't. |
Channel anti-patterns (do not do)
- Do not use Slack to coordinate between agents. Slack is for Mark. Inter-agent = memory MCP + BRIEFS + GitHub.
- Do not SSH into Apex to restart TP3 services — SSH-launched wrappers die on disconnect. Use the scheduled task (
Start-ScheduledTask -TaskName "TP3 Launch At Logon"). Seefeedback_apex_restart_via_scheduled_task.md. - Do not paste commands into Mark's terminal. Ever. Write a one-click PowerShell script in
tp3_scripts/and tell himBOSS, run <script>.ps1.
3. Session-start bootstrap (every agent does this first)
When a new session starts, before doing anything else, run the following:
Fast path (when status.thebarnetts.info/tp3.json lands — PR pending)
curl -s https://status.thebarnetts.info/tp3.json
One call → row counts, ingest worker health, queue depth, pending BRIEFS, git HEAD. Proceed.
Slow path (today, until status JSON ships)
Run these in parallel if you can:
1. git fetch origin main && git log origin/main..HEAD --oneline — am I behind?
2. Read MEMORY.md (should be in your context automatically if you're Claude).
3. ls BRIEFS/pending/ — is there work for me?
4. curl http://127.0.0.1:8944/health (if you're on Apex) or note: "ingest worker health unverified from this agent."
5. Announce yourself: twin_memory_write with tag session_start, body <agent_name> online at <timestamp>.
When the status JSON ships
Update step 1 of the fast path here to also show "generated_at" so agents can detect stale status.
4. Who does what — decision tree
"I have a task to hand off. Which agent?"
Does it need to run code on Apex (Postgres, MinIO, ingest worker)?
├── YES → Apex Claude (BRIEF) or Gemini CLI (for one-shot Gemini calls)
└── NO
Does it need an IDE / multi-file refactor / iteration?
├── YES → Cursor (mission brief in repo root)
└── NO
Is it code review / security audit / test coverage?
├── YES → Jules (GitHub issue)
└── NO
Is it research / Gemini deep-dive / Google ecosystem?
├── YES → Antigravity (via _AGENT_COMMS_LOG.md or a Google Docs outline)
└── NO
Is it customer-facing prose?
├── YES → Claude Desktop (Mark pastes the draft in)
└── NO → I (G16 Claude) probably just do it directly
5. Known coordination debt
- Apex BRIEFS runner not installed — currently only G16 runs the BRIEFS scheduled task. Briefs with
target: apexneed manual trigger by Apex Claude. Fix planned: port_install_g16.ps1to_install_apex.ps1. - Cursor MCP config unaudited — we don't know which MCP servers Cursor sees. Tracked via a separate Cursor mission brief.
- Antigravity HTTP MCP UI broken — Antigravity can only reach the memory MCP via stdio proxy, which isn't wired yet. Until fixed, Antigravity uses
_AGENT_COMMS_LOG.mdonly. - No auth rotation calendar —
X-TP3-MCP-TOKEN,TP3_OMI_API_KEY, Cloudflare API token all have no scheduled rotation. Tracked incredential_map.md. - No dead-man's switch — if every agent silently stops updating their session_start memory, nobody notices until Mark asks. Needs a daily heartbeat check (candidate for the status JSON).
6. Related maps
mcp_server_map.md— which MCP tools live wheredata_flow_map.md— how data moves through the stackscheduled_task_map.md— every scheduled task + healthprocess_map.md— live process inventory on Apexcredential_map.md— every credential + rotation stateknown_deferred_map.md— intentionally half-done things (read before "fixing" anything weird)