Manifest
Best For
- Agents that learn and improve across sessions.
- Long-running daemon agents with persistent state.
- Multi-provider LLM workflows (OpenRouter, OpenAI, Anthropic, local endpoints).
- Agents needing built-in tools (terminal, browser, code search).
How It Works
The adapter bridges Hermes’sAIAgent class to the Charm Runner:
- Persistence —
HERMES_HOMEis redirected toCHARM_WORKSPACE_DIR/.hermes, so SQLite session databases, FTS5 search indexes, auto-generated skills, and memory files all persist across daemon restarts. - Streaming — Hermes’s
stream_delta_callbackis wired to Charm’s SSE emitter for real-time token output in the Store frontend. - Headless mode — The agent runs with
quiet_mode=Trueto suppress TUI spinners and terminal chrome. - Tool tracking — Hermes’s
tool_start_callbackandtool_complete_callbackfeed into Charm’s tool usage analytics.
Environment Variables
Runtime Image
For production, use the pre-built Hermes runtime image:Operational Notes
- Use
lifecycle: "daemon"for agents that need persistent memory across sessions. - Always set LLM API keys via
charm.yamlenvironment_variablessection, not hardcoded in source. - Test with
charm validatebefore publishing. - The adapter is distributed as a separate pip package (
charm-adapter-hermes). Install it in your runtime image or let the runner install it fromrequirements.txt.
