Personal Agent Bench

Hermes Agent: setup, skills, memory and approvals

Start with a working chat, then check the terminal backend, approval mode and memory files before adding unattended work. Hermes Agent is Nous Research's open-source agent with a Python CLI and messaging gateway, plus an Electron desktop application. This review combines practical steps from its pinned documentation with source findings about those execution and storage paths. Getting-started commands.

  • Run hermes setup to choose a provider and tools, then verify the model shown in the chat banner. Setup sequence.
  • Use /skills to browse installed procedures and /tools to check the available tool surface. Skills commands; Tool listing.
  • Check approvals and the terminal backend as separate settings. The configuration and source checks below identify both.
  • Inspect the active profile's memory files after asking Hermes to remember something. Memory troubleshooting.

Set up Hermes Agent and verify a first task

Follow the pinned quickstart's installation route for your operating system, then run hermes setup. It documents a desktop installer for macOS and Windows, a shell installer for Linux/macOS/WSL2, and a PowerShell installer for native Windows. Reload the shell after a CLI installation so the hermes command is available. The installer links are distribution endpoints; the revision used for this review is recorded under Reproduce this. Installation routes.

The setup wizard offers Portal, Full Setup and Blank Slate paths. Full Setup walks through provider and tool choices. Blank Slate starts with a provider/model plus File Operations and Terminal, with features such as memory, skills and cron disabled. If you choose that path, enable a feature before trying its examples later in this page. Run hermes model to select or change the provider and model, and hermes tools to configure tools. Setup modes; CLI setup commands.

Start hermes or hermes --tui and ask it to summarize the repository in five bullets and identify the main entrypoint. This task comes from the quickstart. Check the answer against the files it names: the exercise makes both file access and the resulting explanation easy to inspect. The documented success checks are a banner showing the chosen provider/model, a reply without error, a working tool when needed and a conversation that continues for more than one turn. First-chat example and checks.

Next, exit and use hermes --continue to resume the latest session. If it does not return to the expected conversation, check that you selected the same profile. Once the CLI works, hermes gateway setup adds a messaging platform. This sequence gives you a working local conversation to compare with the gateway when diagnosing configuration problems. Resume check; Gateway setup order.

Choose Hermes Agent models and separate licence from running cost

Use hermes model to select the provider you intend to pay or host. The repository is MIT licensed: the software licence does not require buying a Hermes licence to run or modify it under those terms. Model inference is a separate service or computing cost. The pinned quickstart describes subscription routes, API-key routes including pay-per-token access, and custom endpoints for local or self-hosted models. Provider choices.

The example configuration names anthropic/claude-opus-4.6; treat that as an example and verify your selection in the banner. A custom endpoint also needs the correct base URL, model name and context length. The quickstart specifies at least 64,000 tokens of context for the model. Example model; Custom endpoint and context requirement.

Account for hosted tools as well as model calls. The README describes an optional Nous Portal subscription that routes model access and tools such as web search, image generation, speech and a cloud browser through its Tool Gateway. It also permits bringing your own per-tool keys. Check which route you configured before estimating spend; this review has no measured workload cost or current price quote. The documented /usage and /insights commands provide usage views once you run your own tasks. Service choices and usage commands.

Use Hermes Agent skills for repeatable tasks

Browse /skills, then inspect a relevant installed skill before invoking it. Skills are on-demand knowledge documents, stored by default under ~/.hermes/skills/; they supply procedures the agent can load when needed. Tools supply the callable operations used to carry out those procedures. Choosing a skill therefore goes alongside checking /tools and configuring the necessary integrations. Skill storage and loading; Available tools.

The pinned skills guide includes examples for finding cat GIFs with gif-search, preparing a pull request for an authentication refactor with github-pr-workflow, analyzing a mix with songsee, and opening excalidraw without arguments so the agent can ask what you need. These are documented task examples, not completed benchmark runs. Invoke the corresponding slash command only after that skill is installed and its required tools are configured. Skill invocation examples.

Check skill seeding if you used Blank Slate or a named profile. The guide documents hermes skills opt-out to stop future bundled-skill seeding without removing existing files, and hermes skills opt-in --sync to restore seeding immediately. This distinction helps explain why an existing skill may remain visible after opting out, or why a fresh profile has a different catalogue. Profile skill controls.

For another concrete terminal task, the quickstart suggests asking for disk usage and the five largest directories. Review the reported paths and results in the context of the terminal backend selected below. A directory report from a remote environment answers a different question from the same task run on your laptop. Disk-usage example; Terminal configuration.

Check Hermes Agent approval mode before unattended work

Inspect approvals.mode in the active config.yaml, then check how the session was launched. The pinned security guide documents smart, manual and off. Smart mode uses an auxiliary model to assess dangerous-command risk, auto-approving low-risk cases, denying dangerous ones and escalating uncertain cases. Manual mode asks the user for dangerous commands. Off selects the approval bypass. Approval modes.

Also inspect --yolo, the HERMES_YOLO_MODE environment variable and the session's YOLO indicator. The documented /yolo command toggles the state, so do not use it as a read-only status query. The source combines process, session and mode-off bypass inputs; checking the YAML value alone can miss a session override. These findings concern the inspected approval paths, not universal coverage of sending, buying or deleting through every integration. YOLO controls and indicators; Bypass resolution.

Before adding cron or an API workflow, review approvals.cron_mode, single_query_mode and unattended_mode. The guide documents deny defaults when a dangerous-command prompt cannot be answered in those contexts, with approve alternatives. It also distinguishes API clients that can answer approval cards. Match the setting to the actual entry point instead of assuming a successful interactive prompt predicts unattended behavior. Headless approval settings.

Check Hermes Agent terminal and desktop boundaries

Read terminal.backend and terminal.cwd in your configuration. The example selects local, and the terminal implementation falls back to local execution. With that backend, commands run on the machine hosting the process. The example documents alternatives including SSH, Docker, Singularity, Modal and Daytona; inspect the selected backend's settings before deciding which filesystem a task should see. Terminal backend examples; Backend fallback.

The quickstart supplies hermes config set terminal.backend docker as a configuration example. Use the backend documentation to complete its setup, then apply the documented directory-inspection task to verify the environment you selected. Merely changing a value is not a runtime containment test. Configuration and directory check.

Keep the desktop boundary separate. Its chat window enables context isolation and renderer sandboxing and disables Node integration, while the preload exposes application operations through IPC. Those renderer settings do not confine Python terminal commands. REA mapped this JavaScript boundary; terminal behavior was established by manual source reading. Renderer preferences; Preload API.

Inspect Hermes Agent memory and provider connections

After asking Hermes to save a fact, open ~/.hermes/memories/MEMORY.md and USER.md and check that it was written. The official troubleshooting guide emphasizes that a conversational promise to remember is insufficient: the memory tool must actually write the entry. For a named profile, inspect that profile's memories directory instead; hermes profile list helps identify the available profiles. Memory verification.

If the entry is missing, check whether memory is enabled and whether write approval has staged it. The guide documents /memory pending for staged writes. If the file contains the fact but an existing conversation does not use it, start a new session with /new: the system-prompt memory snapshot is captured at session start, while tool responses show live state. These checks distinguish a failed save, a different profile and an old snapshot. Complete deletion of session records and backups is outside this review. Snapshot and troubleshooting checks.

Review provider and terminal configuration alongside memory when assessing where data can go. Secrets normally live in ~/.hermes/.env, while ordinary settings live in ~/.hermes/config.yaml. Custom providers and tools can add endpoints; an exhaustive outbound-host list and a telemetry default are not established here. REA's relative gateway request locates a JavaScript request site, not a captured connection. Configuration storage; Backend configuration.

Use the 15-agent comparison to compare these settings with other projects, and the OpenClaw security review for its effective-policy inspection commands.

Reproduce this

Use the pinned revision and recorded commands below to trace the findings.

We read these with REA (morluto/rea, MIT, v6.4.0), an open-source reverse-engineering tool for agents, plus manual source reading. REA's repository supplies the tool; it does not endorse this review. We are not affiliated with this project or REA. This is static reading only: no target agent was executed and no live traffic was observed.

The pinned checkout is 0b89435e7e4f7fab88a34eb69f13bf339eb2fd00. REA mapped the JS/TS application graph (Electron boundaries, imports, storage, request call sites); behavioural conclusions (approval paths, defaults, telemetry) were confirmed by reading the source. Electron boundaries were mapped where present. REA did not establish non-JavaScript core behavior.

These are portable equivalents of the commands recorded in the pass-2 manifest, run from a working directory that holds the pinned repository at repos/hermes-agent. Clone the repository at the pinned commit into repos/, create rea-out/, and run the commands from that directory. These are analysis commands, not instructions to start the agent. Executable and workspace paths are normalised to npx [email protected] and relative paths; some original runs also set a writable compiler-cache directory through ADDITIONAL_SWIFT_DRIVER_FLAGS.

npx [email protected] inspect repos/hermes-agent --format json > rea-out/hermes-agent-inspect.json 2> rea-out/hermes-agent-inspect.stderr

npx [email protected] analyze-javascript-application repos/hermes-agent --format json --analysis-timeout-ms 120000 > rea-out/hermes-agent.json 2> rea-out/hermes-agent.stderr

npx [email protected] analyze-javascript-application repos/hermes-agent --format json --analysis-timeout-ms 120000 > rea-out/hermes-agent-analysis.json 2> rea-out/hermes-agent-analysis.stderr

The retained analysis is partial. A writable compiler cache resolved the initial parsing setup failure, but blocked process-table inspection produced cleanup_incomplete. The runner stopped lingering CLIs after complete JSON output; that does not establish clean worker shutdown. Missing graph observations cannot establish absent behavior. The reproduction record records output hashes separately from Evidence IDs and subject digests.

FAQ

What should I try first with Hermes Agent? Use the repository-summary task in the setup section, check its entrypoint answer against the files, and continue the conversation. Then test session resume before adding a messaging gateway.

How do I choose between skills and memory? Use a skill for a repeatable procedure and curated memory for facts or preferences needed across conversations. The skills and memory sections show where to inspect each one.

Is the MIT licence the same as free model usage? No. The licence covers the software. Your chosen provider, subscription and optional hosted tools determine service charges; the model and cost section explains the documented choices.

Where should I look if approvals seem wrong? Start with approvals.mode, the launch flags and the current session's YOLO indicator. Check the unattended settings separately when the task comes from cron or an API.