Skip to content

Hermes

Hermes Agent is a personal-agent harness from Nous Research. Hansard imports its local profile stores and identifies routed models by their own model company.

Source Use it for
hermes CLI, desktop, web, API, and messaging conversations saved in local Hermes profiles.

Hermes stores conversations in state.db beneath its home directory. The default is ~/.hermes on macOS and Linux, or %LOCALAPPDATA%/hermes on Windows; Hansard also checks the historical Windows ~/.hermes location. HERMES_HOME selects a custom home. Named profiles live below profiles/<name> and each has its own database. Set HANSARD_HERMES_ROOTS to a path-separated list of homes to import several installations. Profile identities remain separate even if they contain the same native session ID.

Hansard reads coherent SQLite snapshots, including committed WAL records. It merges an unambiguous compression continuation into its original conversation and keeps branches and delegated agents separate. Repeated compaction copies count once. A resumed conversation updates the same archive entry, and changes to another session in the database do not reimport an unchanged conversation.

Fallback sessions/<id>.jsonl files are also read. A fallback tail is joined to its SQLite conversation when the ID matches. Native clients sharing one store do not create duplicate surface imports. Remote deployments need their stores made available locally; Hansard does not connect to messaging accounts.

Terminal window
hansard import --source hermes --since all
hansard config sources enable hermes

The watcher observes database and fallback-log changes. An unsupported database schema produces an import error, so a fallback tail cannot silently replace a conversation whose main store could not be read.

  1. When the import finishes, open Conversations and selectFilter & sort.
  2. Set Source to Hermes and setTime to the window you imported. UseFolder to narrow the list when you use this harness in several projects.
  3. Select a conversation to check its messages, tool calls, files, commits, model, and token usage.

To keep archiving new sessions from a local harness, openSettings → Imports. Automaticfollows every supported harness installed on this computer.Custom lets you turn individual harnesses on or off. Cloud sources and account exports never run from here; each needs its own import command. If a conversation you expect is missing after you reset the filters, run the import command on this page again with --explain-skips where the source supports it.

Check a conversation’s tools and numbered edit diffs, then review Hermes in Stats. Main-loop usage and recorded auxiliary calls, such as title generation, vision, and compression, contribute once. Historical usage without a model ledger remains under Unknown model. Scheduled runs have no human activity; direct one-shot prompts remain human conversations.

  • Human prompts, assistant replies, recorded reasoning, injected context, and system prompts.
  • Tool arguments, results, MCP names, errors, and recorded edit diffs.
  • Input, output, cache, and reasoning tokens, with per-model and auxiliary-task attribution when recorded.
  • Reported actual costs or estimates, timestamps, titles, workspace, recorded configuration, and delegate links.
  • Native embedded media blocks when present, and remote attachment descriptors without downloading them.
  • Coherent raw databases, fallback logs, and matching optional moa-traces/<id>.jsonl files.

The audited database generations are one through thirty. Newer schemas are rejected until audited. The last model configuration does not identify the historical reasoning effort of each request. Partial recorded costs remain in metadata; Hansard does not present them as a complete session charge. Output tokens already include reasoning, and input tokens already exclude cache reads and writes.

Current Hermes persistence often reduces media to text or [screenshot], so original image bytes may be unavailable. Missing media is not fetched. Fallback logs have no reliable model, usage, workspace, or surface metadata; missing clocks are marked as estimated. The legacy gateway routing index, pending message recovery spool, batch/RL trajectory exports, custom MoA directories, and plugin memory stores are not imported separately. Credentials, provider configuration, locks, and derived indexes are excluded from memory backup. Unknown message roles and content blocks are counted in metadata and preserved in raw source files.

An isolated upstream-checkout CLI trial covers reads, edits, usage, resume, and a persistent-memory write. Desktop, web, messaging, live compression, and live delegated execution remain unverified; fixtures exercise their shared storage shapes and lineage rules.

Terminal window
hansard import --source hermes --since all
hansard index rebuild

Hansard never rewrites Hermes history. The viewer’s resume command selects the recorded HERMES_HOME and latest native segment with hermes --resume <id>. Memories are refreshed independently by the regular backup pass.