Compare Hermes and OpenClaw by their execution behavior, configuration, command-approval controls, and operational contracts. Communication platforms are connected independently through Communication Connections and do not determine which Runtime an Agent can use.
An Agent Runtime loads the Agent’s pinned Template and Skill versions, calls its configured model through LiteLLM, exposes Runtime health, and exchanges messages through Agent Barn’s shared Communications protocol.
Overview
When an Agent starts, Agent Barn:
- Loads the exact pinned Template or Agent Template Override Version and exact pinned Skill Versions.
- Renders the Agent’s identity and operating instructions, then materializes permitted tool Integration artifacts and credentials.
- Generates fresh Runtime, Ingest, and Communications protocol credentials.
- Builds the selected Hermes or OpenClaw resources and starts the shared Communications Runtime adapter.
Communication Connection credentials remain inside Communications. Ingest receives Tool Call telemetry; Communications owns canonical Conversation Messages and Delivery state. Runtime configuration is regenerated when the Agent starts.
Short answer
Hermes is preselected in the current web hire flow, while both Hermes and OpenClaw are supported. Choose on Runtime-specific behavior, then select and manage Communication Connections separately after the Agent exists.
Runtime comparison
| Capability | Hermes | OpenClaw |
|---|---|---|
| Runtime value | hermes | openclaw |
| Web hire flow | Preselected | Selectable |
| Command approval | Automatic, Manual, or Off | Managed by OpenClaw; explicit non-default mode is rejected and the effective default is AUTO |
| Generated configuration | Hermes configuration and Hermes plugins | OpenClaw configuration overlay and OpenClaw plugins |
| Skill mount root | /workspace/skills | /home/node/.openclaw/workspace/skills |
| Progress messages | Supported through Agent-level verbose mode | Unavailable through the current adapter; explicit true is rejected |
| Scheduled-session behavior | Isolated session with persistent memory and user-profile context | Its own Runtime behavior |
| Persistent workspace | Managed Runtime workspace layout | Managed Runtime workspace layout |
| Health and telemetry | Agent Barn-managed health and Runtime telemetry plugins | Agent Barn-managed health and Runtime telemetry plugins |
| Communications | Shared runtime-neutral adapter and protocol | Shared runtime-neutral adapter and protocol |
Neither Runtime is inherently superior. Choose the one whose documented execution behavior and operational contracts match the Agent’s work.
Runtime-neutral Communications
An Agent can have zero, one, or many Communication Connections, including multiple Connections for the same Communication Platform. Runtime selection and Connection selection are independent.
Both runtimes consume Agent Barn's shared Communications protocol, but the adapter invokes them differently. Hermes uses the asynchronous /v1/runs API and its event/approval endpoints. OpenClaw uses /v1/chat/completions. Provider credentials remain inside Communications and are not sent to either runtime.
Connection, location, and thread identity provide session continuity; the Delivery ID provides idempotency. Communication Connection credentials are never materialized into either Runtime.
Scheduled delivery
Agent Barn Communications supports ordinary replies and a separate initiated-message acceptance path. Interactive sends carry server-issued context for a live inbound execution and resolve only on that execution's Connection. Scheduled submissions use a recorded origin or the Agent's configured default. The model does not select a Connection ID. Only Slack currently advertises initiated delivery.
Hermes scheduled jobs created from a conversation retain its Connection, channel, and thread. Startup-created jobs use the default. OpenClaw uses the default only when a completion has no recorded origin. Its pinned cron hook can expose a delivery-channel label instead of the creating conversation; an unmappable origin is refused instead of being sent to the default.
See the runtime guide for capture, routing, and recovery.
Choose Hermes
Choose Hermes when Agent Barn-managed command approval is required, the Template and operational testing target Hermes, or the documented Hermes scheduled-session memory behavior is required.
Hermes startup submits non-empty BOOT.md as repeatable setup work in a session without a current conversation. Startup-created scheduled jobs use the configured default. See Runtime Assembly and Deployment for submission, completion, and silence-filter behavior.
Hermes command approval
| Mode | Behavior |
|---|---|
| Automatic | Automatically approves low-risk commands. |
| Manual | Requests approval before commands run. |
| Off | Skips command-approval prompts. |
Command approvals render interactive clickable buttons across supported platforms—including Web Chat, Slack, and Discord. In Web Chat and chat platforms, buttons represent offered choices (such as once, session, or deny); clicking an option submits the answer with its approval identity and disables subsequent duplicate clicks.
Choose OpenClaw
Choose OpenClaw when the deployment already operates OpenClaw Agents, the Template and operational testing target OpenClaw behavior, or an OpenClaw-specific Runtime capability is required.
Agent Barn does not expose configurable command approval for this Runtime:
Managed by OpenClawThe API rejects an explicit non-default command-approval mode for OpenClaw and reports the effective AUTO default.
What both runtimes provide
- The Agent’s rendered identity and operating instructions.
- Its exact pinned Template and Skill Versions.
- Its configured model and per-Agent LiteLLM identity.
- Permitted tool Integration artifacts and Agent Secrets.
- Per-start Ingest and Communications protocol identities.
- The same unconditional Agent Barn Runtime behavior policies.
Neither Runtime receives Communication Connection credentials. Communications writes Conversations; Runtime telemetry covers Tool Calls and their results.
Select a Runtime in the web hire wizard
The web hire flow preselects Hermes and keeps OpenClaw selectable. Select a Runtime for its execution behavior; Communication Connections are added and managed independently after the Agent exists.
Select a Runtime through the Agent API
The creation field is agent_type, with supported values:
hermes
openclawAPI clients should always send the intended Runtime explicitly:
{
"agent_type": "hermes"
}Changing Runtime
Runtime is selected when an Agent is created. The Agent update API does not change it; use a replacement Agent when changing between Hermes and OpenClaw.
Communication Connections cannot be moved to another Agent through a reparent operation. Configure new Connections on the replacement Agent. If reusing a provider identity, retire the old Connection before claiming an identity whose uniqueness rules would otherwise conflict. Follow the provider's setup requirements for the new Connection.
Replacement does not transfer Connection IDs, provider conversation history, runtime memory, or allocated Email addresses. Email addresses are never reissued after retirement. Keep any old history you need according to the existing retention and lifecycle behavior.
For compatible image and adapter rollout, see Hermes session continuity.
Continue with the focused guides
Troubleshooting
The Agent was created with OpenClaw unexpectedly
The API defaults an omitted agent_type to OpenClaw
Send the intended value explicitly:
{ "agent_type": "hermes" }{ "agent_type": "openclaw" }An existing Agent’s Runtime cannot be changed through update; create a replacement Agent if the wrong Runtime was selected.
Command approval settings are missing
Available for Hermes only
Agent Barn exposes Automatic, Manual, and Off only for Hermes. OpenClaw is shown as Managed by OpenClaw.
Runtime and Connection health disagree
They are separate operational boundaries
Diagnose Runtime health through Runtime logs and lifecycle guidance; diagnose Connection provider health, Delivery, reconnects, retries, and journal state through Communication diagnostics.
Transport, SSE, and delivery leases
Protocol version 2 uses an authenticated outbound Server-Sent Events control stream to notify the runtime adapter of durable work. The adapter claims an inbound Delivery, invokes the selected runtime, submits the reply against the source Delivery, and completes the Delivery.
PostgreSQL owns delivery state, claims, leases, idempotency, and cancellation. Redis Streams provide content-free wakeups rather than authoritative message state. Reconnect replay and bounded fallback wakeups recover durable work when a signal is missed or Redis is unavailable. The adapter retains a five-second safety claim poll.
Claims last 120 seconds. Hermes renews its live claim every 60 seconds while its asynchronous run or approval is active. OpenClaw retains the bounded-turn behavior of its chat-completions path. Do not infer that both runtimes have the same progress, approval, or abort transport merely because they share Communications.
Version-1 claim/reply/complete routes remain accepted while older Agents are rebuilt. Updating a Connection reconciles provider connectivity separately from restarting the runtime.
Communications → shared adapter → Hermes /v1/runs; shared adapter → OpenClaw /v1/chat/completions. The control stream announces durable work; it is not token-by-token model response streaming.
Progress messages
Hermes supports an Agent-level verbose_mode setting for progress updates while work is in progress. OpenClaw does not have a supported progress relay through its current external HTTP path; the API rejects verbose_mode=true for an OpenClaw Agent.
Progress visibility is separate from command approval. Email suppresses progress updates even when Agent-level verbosity is enabled, but approval prompts can still be delivered. Existing running Agents need a rebuilt runtime configuration to receive changed adapter behavior.