u/Froggy_legs

Hermes Agent, Claude, Obsidian and Hindsight walk into a bar...

Hermes Agent, Claude, Obsidian and Hindsight walk into a bar...

(drafted by agents, edited by OP)

...the bartender looks up and says "what is this, some kind of multi-agent setup?" Yes. Yes it is.

Quick rundown of what I've landed on after a few weeks of tinkering, in case it's useful to anyone else here.

The cast

  • Hermes Agent (running on a Mac Mini M4, accessed via Telegram) handles persistent, operational work: cron jobs, scheduled briefings, quick fetch-and-send from my phone.
  • Claude (claude.ai web/desktop) handles complex reasoning, long drafting, anything that benefits from a bigger context window.
  • Obsidian wiki at ~/wiki/ is the synchronous coordination layer. Based on Karpathy's LLM Wiki pattern (the markdown-files-as-knowledge-base idea he posted as a GitHub gist in April). Both agents read and write the same files via a wiki MCP server.
  • Hindsight is the asynchronous memory layer. Both agents write durable facts to the same bank and read from the same observations. Most of what I know about writing good memories came from their best-practices guide. Usage & billing: over the past 3 weeks or so, I've used 1.6M tokens costing <$5.

Wiki vs Hindsight, different jobs

The split that finally clicked: the wiki is for structured documents you'd want to read (rules, protocols, page-shaped knowledge). Hindsight is for facts you'd want surfaced when relevant (one-liners, multi-turn captures, state). If a thing has sections and headings, it goes in the wiki. If it's a fact the agent should remember next month, it goes in Hindsight.

Page 1: ai-as-partner.md — the protocol for two agents editing the same files

Three things to steal:

  1. "Shared rules" pages: only specified pages follow this protocol, pages that are co-created by the agents. They are designated by addingshared-rules: true to its frontmatter. eg the 2 pages described in this post (ai-as-partner.md , hindsight-memory.md**,** as well as SCHEMA.md, etc.
  2. YAML soft-lock. Each shared rules page has a lock: true/false field in frontmatter. Read, set true, edit, set false in the same write. Stale lock (updated &gt;30 min old) gets overridden with a log entry. Not bulletproof, but for two agents that rarely collide, plenty.
  3. Append-only Proposals section with three-party threads. Both agents can add proposals to the bottom without coordinating, because appends don't conflict. Proposals are threaded conversations: Claude, Hermes, and I all comment on the same thread with timestamped markers. When a proposal is resolved (accepted, rejected, deferred), the entire thread is deleted from the page and moved verbatim to log.md under the resolution date, and the page itself is updated with the final decision merged in. Page stays clean, history is preserved with full provenance.
  4. Rules pages stay terse, rationale lives in log.md. Hard 500-line budget per rules page, to ensure the agents don't write novels. The wiki shows current state, the log shows history. Open proposals older than 14 days auto-escalate to me in the Monday briefing.

There's also a division-of-labor table and a handoff protocol for when you ask the wrong agent to do something. Worth writing down because otherwise you re-decide every time.

Domain Owner Reasoning
Long-running automation, cron jobs, scripts Hermes Persistent runtime
Complex coding, reasoning, drafting Claude Larger context, better at hard problems
Wiki page authoring (substantive content) Either
Wiki rule pages (this one, SCHEMA, hindsight-memory) Shared Negotiated via proposals
Hindsight memory writes Both Per rules in hindsight-memory
Email, calendar, real-time data fetching Either Both have access
Weekly wiki maintenance (stale-proposal sweep) Hermes Runs in Sunday weekly-update script

Page 2: hindsight-memory.md — the shared memory write rules

Steal these:

  1. Always set context and timestamp on every retain. Context shapes extraction quality more than I expected. Freeform but specific ("keto decision conversation", not "chat"). Timestamps enable temporal ranking and resolve relative references in later recalls.
  2. Use document_id for clustered facts. It's the upsert mechanism. Stable semantic IDs like cards-rich-uses or morning-routine let you replace the prior version instead of accumulating contradictions. Default to naming one rather than letting the wrapper assign.
  3. Faithful capture, not pre-summarized. Atomic facts can be one line. Multi-turn captures should preserve temporal flow and reasoning, not collapse to the outcome. Pre-summarizing destroys the entity relationships Hindsight's extraction layer needs.
  4. Recall for pinpoint, Reflect for synthesis. Default budget mid for recall, low for reflect. Start with recall, escalate only if results are fragmentary.
  5. Don't retain and recall in the same turn. Retain is async, the fact isn't available yet. Keep it in conversation if you need it now.
  6. Prefix with [claude] or [hermes] so contributions stay distinguishable in audits. Tags go through the tags parameter now, not inline.

A few other things worth noting

  • The Hindsight wrapper recently exposed its full parameter surface (context, tags, document_id, timestamp, etc.). If you're still embedding tags in content strings as a workaround, you can stop.
  • Single-user bank, so the tag-leakage concerns in the Hindsight best-practices guide mostly don't apply. Default tags_match: "any" is almost always right.
  • Each agent keeps a local mirror of the rules so both stay functional when the wiki is unreachable. The wiki is canonical.
  • The whole system assumes I'm the arbiter when the agents disagree. Worth being honest about that, two AI agents will not negotiate a conflict resolution on their own.

Curious how others here are coordinating across agents, especially if you have Hermes talking to other Hermes instances or non-Claude assistants. And if anyone's done something smarter than YAML soft-locks for the concurrent-edit problem, I'd love to hear it.

u/Froggy_legs — 3 days ago