Skip to content
Agents for Humanity
Public draft. All results are preliminary desk assessments against criteria v1.0, updated 27 Sept 2026. No agent has been certified yet. How we assess
Open sourceself-hostedMIT

Hermes Agent

Nous Research · hermes-agent.nousresearch.com

Hermes Agent is an MIT-licensed runtime that keeps configuration, memory, skills, credentials and session history in plain files and SQLite under the owner's home directory, with free model choice including local models and a full backup command. It is strong on portability, transparency and modifiability, records each tool call before running it, and logs A2A exchanges on both sides. Contacts can recognize the agent and its messages only through third-party platform accounts, and edits to its session history are not detectable, so the Auditable and Verifiable criteria are only partly met.

Strengths
  • MIT-licensed runtime; all state in ~/.hermes as YAML, Markdown, JSON and SQLite
  • One-command full backup and restore (hermes backup / import)
  • Any model provider, including local Ollama/llama.cpp endpoints
  • Tool calls recorded before execution; A2A exchanges logged on both sides
  • Runtime-enforced approval gate, deny rules and gateway user allowlists
  • Product telemetry export (OTLP) disabled by default; secrets held locally
Gaps
  • Agent identity and messages verifiable only through third-party platform accounts
  • Edits to session history are not detectable, so there is nothing to verify independently
  • Agent can reach its own history with the default local backend
  • Reproducible builds not documented
  • Outbound contact restrictions weaker than inbound allowlists
Evidence

All 34 findings

NousResearch/hermes-agent main branch at commit ba5e3bf (2026-09-27), CLI/gateway self-hosted install with default config; Nous Portal, Tool Gateway and desktop free-tier onboarding noted where relevant.

Portable · Can you leave, and take the whole agent with you?

92%
  • P1
    Round-trip portability

    No shortfalls: `hermes backup` immediately writes the complete Hermes home (config, .env, auth.json, state.db, skills, memory, cron, profiles) to one zip, and `hermes import <zip>` restores it in place on another machine. The docs advise stopping the gateway first and running `hermes setup` afterwards to check provider keys.

    Pass
  • P2
    Complete export

    `hermes backup` includes configuration, the SOUL.md persona, MEMORY.md/USER.md, the session database, skills, cron jobs, secrets and the encrypted credential vault, which is everything that defines the agent. Only regenerable caches such as checkpoints and browser profiles are excluded.

    Pass
  • P3
    Independent execution

    The runtime is MIT-licensed Python that runs locally and can be pointed at a self-hosted OpenAI-compatible endpoint (e.g. Ollama, llama.cpp), so it can operate without contacting Nous servers.

    Pass
  • P4
    Identity continuity

    Hermes has no identity of its own that contacts can verify: after migration they recognize it only through the messaging-platform accounts and A2A peer tokens whose credentials travel in the backup, relying on each platform. Nous is not involved in either case.

    Partial
  • P5
    No kill switch

    No license checks or remote enablement flags were found; update checks are read-only and plugin update polling can be set to 0. The optional Nous free-tier identity only affects Nous-hosted inference and tools.

    Pass
  • P6
    Capability independence

    Tools, memory, skills, cron, MCP and the messaging gateway are executed by the runtime and work with any model, and the optional Nous Tool Gateway services have self-keyed alternatives. Local models must support tool calling to use them.

    Pass

Transparent · Can you see everything the agent is, with ordinary tools?

100%
  • T1
    Open storage format

    State is stored as YAML config, .env, Markdown memory/persona files, JSON cron jobs and a documented SQLite schema (state.db), all readable without Hermes.

    Pass
  • T2
    No hidden instructions

    The system prompt is assembled by open-source code from owner-visible files (SOUL.md, AGENTS.md, memory, skills) and is persisted per session in the state.db `system_prompt` column. Context files discovered mid-session are injected as visible messages.

    Pass
  • T3
    No shadow memory

    Memory and user profile live in local files and SQLite; Nous keeps no profile in a self-hosted setup. Owner-selected external services (inference providers, the optional Honcho memory provider, Nous Portal) process data under their own policies.

    Pass
  • T4
    Complete action history

    Every session's messages, tool calls and tool results are stored in the local state.db, and A2A exchanges in a local audit log, all included in backups. Sessions can be exported with `/export`.

    Pass
  • T5
    Readable logic

    Skills are Markdown (agentskills.io format) with optional scripts, and the runtime, plugins and tools are plain Python source.

    Pass
  • T6
    No third-party influence channel

    No advertising, sponsorship or partner-ranking channel was found in the source. Content comes into context only through owner-installed skills, plugins, MCP servers and connected platforms.

    Pass

Auditable · Can you reconstruct exactly what the agent did?

70%
  • A1
    No unrecorded actions

    The runtime writes each tool-call turn to the session database before any tool runs, and if that write fails it ends the turn without executing the tools. Final text replies are flushed before delivery but are still sent if that write fails, with a later retry.

    Pass
  • A2
    Tamper evidence

    Edits to or deletions from the session database or the A2A audit log are not detectable, because rows and entries carry no hashes, chaining or signatures.

    Fail
  • A3
    Separation from the audited

    With the default local terminal backend, the agent runs as the owner's OS user and its shell and file tools can reach ~/.hermes/state.db. The Docker backend mounts only credentials, skills and caches (read-only) plus the working directory, which keeps the session database out of reach.

    Partial
  • A4
    Readable with ordinary tools

    Session history is in SQLite and logs, including the A2A audit log, are plain text or JSONL under ~/.hermes, readable with sqlite3 or any text tool.

    Pass
  • A5
    Corroborated interactions

    In A2A exchanges, the calling and the receiving Hermes both persist the conversation keyed by the shared A2A context and task ids, and the server also appends each exchange to `a2a_audit.jsonl`, so the two records can be matched. Delegated subagent sessions are linked to their parent session.

    Pass

Verifiable · Can you prove the agent runs what it claims?

50%
  • V1
    Open, reproducible runtime

    The runtime is MIT-licensed (OSI-approved), with exact-pinned dependencies, a uv.lock and a Nix flake. Bit-for-bit reproducible release builds are not documented.

    Partial
  • V2
    Active config is inspectable config

    Active configuration comes from owner-readable config.yaml and .env files, layered over code defaults and environment variables. The layering means the effective config is not always the literal file contents.

    Partial
  • V3
    Attributable messages

    Messages can be attributed only through the platform bot accounts and A2A tokens the agent uses, whose credentials travel in the backup, so recipients rely on each platform's authentication. Outbound messages carry no signature a recipient could check independently; A2A push notifications use an HMAC with a shared secret.

    Partial
  • V4
    Independently checkable record

    The action record carries no integrity data, so no tool can check that it is unaltered.

    Fail
  • V5
    Comparable state

    `hermes backup` and quick snapshots capture the full state as YAML, Markdown, JSON and SQLite, so the owner can compare two snapshots with open tools such as `diff` and SQLite's `sqldiff`. No built-in state digest is provided.

    Pass

Modifiable · Can you change anything, without asking?

100%
  • M1
    Instructions

    Persona (SOUL.md), project instructions (AGENTS.md) and prompt-building code are all owner-editable; the built-in prompt text is in MIT source.

    Pass
  • M2
    Memory

    Memory entries live in editable MEMORY.md and USER.md files, and sessions can be deleted from the local database.

    Pass
  • M3
    Logic

    Skills are editable Markdown files, and the entire runtime can be forked or modified under MIT.

    Pass
  • M4
    Tools and permissions

    Owners can enable or disable toolsets, add MCP servers and plugins, and set deny globs and approval modes, including tools Nous does not provide.

    Pass
  • M5
    Model choice

    `hermes model` switches among Nous Portal, OpenRouter, OpenAI, Anthropic, Bedrock and custom or local endpoints. The skill and tool set is unchanged, provided the model supports tool calling.

    Pass
  • M6
    No gatekeeping

    No license check or paid unlock gates modification. Nous subscriptions only cover hosted inference and Tool Gateway services.

    Pass

Controllable · Is your word final?

83%
  • C1
    Communication boundaries

    The gateway enforces per-platform inbound allowlists and DM pairing, and `A2A_TRUSTED_PEERS` limits inbound peers. No runtime allowlist of outbound recipients was found, and `a2a_call` accepts any A2A endpoint.

    Partial
  • C2
    Approval gates

    A runtime approval gate intercepts dangerous commands and code execution, and owner deny globs block even under --yolo. Writes to instruction files always require approval. The default 'smart' mode lets an auxiliary LLM auto-approve low-risk actions; 'manual' mode always prompts.

    Pass
  • C3
    Immediate halt

    The agent is a local process that the owner can interrupt or kill directly, and the gateway can be stopped by the owner's service manager or CLI with no provider involvement.

    Pass
  • C4
    Data sovereignty

    Source shows OTLP monitoring export disabled by default and diagnostics uploaded to Nous only on an explicit `hermes debug share`. Content goes to the owner-chosen inference provider. Desktop free-tier onboarding can create a Nous identity at first run, and no network-inspection verification was performed.

    Partial
  • C5
    Credential custody

    API keys and OAuth tokens are held locally in .env and auth.json, and site logins in a locally encrypted vault (vault.key). All are inspectable and revocable, and all are included in backups.

    Pass
  • C6
    Full deletion

    All state is local, so deleting ~/.hermes or running `hermes uninstall` removes the agent. Nous retains nothing for self-hosted use; retention by chosen model providers follows their own policies.

    Pass
Something wrong or out of date?

Vendors and the public can dispute any finding with evidence. Disputes and their resolutions are published.

Dispute a finding