How Hermes remembers

Unofficial concept by Fluxora · not affiliated with Nous ResearchUnofficial

01/10 · The promise

How Hermes remembers.

An unofficial look at how Hermes Agent remembers. Follow one fact.

02/10 · The moment

Tell it something worth keeping.

Pick one, or type your own. For now, it lives in the conversation.

Your text stays in this page. It is never stored or sent.

03/10 · Written

Some things deserve to stay.

Hermes writes it to USER.md with its memory tool. The file has a hard limit.

~/.hermes/memories/USER.md
memory(action="add", target="user", …)

1,277 / 1,375 chars

04/10 · A skill

Work done well becomes a skill.

Hermes can save a procedure as a skill, loaded only when it's relevant.

~/.hermes/skills/retry-wrapper/SKILL.md
# Retry wrapper
Transient API failures: wrap the call with withRetry from @/lib/retry, exponential backoff + jitter, 3 retries.

05/10 · Session ends

Everything else goes to the roots.

Every session is kept in state.db, searchable. None of it is loaded into the prompt.

~/.hermes/state.db
  1. todayRetry wrapper
  2. yesterdayAPI debugging
  3. 2 days agoOrders client
  4. last weekPayments retries

06/10 · Next session

A new session starts with what matters.

USER.md and MEMORY.md load once, as a snapshot, before you type.

Session start · loaded once

USER.md1,277 / 1,375

MEMORY.md1,746 / 2,200

07/10 · The payoff

Now watch it make a difference.

One remembered preference and one skill shape the answer.

The orders client keeps timing out.

TSHermes · illustrative

import { withRetry } from '@/lib/retry';

const client = createOrdersClient();
const order = await withRetry(
  () => client.createOrder(payload),
  { retries: 3, baseDelay: 500 }
);

That should handle transient timeouts.

08/10 · Recall

The past isn't loaded. It's searchable.

session_search returns the actual stored messages, not a summary.

What did we decide about the payments retries last week?

session_search(query="payments retries")1 result

last week · Payments retries · you

Let's retry failed captures at most 3 times with backoff, and never retry a hard decline.

09/10 · Provider

You can go deeper.

One optional provider, like Honcho, can run alongside the built-in memory.

One provider at a time, set in memory.provider.

built inUSER.md · MEMORY.md

providerHoncho · optional

10/10 · The gift

Take the tree with you.

The Hermes docs, and a community guide.

Concept by Fluxora. Unofficial, not affiliated with Nous Research. Type: Oswald and IBM Plex, under the SIL Open Font License (Oswald, Plex).

Credits

Unofficial concept by Fluxora · Not affiliated with Nous Research.

Ideas from the Hermes community. Facts about Hermes memory from the Hermes docs.

Type: Oswald and IBM Plex, SIL Open Font License (Oswald, Plex).

I use pnpm, not npm.
I use pnpm, not npm.

USER.md

94% — 1,299/1,375 chars

retry-wrapper/SKILL.md

written by Hermes

when: API returns 429

retry: 3 times

backoff: 500 ms, doubling

state.db

searchable · not loaded
SQLite + FTS5

New session

Retry wrapper

retry-wrapper/SKILL.md

Use pnpm

use-pnpm/SKILL.md

Your preferences

USER.md

Orders client

orders-client/SKILL.md

Debug helper

debug-helper/SKILL.md

Illustrative: the skills Hermes wrote, and your preferences
Make the order call more reliable.
USER.md
retry-wrapper/SKILL.md

Hermes Agent

TSHermes · illustrative

pnpm add @lib/retry
import { withRetry } from '@lib/retry'

await withRetry(
  () => client.createOrder(payload),
  { retries: 3 }
);

From 3 days ago · session_search

“500 ms base delay, 3 retries, exponential backoff.”

Optional provider
(e.g. Honcho)

plugin catalog · illustrative

An unofficial Hermes Agent explainer01 / 10 · The start

Every conversation leaves a trace.

How Hermes Agent remembers you.

02 / 10 · The moment

You mention something that matters.

“I use pnpm, not npm.”

03 / 10 · Written

Hermes writes it down.

A short note in USER.md. Kept small on purpose.

04 / 10 · Skill

Hard work becomes a skill.

After a complex task, it saves how.

05 / 10 · Archive

Everything else is kept, not carried.

Past sessions wait in an archive, searchable.

06 / 10 · Next session

Tomorrow, it starts already knowing you.

Memory loads at the start of every session.

07 / 10 · The payoff

Your preference. Its skill. One answer.

pnpm, inside the retry wrapper. Unprompted.

08 / 10 · Recall

Need the exact words? It finds them.

session_search returns the original message.

09 / 10 · Go deeper

Want more? Add a memory provider.

Optional. One at a time, alongside built-in memory.

10 / 10 · The gift

Every skill it learned. One tree.

Your agent’s memory, made visible.