---
title: Choose an Agent runtime
canonical: "https://agentbarn.dev/guides/agents/choose-runtime"
pubDate: "2026-08-29T00:00:00.000Z"
updatedDate: "2026-09-28T09:37:04.000Z"
author: Agent Barn
description: "Compare Hermes and OpenClaw execution, approval, and runtime transport independently of Communication Connections."
tags: [Agents, Concept, "Agent operators, Organization administrators, platform administrators, and self-hosted operators", scheduled delivery, origin routing, BOOT.md, startup checklist, silence markers, Hermes, OpenClaw, runtime transport, SSE, leases, progress messages, verbose mode, replacement Agent, session history]
categories: [Guides, Agents]
---

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:

1.  Loads the exact pinned Template or Agent Template Override Version and exact pinned Skill Versions.
2.  Renders the Agent’s identity and operating instructions, then materializes permitted tool Integration artifacts and credentials.
3.  Generates fresh Runtime, Ingest, and Communications protocol credentials.
4.  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.

**Important**

Do not combine a Runtime recommendation with a Communication Platform recommendation. An Agent can remain headless, and its Connections do not determine its Runtime.

## 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](/guides/runtime-and-deployment#section-5) 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](/guides/runtime-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.

**Warning**

Command approval is one control. It does not replace Agent Access, Permissions, Integration scopes, or external-system authorization.

## 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 OpenClaw
```

The 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
openclaw
```

API clients should always send the intended Runtime explicitly:

```
{
  "agent_type": "hermes"
}
```

**Important**

The web hire flow preselects Hermes, but an omitted API `agent_type` currently defaults to OpenClaw.

## 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](/guides/self-hosting/upgrades#hermes-session-continuity).

## Continue with the focused guides

-   [Manage the Agent lifecycle](/guides/agents/lifecycle)
-   [Review Agent health and logs](/guides/agents/health-and-logs)
-   [Manage Communication Connections](/guides/agents/communication-connections)

## 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.
