Skip to content

Hermes ​

Jue status: Read, Write, and Confirm are Implemented (packages/ai-jue-adapter-hermes/). workspace ships as the default for Canonical packs; the optional thin skill-plugin (RFC-0002 Phase B) also ships. Official Hermes “plugins” use plugin.yaml + Python register(ctx) runtime extensions that can bundle skills via ctx.register_skill; the thin Artifact follows that official plugin.yaml surface. capabilities honestly declare rules/hooks: "unsupported", commands/agents: "degraded", skills/mcp: "supported". Extra cron (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 / FacetHermes
context.globalMEMORY.md (managed block)
skillsskills/<category>/<name>/SKILL.md (three levels), preserving references/, scripts/, and assets/ support files
mcp.serversconfig.yaml's mcp.servers
cron (Hermes-specific extra field alongside the six atomic Capability types)Full-file pass-through of cron/jobs.json
rules / hooksHonestly unsupported: no per-workspace surface
commands / agentsHonestly degraded: the like-named block in config.yaml is global runtime policy; read/write are no-ops
target-specific settingstools.hermes
Artifactworkspace (skills+mcp); skill-plugin (plugin.yaml + register_skill-only __init__.py + flat skills/; mcp stays on workspace)
ConfirmWorkspace: 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-plugin selects the register_skill capability as a lightweight distribution surface for Canonical skills, keeping the distributed text capabilities aligned with that boundary.
  • To distribute skills: skill-plugin generates register_skill boilerplate plus flat skills/; 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.
  • cron is 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 ​

LevelStatusGap
ReadImplementedpackages/ai-jue-adapter-hermes/src/read.ts
WriteImplementedpackages/ai-jue-adapter-hermes/src/write.ts, driven by the Core executor
ArtifactImplementedworkspace + thin skill-plugin (skills / plugin.yaml / register_skill; MCP stays on workspace); runtime extensions follow the official Hermes surface
ConfirmImplementedWorkspace: real tirith config validate when available and explicit unconfirmed when the command is absent; skill-plugin: structural evidence from the generated plugin surface

Define once. Adapt everywhere.