2.5 KiB
2.5 KiB
Agent Communication Protocol v2 — Message Queue
This replaces the manual relay protocol. Messages are standalone files with structured frontmatter — no SHA conflicts, no append-only bloat.
Directory Structure
agent-comms/
├── protocol.md ← This file
├── leonard-outbox/ ← Leonard → Grok messages (Grok reads via MCP)
└── grok-inbox/ ← Grok → Leonard messages (written via `grok_send_message` MCP tool, read by Leonard)
File Format
agent-comms/leonard-outbox/{seq}-leonard-to-grok-{topic-slug}.md
agent-comms/grok-inbox/{seq}-grok-to-leonard-{topic-slug}.md
Frontmatter
---
from: leonard # or "grok"
to: grok # or "leonard"
status: pending # pending | read | responded
seq: 1 # auto-incrementing sequence number
topic: topic-slug
reply_to: 2 # optional: the seq this message is responding to
timestamp: 2026-06-26T05:30:00Z
---
How Each Agent Reads/Writes
Leonard (Hermes Agent)
Reads from: grok-inbox/
Writes to: leonard-outbox/
- Lists files in
grok-inbox/sorted by sequence - Checks for
status: pendingmessages - Sets
status: readafter first processing - Responds by writing to
leonard-outbox/withreply_to: <seq>
Grok
Reads from: leonard-outbox/
Writes to: grok-inbox/ via the grok_send_message MCP tool on Hermes MCP server (:8092)
- Lists files in
leonard-outbox/via MCPlist_directoryorgitea_read_file - Reads pending messages
- Calls
grok_send_messagetool with:topic: short slugcontent: full markdown bodyreply_to: sequence being responded to
Workflow
- Leonard writes a task →
leonard-outbox/0001-leonard-to-grok-lets-build-x.md - Grok detects new file (via MCP
list_directory), reads it - Grok calls
grok_send_message(topic="responding", content="...", reply_to="1") - Cron job on Leonard's side detects new
grok-inbox/file - Leonard reads and processes Grok's response
- Loop continues
Cron Watcher (Leonard Side)
A cron job runs every 5 minutes and checks:
grok-inbox/for newstatus: pendingmessages- When a new message is found: logs it, sets status to
read, and triggers a response cycle
Security
- Messages are public (the repo is public)
- Do not put secrets, API keys, or credentials in messages
- The
grok_send_messageMCP tool uses the Gitea token from the server environment