iiRecord
Agentic AI Atlas · ACP Internals
page:docs-hermes-research-raw-acp-internalsa5c.ai
II.
Page overview

page:docs-hermes-research-raw-acp-internals

Reference · live

ACP Internals overview

Inspect the raw attributes, linked wiki pages, and inbound or outbound graph edges for page:docs-hermes-research-raw-acp-internals.

PageOutgoing · 0Incoming · 1

Attributes

nodeKind
Page
sourcePath
docs/hermes-research/raw/acp-internals.md
sourceKind
repo-docs
title
ACP Internals
displayName
ACP Internals
slug
docs/hermes-research/raw/acp-internals
articlePath
wiki/docs/hermes-research/raw/acp-internals.md
article
# ACP Internals > Source: https://hermes-agent.nousresearch.com/docs/developer-guide/acp-internals ## Architecture Overview The ACP adapter implements a wrapper layer that "converts Hermes' synchronous `AIAgent` into an async JSON-RPC stdio server." This enables editor integration through a standardized protocol. ## Boot Sequence The startup flow progresses through: - Entry point invocation (`acp_adapter.entry.main()`) - Version/configuration parsing - Environment loading from `~/.hermes/.env` - `HermesACPAgent` construction - Server initialization with `acp.run_agent()` Notably, "stdout is reserved for ACP JSON-RPC transport" while human-readable diagnostics route to stderr. ## Core Components **HermesACPAgent** (`acp_adapter/server.py`) Manages protocol implementation with responsibilities including session creation, prompt execution, and model switching. It bridges synchronous AI callbacks to asynchronous ACP notifications. **SessionManager** (`acp_adapter/session.py`) Maintains thread-safe session state including: - Session identifiers and agent instances - Working directory and model configuration - Message history and cancellation signals **Event Bridge** (`acp_adapter/events.py`) Translates three callback types into ACP updates: - Tool progress notifications - Step execution events - Reasoning/thinking signals The bridge uses `asyncio.run_coroutine_threadsafe()` to coordinate between the worker thread running the AI agent and the main event loop. **Permission System** (`acp_adapter/permissions.py`) Maps approval prompts to ACP permission requests: `allow_once` -> once, `allow_always` -> always, with timeout/failure defaulting to denial. ## Session Management Sessions persist to `~/.hermes/state.db` and restore across process restarts. The system supports: - Creating new sessions with specified working directories - Forking sessions by deep-copying message history - Cancellation via interrupt signals - FIFO tool tracking for parallel identical-name calls **Working Directory Binding**: Sessions carry editor workspace context through task-scoped terminal/file overrides. ## Authentication Rather than implementing custom auth, the adapter "reuses Hermes' runtime resolver," advertising the currently configured provider credentials and offering an interactive setup method for first-run registry clients. ## Implementation Files Core modules: `entry.py`, `server.py`, `session.py`, `events.py`, `permissions.py`, `tools.py`, `auth.py`, plus test suite at `tests/acp/` and toolset definition in `toolsets.py`.
documents
[]

Outgoing edges

None.

Incoming edges

contains_page1