Hermes
Jue status: Read, Write, and Confirm are Implemented (
packages/ai-jue-adapter-hermes/). workspace ships as the default for Canonical packs; the optional thinskill-plugin(RFC-0002 Phase B) also ships. Official Hermes “plugins” useplugin.yaml+ Pythonregister(ctx)runtime extensions that can bundle skills viactx.register_skill; the thin Artifact follows that official plugin.yaml surface.capabilitieshonestly declarerules/hooks: "unsupported",commands/agents: "degraded",skills/mcp: "supported". Extracron(cron/jobs.json) ships as a Hermes-specific pass-through field (see implementation-status).Official sources: Plugins, Build a Hermes Plugin, Hermes Agent
1. Official surface
A real Hermes install (~/.hermes/) exposes the project-level surface MEMORY.md (shared context, semantically similar to Claude's CLAUDE.md), skills/<category>/<name>/SKILL.md (three levels deep, deeper than the one level used by Claude/Codex/OpenClaw), config.yaml's mcp.servers, and cron/jobs.json. The ~/.hermes/hooks/ directory is part of the runtime surface; hooks_auto_accept is a session-level policy. agent:/commands: are global config.yaml runtime blocks. Hermes also offers plugins, ACP, TUI Gateway JSON-RPC, and an OpenAI-compatible HTTP API; these runtime integration surfaces are tracked as Agent-specific surfaces, with implementation status recorded by the Adapter documentation.
2. Intended Jue mapping
| Canonical / Facet | Hermes |
|---|---|
context.global | MEMORY.md (managed block) |
skills | skills/<category>/<name>/SKILL.md (three levels), preserving references/, scripts/, and assets/ support files |
mcp.servers | config.yaml's mcp.servers |
cron (Hermes-specific extra field alongside the six atomic Capability types) | Full-file pass-through of cron/jobs.json |
rules / hooks | Honestly unsupported: no per-workspace surface |
commands / agents | Honestly degraded: the like-named block in config.yaml is global runtime policy; read/write are no-ops |
| target-specific settings | tools.hermes |
| Artifact | workspace (skills+mcp); skill-plugin (plugin.yaml + register_skill-only __init__.py + flat skills/; mcp stays on workspace) |
| Confirm | Workspace: run tirith config validate when tirith is available, otherwise return unconfirmed; skill-plugin: structural evidence from plugin.yaml, the register_skill initializer, and skill roots |
3. Conversion boundary
- Hermes general plugins may register Python tools/hooks/commands/platforms;
skill-pluginselects theregister_skillcapability as a lightweight distribution surface for Canonical skills, keeping the distributed text capabilities aligned with that boundary. - To distribute skills:
skill-plugingeneratesregister_skillboilerplate plus flatskills/; mcp/context stay on workspace apply. - ACP, Gateway, and HTTP are Transport/Runtime facets alongside the Capability set.
- Self-learning, memory, profile, and session state remain Agent runtime state; reusable Presets focus on portable Capability data.
cronis the Adapter's Agent-specific pass-through field beyond the six atomic Capability types. The implementation-status page records its mapping boundary.
4. Current gaps
| Level | Status | Gap |
|---|---|---|
| Read | Implemented | packages/ai-jue-adapter-hermes/src/read.ts |
| Write | Implemented | packages/ai-jue-adapter-hermes/src/write.ts, driven by the Core executor |
| Artifact | Implemented | workspace + thin skill-plugin (skills / plugin.yaml / register_skill; MCP stays on workspace); runtime extensions follow the official Hermes surface |
| Confirm | Implemented | Workspace: real tirith config validate when available and explicit unconfirmed when the command is absent; skill-plugin: structural evidence from the generated plugin surface |