Agentic AI Atlasby a5c.ai
OverviewWikiGraphFor AgentsEdgesSearchWorkspace
/
GitHubDocsDiscord
i.3Wiki
Agentic AI Atlas · Hermes Integration Plan
docs/hermes-research/integration-plana5c.ai
Search the atlas/
Wiki · linked records

Article and nearby pages

I.Current articlepp. 1 - 1
Hermes Agent -- Layer Analysis
I.
Wiki article

docs/hermes-research/integration-plan

Reading · 6 min

Hermes Integration Plan reference

1. Add JSON-RPC client to adapter-hermes

Page nodewiki/docs/hermes-research/integration-plan.mdNearby pages · 1Documents · 0

Continue reading

Nearby pages in the same section.

Hermes Agent -- Layer Analysis

Hermes Integration Plan

Adapter Implementation Plan

Phase 1: Upgrade adapter-hermes from shell-hook to JSON-RPC (Priority: High)

**Current state:** The adapter at packages/adapters/hooks/adapter-hermes/ operates as a shell-hook family adapter. It receives a single onEvent stdin payload, normalizes it to a unified hook event, and cannot block, deny, or mutate tool calls. This is the minimum viable integration.

**Target state:** Upgrade to leverage Hermes' TUI Gateway JSON-RPC protocol for bidirectional control.

**Implementation steps:**

1. **Add JSON-RPC client to adapter-hermes** - File: packages/adapters/hooks/adapter-hermes/src/rpc-client.ts - Implement a JSON-RPC client that connects to Hermes' TUI Gateway (stdio or WebSocket) - Support methods: session.create, prompt.submit, session.history, approval.respond, clarify.respond - Handle events: message.delta, message.complete, tool.start, tool.progress, tool.complete

2. **Extend adapter capabilities** - File: packages/adapters/hooks/adapter-hermes/src/adapter.ts - Upgrade family from shell-hook to rpc-bridge - Enable supportsBlock: true (via approval.respond) - Enable supportsAsk: true (via clarify.respond) - Keep supportsToolInputMutation: false and supportsToolResultMutation: false (Hermes does not support these)

3. **Add session management** - File: packages/adapters/hooks/adapter-hermes/src/session-manager.ts - Track active Hermes sessions and map them to babysitter run sessions - Support session creation, listing, activation, and cleanup

4. **Update normalizer for bidirectional events** - File: packages/adapters/hooks/adapter-hermes/src/normalizer.ts - Add normalization for all TUI Gateway event types (currently only handles onEvent) - Map Hermes tool.start/tool.progress/tool.complete to unified pre/post tool events

Phase 2: Gateway bridge for messaging delivery (Priority: Medium)

**Goal:** Route babysitter orchestration results to Hermes' 20+ messaging platforms.

**Implementation steps:**

1. **Create gateway bridge module** - File: packages/adapters/gateway/src/hermes-bridge.ts - Connect to Hermes gateway's delivery API - Map babysitter run events (task completion, breakpoint hit, approval needed) to Hermes gateway send_message calls - Support targeting specific platforms (Telegram, Discord, Slack) by chat ID

2. **Add notification routing** - File: packages/adapters/gateway/src/notifications/hermes-relay.ts - Register Hermes gateway as a notification backend in our gateway - Route babysitter notification events to the Hermes gateway process

3. **Authorization mapping** - Map our gateway auth tokens to Hermes gateway authorization - Support DM pairing flow for user onboarding

Phase 3: Memory synchronization (Priority: Low)

**Goal:** Bidirectional memory sync between babysitter crossRunState and Hermes memory files.

**Implementation steps:**

1. **Create memory sync plugin** - File: packages/adapters/extensions/src/targets/hermes/memory-sync.ts - Read Hermes' MEMORY.md and USER.md at babysitter run start - Write babysitter crossRunState insights back to Hermes memory files at run end

2. **Leverage Hermes memory provider hooks** - If Hermes is the execution harness, hook into on_session_end to capture extracted memory - Feed captured memory into babysitter run journal for cross-run state

Phase 4: Provider catalog bridge (Priority: Low)

**Goal:** Expose Hermes' 30+ provider catalog through our adapters proxy.

**Implementation steps:**

1. **Add Hermes provider backend to adapters proxy** - File: packages/adapters/proxy/src/adapters_proxy/providers/hermes.py - Query Hermes' runtime resolver for available providers - Map provider capabilities to our proxy's provider interface - Route inference requests through Hermes when using its unique providers (Nous Portal, NovitaAI, etc.)

---

Hook Wiring Plan

Event mapping (current adapter-hermes)

Hermes Native EventUnified PhaseDirectionNotes
onEvent (tool.start)tool.beforepostCannot block
onEvent (tool.complete)tool.afterpostCannot mutate result
onEvent (session.start)session.startpost
onEvent (session.end)session.endpost
onEvent (agent.step)turn.afterpost

Planned event mapping (with JSON-RPC upgrade)

Hermes RPC EventUnified PhaseDirectionNotes
tool.starttool.beforepre+postCan block via approval
tool.progresstool.duringstreamProgress updates
tool.completetool.afterpostResult available
message.deltaresponse.streamstreamToken-by-token
message.completeresponse.completepostFull response
approval_requestapproval.requestpreBlock and wait
clarify_requestclarify.requestpreBlock and wait

Hook lifecycle integration

Code
babysitter run start
  |
  +-- adapter-hermes creates Hermes session (session.create RPC)
  |
  +-- babysitter submits task prompt (prompt.submit RPC)
  |
  +-- Hermes AIAgent processes turns:
  |     |
  |     +-- tool.start -> unified pre-tool hook -> governance check
  |     |
  |     +-- approval_request -> adapter bridges to babysitter breakpoint
  |     |
  |     +-- tool.complete -> unified post-tool hook -> effect recording
  |     |
  |     +-- message.delta -> streaming renderer
  |     |
  |     +-- message.complete -> babysitter task result capture
  |
  +-- adapter-hermes captures session history
  |
  +-- babysitter records effects and journal entries

---

Test Strategy

Unit tests (adapter-hermes)

Location: packages/adapters/hooks/adapter-hermes/src/__tests__/

Test fileCoverage
adapter.test.tsAdapter capabilities, family assignment, capability flags
normalizer.test.tsEvent normalization, stdin parsing, session ID extraction
mappings.test.tsPhase mapping table completeness
renderer.test.tsOutput rendering for Hermes format
session-resolver.test.tsSession resolution from env vars

**New tests needed for Phase 1:**

Test fileCoverage
rpc-client.test.tsJSON-RPC method calls, event handling, error recovery
session-manager.test.tsSession lifecycle, mapping to babysitter runs
bidirectional-normalizer.test.tsAll TUI Gateway event types

Integration tests

TestDescription
hermes-shell-hook-e2eVerify current shell-hook adapter normalizes real Hermes onEvent payloads
hermes-rpc-session-e2eVerify JSON-RPC session creation and prompt submission (Phase 1)
hermes-gateway-delivery-e2eVerify babysitter notifications route through Hermes gateway (Phase 2)

Live-stack tests

TestDescription
hermes-babysitter-createBabysitter creates a session in Hermes, submits a simple task, captures result
hermes-babysitter-resumeBabysitter resumes a Hermes session across process restarts
hermes-approval-bridgeHermes approval request bridges to babysitter breakpoint and back

Test fixtures

Hermes event fixtures already exist at: packages/adapters/hooks/adapter-hermes/src/__tests__/fixtures/hermes-events.ts

Additional fixtures needed:

  • TUI Gateway JSON-RPC response payloads
  • Gateway message delivery payloads
  • Memory provider hook payloads

CI integration

  • Hermes adapter unit tests run in the existing npm run test:hooks-adapter pipeline
  • Integration tests require Hermes installed as a dependency (pip install hermes-agent)
  • Live-stack tests require a running Hermes instance with a configured provider
  • Gate: all adapter unit tests must pass before integration tests run

---

Risk Assessment

RiskMitigation
Hermes API instability (pre-1.0)Pin to specific version range; adapter capabilities read from atlas catalog
Python/TypeScript bridge complexityJSON-RPC is language-agnostic; stdio transport avoids FFI
Session state divergenceAdapter-hermes is authoritative for session mapping; Hermes sessions are ephemeral from our perspective
Gateway auth mismatchMap our auth tokens to Hermes platform-specific auth; do not store Hermes credentials in our config
Memory format driftSchema-validate MEMORY.md/USER.md content before writing; fail-open on parse errors

Trail

Wiki
Babysitter Docs
Hermes Agent Deep Research

Hermes Integration Plan

Continue reading

Hermes Agent -- Layer Analysis

Page record

Open node ledger

wiki/docs/hermes-research/integration-plan.md

Documents

No documented graph nodes on this page.