hermes - 💡(How to fix) Fix [Feature]: Multi-Agent Communication Channel (Agent-to-Agent Messaging) [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#25176Fetched 2026-05-14 03:48:14
View on GitHub
Comments
0
Participants
1
Timeline
4
Reactions
0
Timeline (top)
labeled ×4
RAW_BUFFERClick to expand / collapse

✨ 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:

  1. Collect Agent A's output
  2. Pass it to Agent B
  3. Collect Agent B's feedback
  4. Relay back to Agent A
  5. 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

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING