{"slug": "openclaw-hermes-article-on-agent-memory-options", "title": "OpenClaw/Hermes Article on agent memory options", "summary": "OpenClaw and Hermes-Agent developers have four memory options for action-taking agents: plain markdown files, Obsidian, mem0, and local vector memory. The choice depends on whether the agent needs simple operational notes, human-editable knowledge bases, automated long-term memory, or semantic retrieval for large datasets. Bad memory can cause agents to take wrong actions, so each option addresses specific tradeoffs between simplicity, automation, and cleanup.", "body_md": "# Memory Options for Hermes-Agent and OpenClaw-Style Agents\n\nAgent memory gets sold like a research problem. Most of the time it is not. For [Hermes-Agent](https://github.com/NousResearch/hermes-agent), [OpenClaw](https://www.npmjs.com/package/openclaw), and other agents that actually take actions, the job is simple: remember what was decided, what is still being explored, and what should be reused next time.\n\n## What Memory Solves\n\nWithout memory, action agents loop. They rediscover the same facts, reopen settled decisions, repeat research, forget user preferences, and spend context on things they should already know.\n\nBefore the agent touches tools, memory should answer four plain questions:\n\n```\nWhat has already been decided?\nWhat is still just scratch work?\nWhat user or project preferences should persist?\nWhat context should the agent check before acting?\n```\n\nThis matters more when the agent is not just chatting. A Hermes-Agent or OpenClaw-style workflow might send email, manage a calendar, check systems, run automations, or coordinate across several tools.\n\nBad memory is not only a token problem. It can make the agent take the wrong action.\n\n## Option 1: plain markdown files\n\nStart here unless you already know why you cannot. A few small files usually beat a memory platform no one understands.\n\n```\nmemory/\n  decisions.md\n  scratchpad.md\n  preferences.md\n  runbook.md\n```\n\nThe split is simple:\n\n**decisions.md:** settled decisions the agent should not reopen.**scratchpad.md:** temporary notes, half-formed ideas, research trails, and anything not final.**preferences.md:** durable user or project preferences.**runbook.md:** repeatable commands, debugging workflows, deployment notes, and known fixes.\n\nExample preferences:\n\n```\nUse Python 3.13.\nPrefer uv for Python commands.\nPrefer polars over pandas.\nDo not add unnecessary validation helpers.\nKeep generated code minimal and direct.\n```\n\nThose examples mention [Python 3.13](https://docs.python.org/3.13/), [uv](https://docs.astral.sh/uv/), and [Polars](https://pola.rs/), but the point is not the tools. The point is that preferences are short, boring, and easy to check.\n\nFor a lot of Hermes-Agent and OpenClaw-style work, this is enough. The agent just needs to read the small files before it acts.\n\nThe catch: keep the files small. If memory turns into a 500-page junk drawer, the agent will skim it and miss the important part.\n\n## Option 2: Obsidian\n\n[Obsidian](https://obsidian.md/) is great when you want a human-readable knowledge base that people also enjoy editing.\n\nUse it for project notes, linked research, architecture notes, manual review, long-term documentation, and human-edited memory.\n\nDo not reach for it just because the word memory is involved. If the agent only needs quick operational notes, Obsidian can be more workspace than you need.\n\nIt is a good fit for an OpenClaw-style workspace where the human and the agent both maintain notes. It is less useful when the agent only needs reminders like:\n\n- Never reopen this decision.\n- Always use this tool first.\n- This user prefers this workflow.\n- This integration has this known bug.\n\nFor that, plain markdown is faster and cleaner.\n\n## Option 3: mem0\n\n[mem0](https://mem0.ai/) makes sense when memory needs to behave like a service instead of a few files.\n\nIt is useful for long-term user preferences, repeated conversations, multi-agent memory, semantic retrieval, user-level memory across projects, and personalization.\n\nFor Hermes-Agent or OpenClaw-style assistants, reach for mem0 when the agent has to remember across many conversations and pull the right memory back automatically.\n\nThe tradeoff is cleanup. Once memory is automated, you need rules for what gets saved, what gets retrieved, and how wrong memories get corrected.\n\nA system that quietly remembers the wrong thing is worse than no memory.\n\n## Option 4: local vector memory\n\nLocal vector memory is the next step when the notes are too big to read directly.\n\n```\nAgent writes structured notes\n        ↓\nMarkdown or JSON files\n        ↓\nEmbedding job\n        ↓\nChromaDB, LanceDB, or similar\n        ↓\nAgent retrieves relevant memories later\n```\n\nCommon pieces here are [ChromaDB](https://www.trychroma.com/), [LanceDB](https://lancedb.com/), local embeddings through [Ollama](https://ollama.com/), [Qwen](https://huggingface.co/Qwen) embedding models, and sometimes a reranker.\n\nThe win is retrieval. The agent can pull only the relevant memory instead of stuffing every note into the prompt.\n\nThis is a good fit for large project history, many users, many tools, lots of previous tasks, semantic search over past work, and lower token usage.\n\nThe cost is auditability. With markdown, you open the file and see what the agent knows. With vector memory, you need logs.\n\nAt minimum, log this:\n\n```\nMemory query\nRetrieved memories\nSimilarity score\nReranker score\nFinal memories injected into context\nNew memories written\nMemories updated or deleted\n```\n\nWithout retrieval logs, you are trusting a black box.\n\n## Option 5: docs or wiki memory\n\nFor bigger operational knowledge, use a real docs system. That might be [BookStack](https://www.bookstackapp.com/), a docs folder, a wiki, or an internal knowledge base.\n\nThis is where architecture, runbooks, production procedures, integration docs, system design, operational policies, and incident notes belong.\n\nDo not make the wiki replace short-term agent memory. Keep the boundary clear:\n\n**decisions.md:** short, active memory.**scratchpad.md:** temporary thinking.**preferences.md:** durable user or project preferences.**docs/wiki:** long-lived operational knowledge.\n\nFor OpenClaw-style agents, that distinction matters. An old brainstorm should not carry the same weight as a production runbook.\n\n## Option 6: MCP memory tools\n\nIf your agent already supports [MCP](https://modelcontextprotocol.io/) tool access, a memory server can be clean. The agent calls memory as a tool instead of loading every memory into the prompt.\n\nThat helps when the agent needs to search memory mid-task.\n\nUse it for tool-based memory access, local memory servers, shared memory between agents, retrieval during long conversations, cleaner prompts, and OpenClaw or Hermes-style action workflows.\n\nThe risk is invisible memory. For serious workflows, the agent should show what it used before acting:\n\n```\nSearched memory for: user email preferences\nRetrieved: prefers short direct replies\nRetrieved: never schedule meetings before 9 AM\nIgnored: old scratchpad note from archived project\n```\n\nThat makes memory inspectable instead of magical.\n\n## The part that matters: decisions vs scratchpad\n\nIf you only take one idea from this article, take this one: final decisions and temporary thinking cannot live in the same bucket.\n\n### decisions.md\n\nFor things that should not be reopened.\n\n```\n## Decisions\n\n- Use Hermes-Agent for this workflow.\n- Keep memory local unless the user explicitly wants hosted memory.\n- Do not reopen settled architecture decisions unless asked.\n- Use markdown memory before adding vector search.\n- Ask before storing sensitive personal information.\n```\n\n### scratchpad.md\n\nFor things still being explored.\n\n```\n## Scratchpad\n\n- Testing whether mem0 is worth adding.\n- Comparing LanceDB and ChromaDB for local retrieval.\n- Need to test MCP memory server behavior during long-running tasks.\n- Might split user preferences from project preferences.\n```\n\nThen give the agent a hard rule:\n\n```\nBefore starting work, read decisions.md and preferences.md.\n\nDo not reopen anything in decisions.md unless the user explicitly asks.\n\nUse scratchpad.md only as temporary context.\n\nWhen scratchpad information becomes final, move it into decisions.md.\n\nAt the end of the task, summarize any new durable memory candidates.\n```\n\nThis one rule removes a surprising amount of agent looping.\n\n## Suggested memory layout\n\nA clean Hermes-Agent or OpenClaw-style project can start with this:\n\n```\n.agent/\n  memory/\n    decisions.md\n    scratchpad.md\n    preferences.md\n    runbook.md\n    audit.log\n```\n\n**decisions.md:** final decisions.**scratchpad.md:** temporary notes.**preferences.md:** user and project preferences.**runbook.md:** operational steps and repeatable procedures.**audit.log:** what memory was read, retrieved, written, or ignored.\n\nFor many users, this is enough before adding mem0, ChromaDB, LanceDB, or an MCP memory server.\n\n## How to audit agent memory\n\nMemory needs a paper trail. For each agent run, log something like:\n\n```\nMemory read:\n- decisions.md\n- preferences.md\n\nMemory retrieved:\n- User prefers short direct replies.\n- Project uses Python 3.13.\n- Do not reopen the database choice.\n\nMemory written:\n- Added decision: use LanceDB for local semantic memory test.\n\nMemory ignored:\n- Old scratchpad note about testing ChromaDB first.\n```\n\nFor vector memory, log the search query, top retrieved memories, scores, reranked results, final injected memories, new memories inserted, and old memories updated.\n\nThis matters for OpenClaw-style agents because they may take real actions. You want to know why the agent believed something before it acted.\n\n## When markdown is enough\n\n- You want easy audits.\n- You only have a few important memories.\n- You want humans to edit memory directly.\n- Most memory is project decisions.\n- You do not want another service to maintain.\n\nPlain files are underrated. They are boring, inspectable, portable, and hard to overcomplicate.\n\n## When to upgrade\n\n- The agent has too many notes to read directly.\n- You need semantic search.\n- You have multiple agents sharing memory.\n- You need user memory across many conversations.\n- You want automatic retrieval.\n- You need metadata, scoring, or memory expiration.\n\n## Recommended starting point\n\nFor Hermes-Agent or OpenClaw-style workflows, start with this:\n\n```\n.agent/memory/\n  decisions.md\n  scratchpad.md\n  preferences.md\n  runbook.md\n```\n\nAdd this instruction to the agent:\n\n```\nBefore starting a task, read .agent/memory/decisions.md and .agent/memory/preferences.md.\n\nDo not reopen settled decisions unless the user explicitly asks.\n\nUse scratchpad.md for temporary notes only.\n\nAt the end of each task, summarize any new durable memory and write it to the correct file.\n\nLog what memory was read, used, written, or ignored.\n```\n\nThat gives you shared memory without turning it into a memory science project.\n\nThe trick is not the database. It is the boundary.\n\n```\nDecisions are final.\nScratchpad is temporary.\nPreferences are durable.\nRunbooks are operational.\nAudit logs explain what happened.\n```\n\nOnce that structure works, you can plug in mem0, LanceDB, ChromaDB, Obsidian, or an MCP memory server later.", "url": "https://wpnews.pro/news/openclaw-hermes-article-on-agent-memory-options", "canonical_source": "https://yolo-auto.com/news/memory-options-for-agents", "published_at": "2026-07-07 16:17:29+00:00", "updated_at": "2026-07-07 16:30:20.303779+00:00", "lang": "en", "topics": ["ai-agents", "developer-tools", "ai-tools"], "entities": ["NousResearch", "Hermes-Agent", "OpenClaw", "Obsidian", "mem0", "Python", "uv", "Polars"], "alternates": {"html": "https://wpnews.pro/news/openclaw-hermes-article-on-agent-memory-options", "markdown": "https://wpnews.pro/news/openclaw-hermes-article-on-agent-memory-options.md", "text": "https://wpnews.pro/news/openclaw-hermes-article-on-agent-memory-options.txt", "jsonld": "https://wpnews.pro/news/openclaw-hermes-article-on-agent-memory-options.jsonld"}}