Skip to content

feat(agent): let orchestrator profiles control other Hermes agent profiles via ACP#14009

Closed
dodo-reach wants to merge 1 commit into
NousResearch:mainfrom
dodo-reach:feat/acp-session-client
Closed

feat(agent): let orchestrator profiles control other Hermes agent profiles via ACP#14009
dodo-reach wants to merge 1 commit into
NousResearch:mainfrom
dodo-reach:feat/acp-session-client

Conversation

@dodo-reach

@dodo-reach dodo-reach commented Apr 22, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a standalone scripts/hermes-session-client.py reference client for Hermes ACP sessions
  • let one Hermes profile act as an orchestrator that creates, resumes, forks, prompts, lists, and cancels sessions on other Hermes agent profiles
  • make cross-profile orchestration usable from shell scripts, CI, and other agent processes without embedding Hermes internals in-process
  • auto-detect and acknowledge the auth method advertised by initialize
  • document the helper in the ACP docs and add focused tests

Why

Hermes already has profiles, ACP server mode, and nested delegation. What was still missing was a small, protocol-correct bridge that lets a Hermes profile directly control other Hermes profiles as peer agents.

This adds that bridge.

In practice, this unlocks a new Hermes usage pattern: one profile can serve as the orchestrator while other profiles act as specialized agents with their own config, SOUL, memory, sessions, and tools. The orchestrator can open fresh sessions, resume prior ones, continue conversations, fork threads, and iterate on delegated work across those other profiles.

That makes Hermes profiles usable not just as isolated personas, but as a coordinated multi-profile agent system.

Relation to #9459 and #11169

This PR is complementary to the delegate_task(profile=...) work in #9459 and #11169, but it solves a different layer of the problem.

  • #9459 / #11169 focus on in-process delegation: Hermes uses delegate_task(profile=...) to spawn or route work to a profile-backed child worker.
  • This PR focuses on direct ACP session control across profiles: one Hermes profile can act as an orchestrator and explicitly control other Hermes profiles as persistent peer agents.

So the distinction is:

  • delegate_task(profile=...) improves delegation inside Hermes' existing subagent flow
  • hermes-session-client.py enables a profile-level orchestrator to directly manage other Hermes agent profiles across reusable ACP sessions

This PR intentionally does not change delegate_task, tool routing, or delegation semantics. It adds a standalone ACP session client that builds on Hermes' current ACP and profile architecture to unlock profile-to-profile orchestration cleanly.

Testing

  • venv/bin/python -m pytest tests/scripts/test_hermes_session_client.py -q
  • venv/bin/python -m pytest tests/acp/test_server.py tests/acp/test_session.py -q

Notes

This PR intentionally keeps the scope narrow:

  • no bundled orchestration skills
  • no new core delegation model
  • no changes to Hermes' existing in-process delegate_task flow

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/acp Agent Communication Protocol adapter comp/agent Core agent loop, run_agent.py, prompt builder labels Apr 22, 2026
@alt-glitch

Copy link
Copy Markdown
Collaborator

Related to #9459 (agent profiles for delegate_task) and #11169 (delegate task profile) — complementary approach using ACP sessions instead of in-process delegation.

@alt-glitch

Copy link
Copy Markdown
Collaborator

Related to #9459 and #11169.

1 similar comment
@alt-glitch

Copy link
Copy Markdown
Collaborator

Related to #9459 and #11169.

@dodo-reach

Copy link
Copy Markdown
Contributor Author

Thanks for linking #9459 and #11169. This PR is meant as a complementary control-plane piece: those changes improve in-process delegation, while this PR adds a standalone ACP session client so one Hermes profile can act as an orchestrator and directly control other Hermes profiles as persistent peer agents across reusable sessions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/acp Agent Communication Protocol adapter comp/agent Core agent loop, run_agent.py, prompt builder P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants