/journey and the Self-Improvement Loop
- Explain the distinction between memory and skills as two complementary tracks of agent learning
- Use /journey to review accumulated memories and skills over time
- Configure write_approval to gate agent-authored memory and skill entries before they affect future sessions
The Agent That Grows With You
Hermes' tagline is "the agent that grows with you." What does that actually mean in practice? It means that over time — across sessions, across weeks, across months of use — Hermes accumulates knowledge about you, your environment, and your workflows. Not as training data for the underlying model, but as files in your home directory that are injected into every new session. The agent you use today is more capable than the one you used last month, because it has more context about what matters to you.
This accumulation happens through two complementary tracks: memory and skills. Understanding how they work together is essential to understanding the self-improvement loop, and to using /journey — the v0.18 command that makes the accumulation visible.
Memory vs. Skills: Two Tracks with Different Jobs
The Hermes documentation describes memory and skills as solving different parts of the same problem: retaining knowledge across sessions.
Memory stores small, durable facts that should be in context at the start of every session. The MEMORY.md file (~800 tokens, ~2,200 character limit) holds things like your preferred tech stack, recurring project conventions, facts about your environment, and lessons the agent has learned from past mistakes. The USER.md file (~500 tokens) holds your preferences, communication style, and expectations. Both files are injected into the system prompt as a frozen snapshot at session start. The agent reads them before you say anything.
Skills store longer procedures that should only load when they are relevant to the current task. A skill for deploying your specific application, a skill for your team's code review process, a skill for your research methodology — these are too long for the system prompt. They are loaded on demand via the progressive disclosure system (Level 0 metadata → Level 1 full content → Level 2 reference files). Zero tokens for sessions where the skill is not relevant. Full content when it is.
The interaction between these two tracks is the self-improvement loop: the agent learns a new fact about your environment, writes it to MEMORY.md; it observes a non-trivial workflow, saves it as a skill; both persist and are available in every future session.
/journey: Making the Accumulation Visible
Before v0.18, the accumulation was real but invisible. You knew, in the abstract, that Hermes was building up memory and skills — but you had no way to see the timeline of that accumulation. When did a particular memory entry get added? How many skills have accumulated in the past month? Which session produced the deploy skill you rely on daily?
The /journey command provides a visual timeline of your agent's accumulated memories and skills, displayed in chronological order. Each entry shows what was learned, when, and from which session. You can interact with the timeline: edit entries directly from the view, remove entries that are stale or incorrect, and see which skills were authored automatically versus manually written.
In Hermes Desktop (covered in Lesson 11), the memory graph provides an additional visualization: a playable radial timeline that shows the relationships between memory entries and the skills they prompted. This is a Desktop-specific feature — the CLI /journey command provides the textual timeline; the Desktop memory graph adds the relational view.
The Consent-Aware Learning Loop
The self-improvement loop is not automatic and uncontrolled. Hermes is designed around consent — the agent asks before writing to memory, and you control whether agent-authored skills are saved immediately or held for review.
The write_approval flag for memory works analogously to the skills write_approval covered in Lesson 6. When enabled, any memory write — whether the agent wants to add a new MEMORY.md entry, update an existing one, or remove a stale one — enters a pending queue for your review. You see the proposed change, compare it to the current memory state, and approve or reject it before it affects future sessions.
This matters most when the agent is making inferences about your preferences that might be wrong. If the agent observes you debugging a specific file repeatedly and decides to memorize a convention that it inferred from that behavior, you want the opportunity to verify the inference before it becomes a standing fact injected into every future session.
session_search: The Long-Term Archive
Beyond MEMORY.md and skills, Hermes stores every conversation in a SQLite database at ~/.hermes/state.db with full-text search (FTS5). The session_search tool lets the agent search this archive for specific discussions, decisions, or context from weeks or months ago — even when that context is too old to appear in MEMORY.md.
This is the long-term complement to active memory. MEMORY.md is what the agent knows at the start of every session. The session archive is everything that has ever been discussed. When a question comes up that you answered weeks ago, the agent can retrieve that context without you having to re-explain it. The archive grows indefinitely; the MEMORY.md is managed carefully within its character limit.
Pruning: Knowing When to Remove
The self-improvement loop works best when the memory and skills it accumulates remain accurate and relevant. Old entries that describe projects you no longer work on, tools you no longer use, or conventions that have changed since the entry was written add noise to every session without adding value.
Use /journey periodically to audit accumulated entries. A good rule of thumb: entries older than six months that describe active projects deserve a review. Entries about one-off tasks that are clearly finished can be removed. Skills for tools you no longer use can be disabled or deleted. The value of the self-improvement loop is proportional to the quality of what it has accumulated, not the quantity.
- Memory (MEMORY.md/USER.md) stores small always-in-context facts; skills store longer procedures loaded only when relevant — two complementary tracks that together form the self-improvement loop.
- /journey provides a chronological visual timeline of accumulated memories and skills — each entry shows what was learned, when, and from which session, with in-line edit and remove controls.
- The consent-aware learning loop — controlled by write_approval for both memory and skills — lets you review agent-authored entries before they affect future sessions, preventing wrong inferences from becoming standing facts.
- session_search provides full-text search over the complete conversation archive in ~/.hermes/state.db — the long-term complement to MEMORY.md, which is managed within a strict character limit.
- The self-improvement loop's value is proportional to the quality of what it accumulates — use /journey periodically to audit and prune stale entries; old accurate memory beats large inaccurate memory.