-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Add Hermes Agent (NousResearch) as a new agentctl harness with two distinct adapters:
hermesadapter — non-interactive CLI mode viahermes chat -qhermes-gatewayadapter — messaging gateway mode (persistent agent with API)
These are meaningfully different execution models and warrant separate adapters.
Why
Hermes Agent is a hybrid CLI + platform agent from NousResearch (MIT, launched Feb 2026). It has unique capabilities:
- Auto-managed persistent memory (MEMORY.md + USER.md)
- Autonomous skill creation at runtime
- Multi-model runtime switching (live, not just config)
- 6 terminal backends including serverless (Daytona, Modal)
- FTS5 full-text session search across all sessions
Adapter 1: hermes (CLI mode)
Non-interactive coding agent, analogous to Claude Code --print or Slate -q.
agentctl launch hermes --worktree ~/personal/orgloop --branch fix/foo -p "fix the bug"Implementation:
- Launch:
hermes chat -q <prompt>(non-interactive) - Need to test: streaming output format, exit codes, session ID scheme
- Persistent memory carries across sessions (unique vs other harnesses)
- Skills accumulate over time (agent gets better at repeated task types)
hermes chat --resume <id>for session continuation
Key unknowns (test during implementation):
- Does
hermes chat -qproduce streaming JSONL or plain text? - Exit code conventions (0 = success, non-zero = error?)
- Can we pass workspace directory? (check
--workspaceor--cwdflag) - Does it support
--dangerously-set-permissionsequivalent?
Adapter 2: hermes-gateway (messaging gateway mode)
Long-running agent with an API endpoint, analogous to an OpenClaw actor.
agentctl launch hermes-gateway --port 7878 --workspace ~/personal/orgloopImplementation:
- Launch: start Hermes messaging gateway (persistent process)
- Send tasks via API (HTTP POST to gateway endpoint)
- Receive results via webhook callback or polling
- Agent maintains memory/skills across tasks
- Multiple tasks can be sent to the same running agent
This mode is more like a managed service than an ephemeral CLI. agentctl would:
- Start/stop the gateway process
- Track which gateway is serving which workspace
- Route tasks to the right gateway instance
Key unknowns:
- Gateway API format (REST? WebSocket? gRPC?)
- How to send tasks programmatically
- Callback/webhook support for task completion
- Can multiple workspaces share one gateway?
Shared concerns
- Installation:
pip install hermes-agent(Python 3.11+) — first Python harness - Config: Hermes uses its own config format (not
slate.jsonstyle) - Memory persistence: Hermes auto-manages MEMORY.md — this may conflict with worktree isolation (agent remembers things from other tasks). Could be a feature or a bug depending on use case.
Implementation plan
- Install Hermes, test
hermes chat -qoutput format and behavior - Build
src/adapters/hermes.ts(CLI mode first — simpler, known pattern) - Test with real tasks in worktrees
- Investigate gateway API, build
src/adapters/hermes-gateway.tsif API is suitable - Document the two modes and when to use each
References
- NousResearch Hermes Agent (search for official repo)
- Evaluation: Obsidian
Personal/research/hermes-agent-evaluation.md - Related: feat: Slate harness — swarm-native coding agent via CLI + ACP #140 (Slate harness)
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request