✨ Feature Request: Multi-Agent Communication Channel (Agent-to-Agent Messaging)
Problem or Use Case
I'm using Hermes Agent as the orchestrator of a multi-agent creative production team (AI Anime Production Studio). The team includes specialized roles: Writer, Character Designer, Storyboard Artist, Sound Designer, Editor, Director, etc.
Currently, delegate_task spawns isolated subagents that work independently and report only to the parent. This works for parallel independent work, but many real-world workflows require agents to discuss, critique, iterate, and build on each other's work — just like a real creative team:
- The Storyboard Artist needs to see the Writer's script and ask questions
- The Director needs to give feedback to the Character Designer
- The Sound Designer needs to coordinate timing with the Editor
- Multiple agents need to debate creative decisions in a "round table"
The current architecture forces the parent agent (me) to act as a manual message bus — I have to:
- Collect Agent A's output
- Pass it to Agent B
- Collect Agent B's feedback
- Relay back to Agent A
- Repeat...
This creates massive context bloat in the parent, slows down iteration cycles, and loses the natural "discussion" dynamic that makes multi-agent teams powerful.
Proposed Solution
I propose adding a lightweight message-passing layer to the delegation system that enables agent-to-agent communication within a task group. The design should be minimal and optional — not change the current delegate_task behavior for users who don't need it.
Key Design
1. Shared Message Bus (per task group)
When spawning a batch of agents that need to communicate, they share a lightweight message queue/board:
# New parameter in delegate_task
delegate_task(
tasks=[
{"goal": "Write a 3-minute sci-fi anime script", "role": "writer"},
{"goal": "Design 3 main characters based on the script", "role": "designer"},
],
enable_agent_channel=True, # NEW: enable agent-to-agent messaging
channel_name="anime-project-1"
)agent_channel(
action="send",
to="writer", # target role/agent ID, or "all" for broadcast
subject="Question about scene 3",
message="Can you describe the lighting in the cyberpunk alley?"
)
agent_channel(
action="read",
filter_by="to:designer", # filter: to/from/subject/after
since="2025-01-01T00:00:00Z" # only messages after this time
)
agent_channel(
action="list",
filter_by="unread" # or "all", "to:me", "from:director"
)Round 1: Writer posts script → Designer reads it
Round 2: Designer asks clarification → Writer responds
Round 3: Director gives notes → Writer revises
Round 4: Storyboard Artist reads final script → posts storyboard
Each agent reads relevant messages from others and responds at its own pace, without the parent having to ferry every message.
4. Optional: Persistent Channel Board
Optionally persist the message board to a SQLite file (similar to the Kanban board) so the multi-agent discussion survives session restarts. This allows long-running projects to have ongoing discussions across multiple Hermes sessions.
Implementation Considerations
Non-blocking: Reading from the channel should never block. Agents poll at their own pace — no synchronous waiting for responses.
Optional: enable_agent_channel=False by default. Zero behavior change for existing users.
Lightweight: In-memory dict or simple SQLite, not a message broker. The channel lives as long as the parent batch session.
Scoped: Messages are scoped to a single delegate_task call or a named channel. Agents from different task groups cannot see each other's messages.
Tool schema: Added to the delegation toolset, or a new agent_channel toolset.
Example Workflow (AI Anime Production)
Parent (Director): "Start production on 'Neon Dreams' - 3min cyberpunk"
├── Writer: Writes script
│ └── Posts to channel: "Script draft v1 ready"
│ ├── Designer reads it, posts: "Need descriptions of main character's outfit"
│ ├── Writer responds: "Added wardrobe notes in v2"
│ └── Director chimes in: "Let's go with neo-80s aesthetic"
│
├── Character Designer: Reads script from channel, designs characters
│ └── Posts concept art descriptions
│
├── Storyboard Artist: Reads channel for finalized script + character designs
│ └── Posts storyboard panels
│
└── All agents: Final review round before parent accepts deliverables
Alternatives Considered
A. Parent-as-message-bus (current approach)
How it works: Parent collects every agent's output, then passes relevant info to the next agent.
Why rejected: Context bloat in parent. The parent's context fills up with every intermediate message, defeating the purpose of delegation. Slow iteration — only one agent works at a time in a chain.
B. Shared file system (agents write/read from a shared directory)
How it works: Agents write outputs to files, others read them.
Why suboptimal: No structured addressing ("send to Designer specifically"), no read/unread tracking, no threading of conversations. File I/O is slow for iterative discussions. Agents can't "ask questions" — they'd have to poll files.
C. MCP server as message broker
How it works: Run an MCP server that agents connect to for chat.
Why not ideal: Overengineered for this use case. Adds deployment complexity. MCP is designed for tool exposure, not agent-to-agent chat. Would require every subagent to know the MCP server URL.
D. Using the existing Kanban board as message transport
How it works: Agents write comments on Kanban cards as a communication channel.
Why suboptimal: Kanban is designed for task tracking, not real-time discussion. Comments are secondary; there's no addressing, threading, or "read" tracking. Forces agents into a task-card paradigm that doesn't fit creative discussions.
Feature Type
New tool
Scope
Medium (few files, < 300 lines)
Contribution
I'd like to implement this myself and submit a PR (if core team supports the design direction)
Additional Notes
Relevant code locations for implementation:
tools/delegate_tool.py — the current delegation system; the new channel logic would integrate here
The DELEGATE_BLOCKED_TOOLS set (delegate_tool.py:line 37) may need updating if agent_channel should be available to all subagents
The child system prompt builder (_build_child_system_prompt at line 564) would inject the new tool
The tools/toolsets.py toolset definitions would get a new toolset entry or an extension to the delegation toolset
Inspired by real-world multi-agent frameworks like:
AutoGen's agent-to-agent conversation capabilities
CrewAI's task dependency and context passing
Microsoft's Magentic-One orchestrator pattern
✨ Feature Request: Multi-Agent Communication Channel (Agent-to-Agent Messaging)
Problem or Use Case
I'm using Hermes Agent as the orchestrator of a multi-agent creative production team (AI Anime Production Studio). The team includes specialized roles: Writer, Character Designer, Storyboard Artist, Sound Designer, Editor, Director, etc.
Currently,
delegate_taskspawns isolated subagents that work independently and report only to the parent. This works for parallel independent work, but many real-world workflows require agents to discuss, critique, iterate, and build on each other's work — just like a real creative team:The current architecture forces the parent agent (me) to act as a manual message bus — I have to:
This creates massive context bloat in the parent, slows down iteration cycles, and loses the natural "discussion" dynamic that makes multi-agent teams powerful.
Proposed Solution
I propose adding a lightweight message-passing layer to the delegation system that enables agent-to-agent communication within a task group. The design should be minimal and optional — not change the current
delegate_taskbehavior for users who don't need it.Key Design
1. Shared Message Bus (per task group)
When spawning a batch of agents that need to communicate, they share a lightweight message queue/board: