<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: James Wang</title>
    <description>The latest articles on DEV Community by James Wang (@james_wang).</description>
    <link>https://dev.to/james_wang</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3629877%2F296a3f12-f41a-4c2e-b952-890a2833213f.jpg</url>
      <title>DEV Community: James Wang</title>
      <link>https://dev.to/james_wang</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/james_wang"/>
    <language>en</language>
    <item>
      <title>Shared Long-Term Memory for Claude Code and Codex, Fully Local: A Hindsight Daemon Setup Guide</title>
      <dc:creator>James Wang</dc:creator>
      <pubDate>Fri, 23 Oct 2026 08:30:49 +0000</pubDate>
      <link>https://dev.to/james_wang_5aaab811177486/shared-long-term-memory-for-claude-code-and-codex-fully-local-a-hindsight-daemon-setup-guide-50hn</link>
      <guid>https://dev.to/james_wang_5aaab811177486/shared-long-term-memory-for-claude-code-and-codex-fully-local-a-hindsight-daemon-setup-guide-50hn</guid>
      <description>&lt;p&gt;This is a start-to-finish guide to giving &lt;strong&gt;Claude Code and Codex CLI a shared long-term memory that runs entirely on your Mac&lt;/strong&gt;. It uses &lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;Hindsight&lt;/a&gt;, an MIT-licensed agent-memory engine, in &lt;strong&gt;local daemon mode&lt;/strong&gt;. Your &lt;strong&gt;ChatGPT plan&lt;/strong&gt; (model &lt;code&gt;gpt-6-luna&lt;/code&gt;) does the memory extraction, the database lives in a folder you choose, and only the repositories you list are ever remembered.&lt;/p&gt;

&lt;p&gt;I wrote it as the runbook for setting up a second laptop. Follow the steps in order.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Versions used (Oct 2026): &lt;code&gt;@vectorize-io/hindsight-coding-agents&lt;/code&gt; 0.8.2, &lt;code&gt;hindsight-api&lt;/code&gt; 1.1.0, &lt;code&gt;hindsight&lt;/code&gt; CLI 1.1.0, macOS on Apple Silicon, zsh. Newer releases may differ. See the &lt;a href="https://hindsight.vectorize.io/sdks/integrations/coding-agents" rel="noopener noreferrer"&gt;Coding Agents docs&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What you will have at the end
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Code ─┐  hooks: SessionStart · UserPromptSubmit · Stop
             ├─►  Hindsight daemon (hindsight-embed)   http://127.0.0.1:9077
Codex CLI ───┘  MCP server: hindsight_* tools          │
                                                       ├─ embedded PostgreSQL (pg0)
                                                       │    data in ~/projects/hindsight-data
                                                       └─ LLM: chatgpt provider, gpt-6-luna
hindsight CLI ─────────────────────────────────────────┤
hindsight ui (web control plane, http://localhost:9999)┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One plugin for both agents.&lt;/strong&gt; &lt;code&gt;@vectorize-io/hindsight-coding-agents&lt;/code&gt; installs three hooks, an MCP server with the &lt;code&gt;hindsight_*&lt;/code&gt; tools, and a companion skill into each agent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One memory bank per repository&lt;/strong&gt;, named &lt;code&gt;coding-agent::&amp;lt;repo&amp;gt;&lt;/code&gt;. Claude Code and Codex read and write the same bank, so a decision made in one is visible in the other.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatic capture and recall.&lt;/strong&gt; A session's first prompt gets a memory synthesis injected. Each session is written back when it ends. Git history and a short codebase survey seed every new bank, and the survey re-runs as the code moves on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Five knowledge pages per repo:&lt;/strong&gt; Component map, Conventions and patterns, Core concepts, Key decisions and rationale, and Initiatives and enhancements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opt-in only.&lt;/strong&gt; Repositories you don't list are never touched.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1 — Prerequisites
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Requirement&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;th&gt;Check / install&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code and/or Codex CLI&lt;/td&gt;
&lt;td&gt;The agents being wired&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;claude --version&lt;/code&gt;, &lt;code&gt;codex --version&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Node.js (npx)&lt;/td&gt;
&lt;td&gt;Runs the plugin installer and the hooks&lt;/td&gt;
&lt;td&gt;&lt;code&gt;node --version&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;uv&lt;/td&gt;
&lt;td&gt;The daemon is launched with &lt;code&gt;uvx&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;&lt;code&gt;brew install uv&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rust toolchain, current&lt;/td&gt;
&lt;td&gt;Daemon mode on macOS builds a dependency (&lt;code&gt;litellm&lt;/code&gt;) that has no macOS wheel&lt;/td&gt;
&lt;td&gt;&lt;code&gt;rustup update stable&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT plan that allows usage in third-party apps&lt;/td&gt;
&lt;td&gt;Pays for memory extraction instead of an API key&lt;/td&gt;
&lt;td&gt;Confirmed during sign-in (Step 3)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;hindsight&lt;/code&gt; CLI (recommended)&lt;/td&gt;
&lt;td&gt;Inspect banks, refresh pages, launch the web UI&lt;/td&gt;
&lt;td&gt;`curl -fsSL &lt;a href="https://hindsight.vectorize.io/get-cli" rel="noopener noreferrer"&gt;https://hindsight.vectorize.io/get-cli&lt;/a&gt; \&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 2 — Write the config file first
&lt;/h2&gt;

&lt;p&gt;Create {% raw %}&lt;code&gt;~/.hindsight/coding-agent.json&lt;/code&gt; &lt;strong&gt;before&lt;/strong&gt; installing, so the first session already follows your rules:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"optInOnly"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"optInPaths"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"~/projects/my-repo"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pageTriggerCron"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"H * * * *"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"surveyRefreshCommits"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;600 ~/.hindsight/coding-agent.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What each key does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;optInOnly: true&lt;/code&gt;&lt;/strong&gt;: memory is off everywhere by default. A repository outside &lt;code&gt;optInPaths&lt;/code&gt; is inert: no bank is created, nothing is retained, and nothing is seeded.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;optInPaths&lt;/code&gt;&lt;/strong&gt;: path prefixes, with &lt;code&gt;~&lt;/code&gt; expanded. &lt;code&gt;~/projects/my-repo&lt;/code&gt; approves that repo and its git worktrees. &lt;code&gt;~/projects&lt;/code&gt; would approve every repo under it, each with its own bank. To add a repo later, append its path; there is nothing to reinstall.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;pageTriggerCron: "H * * * *"&lt;/code&gt;&lt;/strong&gt;: refreshes each knowledge page at most &lt;strong&gt;once an hour&lt;/strong&gt;. This is the default; writing it out makes it easy to change. &lt;code&gt;H&lt;/code&gt; is replaced by a value hashed from the bank and page name, so pages refresh at different minutes instead of all at once. A refresh is skipped when nothing new arrived. Each refresh is one LLM synthesis per page. With a local daemon that comes out of your ChatGPT plan, so hourly is affordable. Use &lt;code&gt;"H H * * *"&lt;/code&gt; (once a day) if you want to save plan usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;surveyRefreshCommits: 20&lt;/code&gt;&lt;/strong&gt;: the codebase survey that seeds a new bank's structural knowledge &lt;strong&gt;re-runs whenever 20 new commits have landed&lt;/strong&gt; since the last survey. This is the default. In Claude Code each survey is a headless &lt;code&gt;claude -p --model haiku&lt;/code&gt; run capped at $2 (&lt;code&gt;surveyModel&lt;/code&gt;, &lt;code&gt;surveyBudgetUsd&lt;/code&gt;). In Codex it runs through Codex itself. Set it to &lt;code&gt;0&lt;/code&gt; to survey each repo only once, when it is first opened. Busy repos will otherwise keep re-surveying.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The installer adds &lt;code&gt;"serverMode": "daemon"&lt;/code&gt; to this file in Step 5.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;On a company laptop:&lt;/strong&gt; list only repositories you are allowed to process this way. With the daemon, memory stays on disk locally, but the extraction step still sends transcript text to your LLM provider (OpenAI, through your ChatGPT plan). Each laptop also has &lt;strong&gt;its own&lt;/strong&gt; memory. Two daemons don't sync.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Opt-in list or every repo?
&lt;/h3&gt;

&lt;p&gt;The config file supports two modes. Pick one per machine:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Config&lt;/th&gt;
&lt;th&gt;When to use it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Opt-in only&lt;/strong&gt; (allowlist)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;"optInOnly": true&lt;/code&gt; + &lt;code&gt;"optInPaths": [...]&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;A work laptop, or any machine where only some repositories may be processed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;strong&gt;Every repo&lt;/strong&gt; (denylist)&lt;/td&gt;
&lt;td&gt;Remove &lt;code&gt;optInOnly&lt;/code&gt; and &lt;code&gt;optInPaths&lt;/code&gt; entirely; exclude individual repos with &lt;code&gt;banks.&amp;lt;id&amp;gt;.disabled&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;A personal machine where you want memory everywhere&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Switching from opt-in to every repo means deleting the two keys:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"serverMode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"daemon"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pageTriggerCron"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"H * * * *"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"surveyRefreshCommits"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"banks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coding-agent::private-notes"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The change applies at your next prompt, because the hooks re-read the file on every call. MCP tools pick it up in the next session. From then on, the first session in any repo creates its &lt;code&gt;coding-agent::&amp;lt;repo&amp;gt;&lt;/code&gt; bank, seeds it from git history (the most recent commits, 300 by default), and runs a codebase survey. The survey runs again every &lt;code&gt;surveyRefreshCommits&lt;/code&gt; (20) new commits. In Claude Code each survey is a &lt;code&gt;claude -p --model haiku&lt;/code&gt; run with a $2 budget cap. Every repo's transcripts now go to your extraction LLM. With a local daemon the storage stays on your Mac, but the extraction still happens at the provider. Disable the repos where that is not acceptable.&lt;/p&gt;

&lt;p&gt;Optional per-repo controls live in the same file, keyed by bank id:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"banks"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coding-agent::some-repo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"coding-agent::big-monorepo"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"gitIngest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"full"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"retainSessions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 3 — Sign Hindsight in to your ChatGPT plan
&lt;/h2&gt;

&lt;p&gt;Hindsight's &lt;code&gt;chatgpt&lt;/code&gt; provider uses OpenAI's official &lt;em&gt;Sign in with ChatGPT&lt;/em&gt; flow. Hindsight registers as its own OAuth client and stores its &lt;strong&gt;own&lt;/strong&gt; credentials, separate from the Codex CLI's login.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx &lt;span class="nt"&gt;--from&lt;/span&gt; hindsight-api-slim hindsight-admin chatgpt login
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A browser window opens. Sign in and &lt;strong&gt;approve plan usage&lt;/strong&gt;. The command waits for the callback on &lt;code&gt;127.0.0.1:1455&lt;/code&gt;, then saves &lt;code&gt;~/.hindsight/chatgpt/credentials.json&lt;/code&gt; with mode &lt;code&gt;0600&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You may see warnings that &lt;code&gt;sentence-transformers&lt;/code&gt; is not installed. They come from running the admin tool out of the slim package and do not affect sign-in.&lt;/p&gt;

&lt;p&gt;Confirm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx &lt;span class="nt"&gt;--from&lt;/span&gt; hindsight-api-slim hindsight-admin chatgpt status
&lt;span class="c"&gt;# Signed in: yes&lt;/span&gt;
&lt;span class="c"&gt;# Plan usage enabled: yes&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Tokens refresh automatically. Usage counts against your ChatGPT plan and shows at &lt;a href="https://chatgpt.com/settings/usage" rel="noopener noreferrer"&gt;https://chatgpt.com/settings/usage&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 — Pin the provider and model in your shell
&lt;/h2&gt;

&lt;p&gt;Add to &lt;code&gt;~/.zshrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Hindsight daemon: extract memories with the ChatGPT plan, model pinned&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;HINDSIGHT_API_LLM_PROVIDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;chatgpt
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;HINDSIGHT_API_LLM_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;gpt-6-luna
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open a &lt;strong&gt;new&lt;/strong&gt; terminal and check:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HINDSIGHT_API_LLM_PROVIDER&lt;/span&gt;&lt;span class="s2"&gt; / &lt;/span&gt;&lt;span class="nv"&gt;$HINDSIGHT_API_LLM_MODEL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="c"&gt;# chatgpt / gpt-6-luna&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Why set both explicitly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Provider.&lt;/strong&gt; When the daemon starts, the plugin chooses the provider in this order: &lt;code&gt;HINDSIGHT_API_LLM_PROVIDER&lt;/code&gt;, then whichever of &lt;code&gt;OPENAI_API_KEY&lt;/code&gt;, &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;, &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;, &lt;code&gt;GROQ_API_KEY&lt;/code&gt; is set first, then &lt;code&gt;claude-code&lt;/code&gt; if the &lt;code&gt;claude&lt;/code&gt; CLI is on &lt;code&gt;PATH&lt;/code&gt;. Setting it explicitly guarantees &lt;code&gt;chatgpt&lt;/code&gt;, even if an API key happens to be in your environment.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Model.&lt;/strong&gt; &lt;code&gt;gpt-6-luna&lt;/code&gt; is the &lt;code&gt;chatgpt&lt;/code&gt; provider's default today. Pinning it keeps it if a future release changes the default. The runtime updates itself daily.&lt;/li&gt;
&lt;li&gt;All &lt;code&gt;HINDSIGHT_API_*&lt;/code&gt; variables in the environment that starts the daemon are passed on to it. To use a different model only for extraction, use the per-operation variables (for example &lt;code&gt;HINDSIGHT_API_RETAIN_LLM_MODEL&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5 — Install the plugin in daemon mode
&lt;/h2&gt;

&lt;p&gt;From that new terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @vectorize-io/hindsight-coding-agents &lt;span class="nb"&gt;install &lt;/span&gt;claude-code codex &lt;span class="nt"&gt;--server&lt;/span&gt; daemon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output should include &lt;code&gt;local extraction will use chatgpt (from HINDSIGHT_API_LLM_PROVIDER)&lt;/code&gt;. The installer:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Agent&lt;/th&gt;
&lt;th&gt;What gets wired&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Code&lt;/td&gt;
&lt;td&gt;3 hooks merged into &lt;code&gt;~/.claude/settings.json&lt;/code&gt;; MCP server registered with &lt;code&gt;claude mcp add&lt;/code&gt; (user scope); skill at &lt;code&gt;~/.claude/skills/hindsight-coding-agent&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex CLI&lt;/td&gt;
&lt;td&gt;3 hooks merged into &lt;code&gt;~/.codex/hooks.json&lt;/code&gt;; &lt;code&gt;[mcp_servers.hindsight]&lt;/code&gt; in &lt;code&gt;~/.codex/config.toml&lt;/code&gt;; skill at &lt;code&gt;~/.agents/skills/hindsight-coding-agent&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shared&lt;/td&gt;
&lt;td&gt;Runtime copied to &lt;code&gt;~/.hindsight/coding-agents&lt;/code&gt;; &lt;code&gt;"serverMode": "daemon"&lt;/code&gt; written to &lt;code&gt;~/.hindsight/coding-agent.json&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Codex also needs its hooks feature flag. If &lt;code&gt;~/.codex/config.toml&lt;/code&gt; has no &lt;code&gt;[features]&lt;/code&gt; section, the installer adds one for you. If the section already exists, the installer prints a reminder instead, and you add the line yourself:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight toml"&gt;&lt;code&gt;&lt;span class="nn"&gt;[features]&lt;/span&gt;
&lt;span class="py"&gt;hooks&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The installer accepts either &lt;code&gt;hooks = true&lt;/code&gt; or the older spelling &lt;code&gt;codex_hooks = true&lt;/code&gt;, which some docs still use.&lt;/p&gt;

&lt;p&gt;Notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The plugin is installed with npx, not through a Claude Code marketplace, so it is not listed under &lt;code&gt;/plugin&lt;/code&gt;. Manage it with &lt;code&gt;npx @vectorize-io/hindsight-coding-agents install | uninstall | update | stats&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If an older per-agent Hindsight plugin (such as &lt;code&gt;hindsight-memory&lt;/code&gt;) is installed, uninstall it first so only one set of hooks runs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 6 — Start the daemon and verify it
&lt;/h2&gt;

&lt;p&gt;The SessionStart and Stop hooks start the daemon by themselves, in the background, whenever port 9077 is free. Start it once by hand so the slow first run (download, Rust build, model load) happens while you watch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node ~/.hindsight/coding-agents/dist/daemon-start.js &lt;span class="nt"&gt;--harness&lt;/span&gt; claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;lsof &lt;span class="nt"&gt;-iTCP&lt;/span&gt;:9077 &lt;span class="nt"&gt;-sTCP&lt;/span&gt;:LISTEN                 &lt;span class="c"&gt;# a python process on localhost:9077&lt;/span&gt;

&lt;span class="nv"&gt;PID&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lsof &lt;span class="nt"&gt;-tiTCP&lt;/span&gt;:9077 &lt;span class="nt"&gt;-sTCP&lt;/span&gt;:LISTEN&lt;span class="si"&gt;)&lt;/span&gt;
ps eww &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$PID&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;' '&lt;/span&gt; &lt;span class="s1"&gt;'\n'&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'^HINDSIGHT_API_LLM_'&lt;/span&gt;
&lt;span class="c"&gt;# HINDSIGHT_API_LLM_PROVIDER=chatgpt&lt;/span&gt;
&lt;span class="c"&gt;# HINDSIGHT_API_LLM_MODEL=gpt-6-luna&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Under the hood, the plugin asks &lt;code&gt;hindsight-embed&lt;/code&gt; to start the server. &lt;code&gt;hindsight-embed&lt;/code&gt; runs &lt;code&gt;hindsight-api --idle-timeout 0 --port 9077&lt;/code&gt; together with an embedded PostgreSQL 18 instance managed by &lt;code&gt;pg0&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7 — Pin the provider in the daemon profile file
&lt;/h2&gt;

&lt;p&gt;The daemon also has a per-profile env file, &lt;code&gt;~/.hindsight/profiles/coding-agent.env&lt;/code&gt;, created on first start. Make it agree with your shell. Then a daemon started from a context that doesn't load &lt;code&gt;~/.zshrc&lt;/code&gt;, such as an agent opened from the Dock, still uses ChatGPT and &lt;code&gt;gpt-6-luna&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;f&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/.hindsight/profiles/coding-agent.env
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;.bak"&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'^HINDSIGHT_API_LLM_'&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;        &lt;span class="c"&gt;# inspect what it currently says&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit it so it contains these two lines, and remove any &lt;code&gt;HINDSIGHT_API_LLM_API_KEY=&lt;/code&gt; line:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;HINDSIGHT_API_LLM_PROVIDER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;chatgpt
&lt;span class="nv"&gt;HINDSIGHT_API_LLM_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;gpt-6-luna
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;600 &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$f&lt;/span&gt;&lt;span class="s2"&gt;.bak"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Step 8 — Put the memory bank where you want it
&lt;/h2&gt;

&lt;p&gt;By default the database lives in &lt;code&gt;~/.pg0/instances/hindsight-embed-coding-agent/data&lt;/code&gt;. Hindsight has no setting for this path, but &lt;code&gt;pg0&lt;/code&gt; follows a symlink. Here is how to move it to &lt;code&gt;~/projects/hindsight-data&lt;/code&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Stop the daemon and its PostgreSQL.&lt;/strong&gt; Never copy a running database.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;kill&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;lsof &lt;span class="nt"&gt;-tiTCP&lt;/span&gt;:9077 &lt;span class="nt"&gt;-sTCP&lt;/span&gt;:LISTEN&lt;span class="si"&gt;)&lt;/span&gt;
   &lt;span class="c"&gt;# wait until postgres has exited and postmaster.pid is gone&lt;/span&gt;
   pgrep &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'postgres -D .*hindsight-embed-coding-agent'&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"postgres stopped"&lt;/span&gt;
   &lt;span class="nb"&gt;ls&lt;/span&gt; ~/.pg0/instances/hindsight-embed-coding-agent/data/postmaster.pid 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"clean shutdown"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Copy, verify, then swap in a symlink:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nv"&gt;SRC&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/.pg0/instances/hindsight-embed-coding-agent
   &lt;span class="nv"&gt;DST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;~/projects/hindsight-data
   &lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$DST&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
   &lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SRC&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$DST&lt;/span&gt;&lt;span class="s2"&gt;/"&lt;/span&gt;                                       &lt;span class="c"&gt;# -a keeps the 0700 permissions PostgreSQL requires&lt;/span&gt;
   diff &lt;span class="nt"&gt;-rq&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SRC&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$DST&lt;/span&gt;&lt;span class="s2"&gt;/hindsight-embed-coding-agent"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"identical"&lt;/span&gt;
   &lt;span class="nb"&gt;mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SRC&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SRC&lt;/span&gt;&lt;span class="s2"&gt;.old"&lt;/span&gt;
   &lt;span class="nb"&gt;ln&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$DST&lt;/span&gt;&lt;span class="s2"&gt;/hindsight-embed-coding-agent"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$SRC&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Restart and confirm&lt;/strong&gt; PostgreSQL now runs from the new folder:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   node ~/.hindsight/coding-agents/dist/daemon-start.js &lt;span class="nt"&gt;--harness&lt;/span&gt; claude-code
   lsof &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;pgrep &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="s1"&gt;'postgres -D .*hindsight-embed-coding-agent'&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-m1&lt;/span&gt; hindsight-data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Once everything works (Step 12), delete &lt;code&gt;$SRC.old&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keep &lt;code&gt;~/projects/hindsight-data&lt;/code&gt; &lt;strong&gt;out of git and out of iCloud Drive or Dropbox&lt;/strong&gt;. Live syncing can corrupt a running database. To back it up, stop the daemon and copy the folder.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 9 — Seed memory from past conversations
&lt;/h2&gt;

&lt;p&gt;From inside each opted-in repository:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-repo
npx @vectorize-io/hindsight-coding-agents &lt;span class="nb"&gt;install &lt;/span&gt;claude-code &lt;span class="nt"&gt;--import-conversations&lt;/span&gt;
&lt;span class="c"&gt;# and/or: ... install codex --import-conversations&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;The import reads the agent's local transcripts and keeps only sessions whose &lt;strong&gt;recorded working directory&lt;/strong&gt; is this repository.&lt;/li&gt;
&lt;li&gt;It uses LLM tokens in proportion to the history (your ChatGPT plan here). It is safe to re-run, because documents are de-duplicated by id.&lt;/li&gt;
&lt;li&gt;Git commit messages and a codebase survey are ingested automatically at the next session start. New commits are appended as they land, and the survey re-runs every 20 commits (&lt;code&gt;surveyRefreshCommits&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;CLAUDE.md&lt;/code&gt; and Claude Code's auto-memory notes (&lt;code&gt;~/.claude/projects/*/memory/*.md&lt;/code&gt;) are not imported. &lt;code&gt;CLAUDE.md&lt;/code&gt; is loaded into every session anyway. To store a memory note in the bank, ask the agent to save it with the &lt;code&gt;hindsight_ingest_document&lt;/code&gt; tool.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 10 — Start fresh agent sessions
&lt;/h2&gt;

&lt;p&gt;The hooks read &lt;code&gt;~/.hindsight/coding-agent.json&lt;/code&gt; every time they run. The MCP server behind the &lt;code&gt;hindsight_*&lt;/code&gt; tools reads it &lt;strong&gt;once, when it starts&lt;/strong&gt;. After installing, start new Claude Code and Codex sessions. In an already-open Claude Code session, run &lt;code&gt;/mcp&lt;/code&gt; → &lt;code&gt;hindsight&lt;/code&gt; → &lt;strong&gt;Reconnect&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In a new session you should see the Hindsight memory banner. The tools the agent can call:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Use&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;hindsight_search_knowledge_pages&lt;/code&gt; / &lt;code&gt;hindsight_read_knowledge_page&lt;/code&gt; / &lt;code&gt;hindsight_list_knowledge_pages&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Look up architecture, conventions, decisions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hindsight_reflect&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Deep reasoning over all memory ("why is X like this?")&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hindsight_ingest_document&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Save notes or a document into memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;hindsight_capture_initiative&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Track a new feature or plan as its own page&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;hindsight_sync_status&lt;/code&gt; / &lt;code&gt;hindsight_diagnose&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Check ingestion status and configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Step 11 — Point the CLI at the daemon
&lt;/h2&gt;

&lt;p&gt;Without configuration the &lt;code&gt;hindsight&lt;/code&gt; CLI targets &lt;code&gt;http://localhost:8888&lt;/code&gt;. Point it at the daemon:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hindsight configure &lt;span class="nt"&gt;--api-url&lt;/span&gt; http://localhost:9077
&lt;span class="nb"&gt;chmod &lt;/span&gt;600 ~/.hindsight/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Useful commands (&lt;code&gt;&amp;lt;bank&amp;gt;&lt;/code&gt; is &lt;code&gt;coding-agent::my-repo&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hindsight health                              &lt;span class="c"&gt;# Status: healthy · Database: connected&lt;/span&gt;
hindsight bank list
hindsight bank stats &amp;lt;bank&amp;gt;                   &lt;span class="c"&gt;# nodes, links, documents, pending/failed operations&lt;/span&gt;
hindsight document list &amp;lt;bank&amp;gt;
hindsight operation list &amp;lt;bank&amp;gt;               &lt;span class="c"&gt;# retain / consolidation / refresh jobs and their status&lt;/span&gt;
hindsight mental-model list &amp;lt;bank&amp;gt;            &lt;span class="c"&gt;# the knowledge pages&lt;/span&gt;
hindsight mental-model refresh &amp;lt;bank&amp;gt; &amp;lt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;    &lt;span class="c"&gt;# refresh one page now&lt;/span&gt;
hindsight explore                             &lt;span class="c"&gt;# interactive terminal explorer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The plugin also ships a one-shot status report:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node ~/.hindsight/coding-agents/dist/status.js &lt;span class="nt"&gt;--repo&lt;/span&gt; ~/projects/my-repo
&lt;span class="c"&gt;# {"bank":"coding-agent::my-repo","gitlogPresent":true,"chatDocs":…,"pagesCount":5,"surveyDocs":4,"synced":true,…}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Querying another repo's memory (cross-bank)
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;hindsight_*&lt;/code&gt; MCP tools are bound to the &lt;strong&gt;current repo's bank&lt;/strong&gt;. None of them takes a bank parameter, so an agent working in repo A can't use them to ask what was decided in repo B. Use the CLI against the other bank instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hindsight bank list                                    &lt;span class="c"&gt;# find the bank id&lt;/span&gt;
hindsight memory recall &lt;span class="s1"&gt;'coding-agent::other-repo'&lt;/span&gt; &lt;span class="s2"&gt;"how do we handle retries on 4xx?"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; json
hindsight memory recall &lt;span class="s1"&gt;'coding-agent::other-repo'&lt;/span&gt; &lt;span class="s2"&gt;"deployment steps"&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; world,experience &lt;span class="nt"&gt;-o&lt;/span&gt; json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Use &lt;code&gt;recall&lt;/code&gt;, not &lt;code&gt;reflect&lt;/code&gt;, for cross-bank lookups.&lt;/strong&gt; &lt;code&gt;recall&lt;/code&gt; returns the stored memories (facts, experiences, observations) ranked by relevance. &lt;code&gt;reflect&lt;/code&gt; synthesizes an answer through the target bank's &lt;code&gt;reflect_mission&lt;/code&gt; and disposition. Coding-agent banks get a debugging-assistant mission, so &lt;code&gt;reflect&lt;/code&gt; answers in that bank's voice instead of showing you what it holds.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-t/--fact-type&lt;/code&gt; narrows the types (&lt;code&gt;world&lt;/code&gt;, &lt;code&gt;experience&lt;/code&gt;, &lt;code&gt;observation&lt;/code&gt;). Separate several with commas (&lt;code&gt;-t world,experience&lt;/code&gt;) or repeat the flag. &lt;code&gt;-o json&lt;/code&gt; makes the output easy for an agent to parse.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Say where a fact came from.&lt;/strong&gt; When an agent quotes cross-bank results, it should name the source bank (&lt;code&gt;coding-agent::other-repo&lt;/code&gt;) so nobody mistakes it for the current repo's own memory.&lt;/li&gt;
&lt;li&gt;To make agents do this automatically, add a line like this to your global &lt;code&gt;~/.claude/CLAUDE.md&lt;/code&gt; (and Codex's &lt;code&gt;AGENTS.md&lt;/code&gt;):
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="p"&gt;  -&lt;/span&gt; Cross-repo memory: &lt;span class="sb"&gt;`hindsight_*`&lt;/span&gt; MCP tools only see the current repo's bank. To read another repo's
    memory run &lt;span class="sb"&gt;`hindsight memory recall 'coding-agent::&amp;lt;repo&amp;gt;' "&amp;lt;question&amp;gt;" -o json`&lt;/span&gt; (recall, not reflect —
    reflect applies the target bank's mission) and cite the source bank in the answer.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;If some of your repos must never inform each other, write that rule next to it. Separate banks keep the data apart, but the agent can still bridge them with this command. The CLI query is the only path across banks, so the rule only has to govern that one command.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 12 — Generate the knowledge pages
&lt;/h2&gt;

&lt;p&gt;A new bank's pages show "No content yet." until their first hourly slot comes, which can take up to an hour. To build them right away (this only uses your ChatGPT plan):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;B&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;coding-agent::my-repo
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="nb"&gt;id &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;hindsight mental-model list &lt;span class="nv"&gt;$B&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; json | python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"import sys,json;[print(m['id']) for m in json.load(sys.stdin)['items']]"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do
  &lt;/span&gt;hindsight mental-model refresh &lt;span class="nv"&gt;$B&lt;/span&gt; &lt;span class="nv"&gt;$id&lt;/span&gt;
&lt;span class="k"&gt;done
&lt;/span&gt;hindsight operation list &lt;span class="nv"&gt;$B&lt;/span&gt;          &lt;span class="c"&gt;# wait for the refresh_mental_model jobs to finish&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From then on, each page refreshes at most once an hour, and only when there is new material.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 13 — The web UI
&lt;/h2&gt;

&lt;p&gt;The CLI can launch Hindsight's web control plane (&lt;code&gt;@vectorize-io/hindsight-control-plane&lt;/code&gt;, a Next.js app) against the API URL in your CLI config, which is the daemon. It needs Node.js.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;By default it is reachable from your whole network with no login.&lt;/strong&gt; It binds to &lt;code&gt;0.0.0.0&lt;/code&gt; and requires no sign-in unless an access key is set. Launch it locked down instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;openssl rand &lt;span class="nt"&gt;-hex&lt;/span&gt; 16&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"UI access key: &lt;/span&gt;&lt;span class="nv"&gt;$KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;HOSTNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1 &lt;span class="nv"&gt;HINDSIGHT_CP_ACCESS_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; hindsight ui
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;HOSTNAME=127.0.0.1&lt;/code&gt; binds it to localhost only, so other devices on the network can't reach it. The startup log then shows &lt;code&gt;Network: http://localhost:9999&lt;/code&gt; instead of &lt;code&gt;0.0.0.0&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;HINDSIGHT_CP_ACCESS_KEY&lt;/code&gt; turns on the login page. Opening &lt;code&gt;/&lt;/code&gt; redirects to &lt;code&gt;/login&lt;/code&gt;, and the UI's API routes return 401 until you enter the key printed above.&lt;/li&gt;
&lt;li&gt;The line &lt;code&gt;No API key configured (public access)&lt;/code&gt; in the log is about the key the UI sends &lt;strong&gt;to the daemon&lt;/strong&gt; (&lt;code&gt;HINDSIGHT_CP_DATAPLANE_API_KEY&lt;/code&gt;). The local daemon needs none. That line does not mean the UI itself is open.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The first run installs the control-plane package through npx, which takes about a minute. When it is ready it prints &lt;code&gt;Local: http://localhost:9999&lt;/code&gt; and &lt;code&gt;Connecting to dataplane at: http://localhost:9077&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;&lt;a href="http://localhost:9999" rel="noopener noreferrer"&gt;http://localhost:9999&lt;/a&gt;&lt;/strong&gt; and sign in with the key. The dashboard lists your banks. Inside a bank you can browse documents, memories, entities and the memory graph, look at the knowledge pages (mental models), check operations, and try recall and reflect queries.&lt;/li&gt;
&lt;li&gt;Stop it when you're done:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nb"&gt;kill&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;lsof &lt;span class="nt"&gt;-tiTCP&lt;/span&gt;:9999 &lt;span class="nt"&gt;-sTCP&lt;/span&gt;:LISTEN&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a quick look without a browser, &lt;code&gt;hindsight explore&lt;/code&gt; opens a terminal explorer of the same data.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it behaves day to day
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Start:&lt;/strong&gt; the SessionStart and Stop hooks of Claude Code or Codex start the daemon in the background if port 9077 is free. Both agents and all repos share one daemon.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop:&lt;/strong&gt; it does &lt;strong&gt;not&lt;/strong&gt; exit when idle. Closing your agents leaves it running, using roughly 1–1.5 GB of RAM and no LLM usage while idle. It stops on reboot and comes back with the next session. To stop it yourself: &lt;code&gt;kill $(lsof -tiTCP:9077 -sTCP:LISTEN)&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Changing provider, model or other daemon settings:&lt;/strong&gt; a running daemon is reused and never restarted, so stop it after any change. The next session (or &lt;code&gt;daemon-start.js&lt;/code&gt;) starts it with the new settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Updates:&lt;/strong&gt; the plugin checks npm once a day and updates its runtime. Re-run &lt;code&gt;install&lt;/code&gt; only when a release adds new hooks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Writes are asynchronous:&lt;/strong&gt; a saved document appears once its retain job completes (&lt;code&gt;hindsight operation list &amp;lt;bank&amp;gt;&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Logs:&lt;/strong&gt; &lt;code&gt;~/.hindsight/coding-agents-logs/plugin.log&lt;/code&gt;, &lt;code&gt;diag.jsonl&lt;/code&gt; (every reflect/retain/page event), &lt;code&gt;usage.jsonl&lt;/code&gt;. Summary: &lt;code&gt;npx @vectorize-io/hindsight-coding-agents stats&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;[ ] &lt;code&gt;~/.zshrc&lt;/code&gt;: &lt;code&gt;HINDSIGHT_API_LLM_PROVIDER=chatgpt&lt;/code&gt;, &lt;code&gt;HINDSIGHT_API_LLM_MODEL=gpt-6-luna&lt;/code&gt;, visible in a new terminal&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;hindsight-admin chatgpt status&lt;/code&gt;: signed in, plan usage enabled&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;~/.hindsight/coding-agent.json&lt;/code&gt;: &lt;code&gt;serverMode: "daemon"&lt;/code&gt;, &lt;code&gt;pageTriggerCron: "H * * * *"&lt;/code&gt;, &lt;code&gt;surveyRefreshCommits&lt;/code&gt; set the way you want (20 by default, &lt;code&gt;0&lt;/code&gt; = survey once), mode &lt;code&gt;600&lt;/code&gt;. Either &lt;code&gt;optInOnly: true&lt;/code&gt; with the right &lt;code&gt;optInPaths&lt;/code&gt;, or no opt-in keys plus &lt;code&gt;banks.&amp;lt;id&amp;gt;.disabled&lt;/code&gt; for the repos to exclude.&lt;/li&gt;
&lt;li&gt;[ ] Cross-bank lookup works: &lt;code&gt;hindsight memory recall 'coding-agent::&amp;lt;repo&amp;gt;' "&amp;lt;question&amp;gt;" -o json&lt;/code&gt; returns results&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;~/.hindsight/profiles/coding-agent.env&lt;/code&gt;: &lt;code&gt;chatgpt&lt;/code&gt; + &lt;code&gt;gpt-6-luna&lt;/code&gt;, no API-key line, mode &lt;code&gt;600&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;~/.codex/config.toml&lt;/code&gt;: &lt;code&gt;hooks = true&lt;/code&gt; under &lt;code&gt;[features]&lt;/code&gt;, &lt;code&gt;[mcp_servers.hindsight]&lt;/code&gt; present&lt;/li&gt;
&lt;li&gt;[ ] Daemon on &lt;code&gt;127.0.0.1:9077&lt;/code&gt; with the right &lt;code&gt;HINDSIGHT_API_LLM_*&lt;/code&gt; in &lt;code&gt;ps eww&lt;/code&gt;; &lt;code&gt;hindsight health&lt;/code&gt; healthy&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;~/.pg0/instances/hindsight-embed-coding-agent&lt;/code&gt; → symlink to &lt;code&gt;~/projects/hindsight-data/…&lt;/code&gt;; PostgreSQL has files open there&lt;/li&gt;
&lt;li&gt;[ ] Per repo: &lt;code&gt;status.js --repo …&lt;/code&gt; shows &lt;code&gt;synced: true&lt;/code&gt;, &lt;code&gt;pagesCount: 5&lt;/code&gt;, &lt;code&gt;surveyDocs: 4&lt;/code&gt;; &lt;code&gt;hindsight operation list&lt;/code&gt; shows nothing &lt;code&gt;failed&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] In a new agent session, &lt;code&gt;hindsight_sync_status&lt;/code&gt; returns the same numbers as &lt;code&gt;status.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;[ ] Web UI launched only with &lt;code&gt;HOSTNAME=127.0.0.1&lt;/code&gt; and &lt;code&gt;HINDSIGHT_CP_ACCESS_KEY&lt;/code&gt;, and stopped when not in use (nothing listening on &lt;code&gt;:9999&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Uninstall
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx @vectorize-io/hindsight-coding-agents uninstall all     &lt;span class="c"&gt;# removes the hooks, MCP entries and skills install added&lt;/span&gt;
                                                            &lt;span class="c"&gt;# (Codex's [features] hooks flag stays, since other hooks may use it)&lt;/span&gt;
&lt;span class="nb"&gt;kill&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;lsof &lt;span class="nt"&gt;-tiTCP&lt;/span&gt;:9077 &lt;span class="nt"&gt;-sTCP&lt;/span&gt;:LISTEN&lt;span class="si"&gt;)&lt;/span&gt;                       &lt;span class="c"&gt;# stop the daemon&lt;/span&gt;
&lt;span class="c"&gt;# memory data: ~/projects/hindsight-data (and the symlink in ~/.pg0/instances) — delete only if you mean it&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>ai</category>
      <category>claudecode</category>
      <category>codex</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Choosing Long-Term Memory for Hermes: 10 Options, Trade-offs, and Cloud Pricing</title>
      <dc:creator>James Wang</dc:creator>
      <pubDate>Fri, 23 Oct 2026 04:56:07 +0000</pubDate>
      <link>https://dev.to/james_wang_5aaab811177486/choosing-long-term-memory-for-hermes-10-options-trade-offs-and-cloud-pricing-5fp6</link>
      <guid>https://dev.to/james_wang_5aaab811177486/choosing-long-term-memory-for-hermes-10-options-trade-offs-and-cloud-pricing-5fp6</guid>
      <description>&lt;p&gt;Choosing Long-Term Memory for an AI agent starts with a practical question: what should the agent remember, and how will you know that it remembered correctly?&lt;/p&gt;

&lt;p&gt;Hermes offers several approaches: curated Markdown files, a local fact database, user-modeling services, knowledge graphs, and directory-based context stores. They solve different problems and charge for different units of work.&lt;/p&gt;

&lt;p&gt;This guide compares &lt;strong&gt;10 options&lt;/strong&gt;, including Hermes's built-in memory, with their strengths, trade-offs, integration paths, and cloud pricing. &lt;strong&gt;The pricing snapshot is dated October 22, 2026. All amounts are in US dollars.&lt;/strong&gt; Annual commitments and annualized monthly prices are labeled explicitly.&lt;/p&gt;

&lt;p&gt;This is a documentation-based comparison, not a hands-on benchmark using identical tasks. Vendor accuracy scores use different models, datasets, and cost assumptions, so they are not treated as a common leaderboard.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with the memory you actually need
&lt;/h2&gt;

&lt;p&gt;Persistent memory can mean several things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Personal facts and preferences:&lt;/strong&gt; time zone, communication style, and long-term goals.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Project decisions and lessons:&lt;/strong&gt; architectural choices, debugging findings, and working conventions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;History and change:&lt;/strong&gt; when a preference changed or why a decision was revised.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;External knowledge:&lt;/strong&gt; documents, websites, email, and shared team material.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A small preference store and a traceable engineering knowledge base need different systems. Write down the questions you want the agent to answer before choosing the backend.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 10 options at a glance
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Main use&lt;/th&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;th&gt;Cloud entry point&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hermes built-in memory&lt;/td&gt;
&lt;td&gt;Curated facts, preferences, conversation lookup&lt;/td&gt;
&lt;td&gt;Local&lt;/td&gt;
&lt;td&gt;No separate memory-service fee&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Honcho&lt;/td&gt;
&lt;td&gt;User modeling and reasoning-based recall&lt;/td&gt;
&lt;td&gt;Cloud or open-source self-hosting&lt;/td&gt;
&lt;td&gt;$2 per million ingestion tokens; reasoning extra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenViking&lt;/td&gt;
&lt;td&gt;Directory-based knowledge and tiered loading&lt;/td&gt;
&lt;td&gt;Self-hosting documented&lt;/td&gt;
&lt;td&gt;No managed-service quote confirmed in this review&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mem0&lt;/td&gt;
&lt;td&gt;Automatic fact extraction and maintenance&lt;/td&gt;
&lt;td&gt;Cloud, self-hosted server, or OSS&lt;/td&gt;
&lt;td&gt;Free; Starter $19/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hindsight&lt;/td&gt;
&lt;td&gt;Relationships, time, and synthesis across memories&lt;/td&gt;
&lt;td&gt;Cloud or open-source self-hosting&lt;/td&gt;
&lt;td&gt;Prepaid usage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Holographic&lt;/td&gt;
&lt;td&gt;Lightweight local fact storage&lt;/td&gt;
&lt;td&gt;Local&lt;/td&gt;
&lt;td&gt;No additional model calls by default&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RetainDB&lt;/td&gt;
&lt;td&gt;Managed memory, hybrid search, and files&lt;/td&gt;
&lt;td&gt;Cloud&lt;/td&gt;
&lt;td&gt;Free; Builder $9/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ByteRover&lt;/td&gt;
&lt;td&gt;Project knowledge trees and team synchronization&lt;/td&gt;
&lt;td&gt;Local-first, optional cloud sync&lt;/td&gt;
&lt;td&gt;Free; Pro $15/month billed annually&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supermemory&lt;/td&gt;
&lt;td&gt;User memory, document retrieval, and connectors&lt;/td&gt;
&lt;td&gt;Cloud or licensed local server&lt;/td&gt;
&lt;td&gt;Free; Pro $19/month&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memori&lt;/td&gt;
&lt;td&gt;Tool-aware memory and production governance&lt;/td&gt;
&lt;td&gt;OSS or managed deployments&lt;/td&gt;
&lt;td&gt;Free allowance; production Team from $60,000/year&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Hermes allows &lt;strong&gt;one active external memory provider at a time&lt;/strong&gt;, while built-in memory remains active. Additional MCP tools can coexist, but that does not automatically give them another provider's background synchronization and recall lifecycle. &lt;a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers/" rel="noopener noreferrer"&gt;Hermes integration documentation&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Hermes built-in memory
&lt;/h2&gt;

&lt;p&gt;Hermes stores curated facts and preferences in MEMORY.md and USER.md. Its session_search tool can retrieve earlier conversations. &lt;a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory/" rel="noopener noreferrer"&gt;Official documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Human-readable files are easy to inspect, edit, back up, and migrate.&lt;/li&gt;
&lt;li&gt;No additional memory account, API key, or service dependency is required.&lt;/li&gt;
&lt;li&gt;It provides a straightforward baseline for stable project conventions and personal facts.&lt;/li&gt;
&lt;li&gt;It remains available alongside an external provider.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Resident memory is bounded and needs curation as information accumulates.&lt;/li&gt;
&lt;li&gt;Files alone do not provide sophisticated relationship modeling or fact reconciliation.&lt;/li&gt;
&lt;li&gt;Sharing memory with other coding tools requires an additional integration.&lt;/li&gt;
&lt;li&gt;Historical recall still depends on the agent choosing useful queries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; There is no separate SaaS fee. Injected memories still occupy the main model's context and incur its normal token costs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Start here when a small set of stable facts and searchable conversation history may already solve the problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Honcho
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://honcho.dev/" rel="noopener noreferrer"&gt;Honcho&lt;/a&gt; focuses on understanding users over time. It maintains representations of users and agents and offers reasoning at several depths. It has a dedicated &lt;a href="https://honcho.dev/hermes" rel="noopener noreferrer"&gt;Hermes integration&lt;/a&gt; and an &lt;a href="https://github.com/plastic-labs/honcho" rel="noopener noreferrer"&gt;open-source core&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A good architectural match for persistent preferences, goals, and user modeling.&lt;/li&gt;
&lt;li&gt;Ordinary context retrieval is separate from deeper reasoning.&lt;/li&gt;
&lt;li&gt;Multiple tools can connect to a shared memory layer.&lt;/li&gt;
&lt;li&gt;Self-hosting gives control over the infrastructure and stored memory.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Inferred user attributes require review; they are not equivalent to explicitly confirmed facts.&lt;/li&gt;
&lt;li&gt;Frequent deep reasoning can dominate the bill.&lt;/li&gt;
&lt;li&gt;Refresh frequency and reasoning depth need deliberate configuration.&lt;/li&gt;
&lt;li&gt;Self-hosting transfers model provisioning and operations to you.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Published rate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Ingestion and processing&lt;/td&gt;
&lt;td&gt;$2 per million input tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context retrieval&lt;/td&gt;
&lt;td&gt;Listed as unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Background Dreaming&lt;/td&gt;
&lt;td&gt;Included&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Minimal reasoning&lt;/td&gt;
&lt;td&gt;$0.001/query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low reasoning&lt;/td&gt;
&lt;td&gt;$0.01/query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Medium reasoning&lt;/td&gt;
&lt;td&gt;$0.05/query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;High reasoning&lt;/td&gt;
&lt;td&gt;$0.10/query&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max reasoning&lt;/td&gt;
&lt;td&gt;$0.50/query&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The current personal-memory page states that new accounts receive $5 in credits, with another $5 each billing period after adding a payment method. Recurring credits do not accumulate. This uses the live page rather than older cached signup offers. &lt;a href="https://honcho.dev/" rel="noopener noreferrer"&gt;Rates&lt;/a&gt;, &lt;a href="https://honcho.dev/ai-memory" rel="noopener noreferrer"&gt;credit terms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlimited context retrieval does not eliminate the main agent's cost of reading that context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; A personal assistant that should maintain a coherent understanding of the same user across sessions and tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. OpenViking
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/volcengine/OpenViking" rel="noopener noreferrer"&gt;OpenViking&lt;/a&gt; organizes context as a virtual filesystem under viking://. Agents can browse directories and load L0 abstracts, L1 overviews, and L2 source content progressively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The knowledge structure is visible and navigable.&lt;/li&gt;
&lt;li&gt;Project or directory scope can narrow retrieval.&lt;/li&gt;
&lt;li&gt;Summary-first loading helps control how much material reaches the agent.&lt;/li&gt;
&lt;li&gt;Archived sessions and extracted Markdown memories can be inspected.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Running a service and configuring its models adds operational work.&lt;/li&gt;
&lt;li&gt;Generated summaries and retrieval planning can introduce errors.&lt;/li&gt;
&lt;li&gt;Directory design may be unnecessary overhead for a small preference store.&lt;/li&gt;
&lt;li&gt;Product capabilities and the subset exposed by the Hermes integration should be evaluated separately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cloud pricing:&lt;/strong&gt; This review did not confirm a public first-party managed-service quote. Self-hosting costs depend on compute, storage, embeddings, and language or multimodal models. This is not a claim that other hosting arrangements or commercial agreements do not exist.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Larger, clearly structured knowledge collections where inspecting and maintaining the organization matters. &lt;a href="https://www.openviking.ai/" rel="noopener noreferrer"&gt;Website&lt;/a&gt;, &lt;a href="https://docs.openviking.ai/en/agent-integrations/05-hermes" rel="noopener noreferrer"&gt;Hermes integration&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Mem0
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://mem0.ai/" rel="noopener noreferrer"&gt;Mem0&lt;/a&gt; offers automatic fact extraction and memory CRUD operations, with a managed platform and an &lt;a href="https://github.com/mem0ai/mem0" rel="noopener noreferrer"&gt;open-source implementation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A direct API for adding user-level memory to an existing agent.&lt;/li&gt;
&lt;li&gt;Cloud, self-hosted, and in-process OSS deployment choices.&lt;/li&gt;
&lt;li&gt;Explicit free and entry-level quotas make an initial trial easier to budget.&lt;/li&gt;
&lt;li&gt;Pro adds graph memory and Dream consolidation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extraction can omit context or update a fact incorrectly.&lt;/li&gt;
&lt;li&gt;Lower tiers provide substantially fewer retrieval requests than add requests.&lt;/li&gt;
&lt;li&gt;Per-turn retrieval can exhaust the retrieval quota first.&lt;/li&gt;
&lt;li&gt;Pro represents a substantial price increase; its capabilities should not be assumed to exist in Starter.&lt;/li&gt;
&lt;li&gt;OSS deployments require separate model and storage choices.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Monthly price&lt;/th&gt;
&lt;th&gt;Add requests/month&lt;/th&gt;
&lt;th&gt;Retrieval requests/month&lt;/th&gt;
&lt;th&gt;Projects&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Hobby&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Starter&lt;/td&gt;
&lt;td&gt;$19&lt;/td&gt;
&lt;td&gt;50,000&lt;/td&gt;
&lt;td&gt;5,000&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$249&lt;/td&gt;
&lt;td&gt;500,000&lt;/td&gt;
&lt;td&gt;50,000&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Listed as unlimited&lt;/td&gt;
&lt;td&gt;Listed as unlimited&lt;/td&gt;
&lt;td&gt;Unlimited&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Pro includes graph memory, Dream, analytics, and private Slack support. Enterprise adds features such as SLA support, on-premises deployment, audit logs, and SSO. &lt;a href="https://mem0.ai/pricing" rel="noopener noreferrer"&gt;Current pricing&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Managed fact extraction with a simple API, provided that the retrieval quota matches the intended agent loop.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Hindsight
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://hindsight.vectorize.io/" rel="noopener noreferrer"&gt;Hindsight&lt;/a&gt; separates retain, recall, and reflect: storing information, retrieving it, and synthesizing answers across memories. It also models entities, relationships, temporal changes, and mental models. &lt;a href="https://github.com/vectorize-io/hindsight" rel="noopener noreferrer"&gt;Open-source project&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A strong architectural match for questions about how a project or decision evolved.&lt;/li&gt;
&lt;li&gt;Explicit operations distinguish retrieval from synthesis.&lt;/li&gt;
&lt;li&gt;Cloud includes memory-side LLM, embedding, and reranking models.&lt;/li&gt;
&lt;li&gt;An &lt;a href="https://hindsight.vectorize.io/sdks/integrations/hermes" rel="noopener noreferrer"&gt;upstream-maintained Hermes integration&lt;/a&gt; is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Capturing full conversations and tool calls can increase ingestion volume.&lt;/li&gt;
&lt;li&gt;Reflection, model refreshes, and long-term storage have separate meters.&lt;/li&gt;
&lt;li&gt;Automatically refreshed knowledge pages can generate charges without a manual refresh.&lt;/li&gt;
&lt;li&gt;Self-hosting requires operating databases, models, and upgrades.&lt;/li&gt;
&lt;li&gt;Synthesized conclusions still need supporting evidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Operation&lt;/th&gt;
&lt;th&gt;Rate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Retain&lt;/td&gt;
&lt;td&gt;$10 per million input tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Import or restore from an export archive&lt;/td&gt;
&lt;td&gt;$5 per million input tokens; no new fact extraction&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Recall&lt;/td&gt;
&lt;td&gt;$0.75 per million output tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reflect&lt;/td&gt;
&lt;td&gt;$0.05/call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retrieve Model or read a knowledge page&lt;/td&gt;
&lt;td&gt;$0.25 per million output tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Refresh Model or create/update a knowledge page&lt;/td&gt;
&lt;td&gt;$0.05/call&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Iris enhanced file extraction&lt;/td&gt;
&lt;td&gt;$7.50 per million output tokens, plus normal retain&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory storage after 30 days&lt;/td&gt;
&lt;td&gt;$0.25 per million tokens/month, accrued daily&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Cloud uses prepaid credits at $1 per credit. The homepage advertises $5 in initial credits for GitHub signup; this is not a recurring monthly allowance. Standard text extraction avoids the additional Iris charge, but retaining extracted content still costs money. &lt;a href="https://docs.hindsight.vectorize.io/cloud/billing/" rel="noopener noreferrer"&gt;Billing details&lt;/a&gt;, &lt;a href="https://hindsight.vectorize.io/cloud-enterprise/hindsight-cloud" rel="noopener noreferrer"&gt;what Cloud includes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Projects that need temporal context, entity relationships, and synthesis across multiple memories.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Holographic
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/itpartypattaya/hermes-plugin-holographic" rel="noopener noreferrer"&gt;Holographic&lt;/a&gt; is a local SQLite fact store combining FTS5, entity resolution, trust scoring, and holographic reduced representation retrieval. The current plugin is maintained by a community maintainer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No API key, network access, or additional model calls by default.&lt;/li&gt;
&lt;li&gt;Fact versions, provenance, and correction operations support inspection.&lt;/li&gt;
&lt;li&gt;A local database is straightforward to back up.&lt;/li&gt;
&lt;li&gt;Optional online embeddings can be enabled when needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keyword and HRR retrieval should not be equated with general language-model semantic understanding.&lt;/li&gt;
&lt;li&gt;Large paraphrases, implicit relationships, and complex synthesis need practical evaluation.&lt;/li&gt;
&lt;li&gt;Fact organization and keywords affect recall quality.&lt;/li&gt;
&lt;li&gt;Online embeddings change both the data flow and the cost.&lt;/li&gt;
&lt;li&gt;Community-maintained compatibility is worth monitoring.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing:&lt;/strong&gt; The default local path has no separate memory-model service bill. Optional embeddings are billed by the chosen provider, and main-agent tokens remain separate. No managed-service quote was confirmed in this review. &lt;a href="https://github.com/itpartypattaya/hermes-plugin-holographic" rel="noopener noreferrer"&gt;Current capabilities&lt;/a&gt;, &lt;a href="https://hermes-agent.nousresearch.com/docs/plugins/holographic" rel="noopener noreferrer"&gt;Hermes catalog&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; A modest local store of preferences, facts, and explicit decisions with minimal additional infrastructure.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. RetainDB
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.retaindb.com/" rel="noopener noreferrer"&gt;RetainDB&lt;/a&gt; combines managed memory, hybrid retrieval, file operations, and project features.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writes and context reads have separate, visible quotas.&lt;/li&gt;
&lt;li&gt;The entry paid tier is inexpensive.&lt;/li&gt;
&lt;li&gt;Memory, file knowledge, and collaboration can live in one service.&lt;/li&gt;
&lt;li&gt;Higher plans add delta compression and larger team limits.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The standard route depends on a hosted service.&lt;/li&gt;
&lt;li&gt;Delta Compression is not included in every tier.&lt;/li&gt;
&lt;li&gt;The Hermes documentation identifies its standalone provider repository as needing a maintainer. That is an integration-maintenance issue, not a claim that the RetainDB service is unmaintained.&lt;/li&gt;
&lt;li&gt;Older documentation and current pricing can differ.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Monthly price&lt;/th&gt;
&lt;th&gt;Writes/month&lt;/th&gt;
&lt;th&gt;Context reads/month&lt;/th&gt;
&lt;th&gt;Scope&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Starter Free&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;20,000&lt;/td&gt;
&lt;td&gt;5,000&lt;/td&gt;
&lt;td&gt;1 project, 1 API key&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Builder&lt;/td&gt;
&lt;td&gt;$9&lt;/td&gt;
&lt;td&gt;75,000&lt;/td&gt;
&lt;td&gt;15,000&lt;/td&gt;
&lt;td&gt;3 projects, 5 keys, 3 seats, Knowledge Graph&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$29&lt;/td&gt;
&lt;td&gt;250,000&lt;/td&gt;
&lt;td&gt;75,000&lt;/td&gt;
&lt;td&gt;10 projects, 20 keys, 10 seats, Delta Compression&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;$99&lt;/td&gt;
&lt;td&gt;1,000,000&lt;/td&gt;
&lt;td&gt;300,000&lt;/td&gt;
&lt;td&gt;Unlimited projects and keys, 50 seats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Listed as unlimited&lt;/td&gt;
&lt;td&gt;Listed as unlimited&lt;/td&gt;
&lt;td&gt;Contract-specific&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The pricing page also advertises 20% off annual billing. Older Hermes material lists $20/month; this table uses the current vendor pricing page. Overage behavior should be checked at checkout. &lt;a href="https://www.retaindb.com/pricing" rel="noopener noreferrer"&gt;Pricing&lt;/a&gt;, &lt;a href="https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/memory-providers.md#providers-moving-to-the-plugin-catalog" rel="noopener noreferrer"&gt;Hermes maintenance note&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Budget-conscious managed workloads with substantial read/write quotas, after checking Hermes integration compatibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. ByteRover
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.byterover.dev/" rel="noopener noreferrer"&gt;ByteRover&lt;/a&gt; uses its brv CLI to manage a hierarchical knowledge tree. It is oriented toward project decisions, debugging lessons, and reusable engineering practices, with local storage and optional cloud synchronization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Knowledge is readable and maintainable.&lt;/li&gt;
&lt;li&gt;Selected material can be shared across devices and teams.&lt;/li&gt;
&lt;li&gt;Recall sources can be inspected.&lt;/li&gt;
&lt;li&gt;The Hermes integration extracts insights before context compression discards them.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Duplicate and outdated knowledge still needs curation.&lt;/li&gt;
&lt;li&gt;LLM-driven search has its own latency and model cost.&lt;/li&gt;
&lt;li&gt;CLI installation, login, and synchronization state add operational dependencies.&lt;/li&gt;
&lt;li&gt;Hermes lists the standalone provider repository as needing a maintainer; the product and integration have distinct maintenance considerations.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Price&lt;/th&gt;
&lt;th&gt;Main scope&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local&lt;/td&gt;
&lt;td&gt;Listed as free in Hermes documentation&lt;/td&gt;
&lt;td&gt;Local tree; model costs depend on configuration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Free cloud sync&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;100 context files, device sync, team sharing&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$15/month billed annually&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unlimited context files, priority support&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;SSO/SAML, RBAC, on-premises options&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The accessible current page explicitly labels $15 as billed yearly. This review did not reliably confirm Pro's monthly-billing price or the seat-billing basis. Older retrieval-based price tables should not be substituted for the current file-based plans. &lt;a href="https://www.byterover.dev/pricing" rel="noopener noreferrer"&gt;Current pricing&lt;/a&gt;, &lt;a href="https://hermes-agent.nousresearch.com/docs/user-guide/features/memory-providers/" rel="noopener noreferrer"&gt;Hermes documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Coding agents that should share inspectable project knowledge with selective team synchronization.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Supermemory
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://supermemory.ai/" rel="noopener noreferrer"&gt;Supermemory&lt;/a&gt; combines personal memory with SuperRAG document retrieval and connectors for external sources. Its &lt;a href="https://github.com/supermemoryai/hermes-supermemory" rel="noopener noreferrer"&gt;Hermes plugin&lt;/a&gt; is maintained by the vendor.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One integration ecosystem can cover personal memory and external knowledge.&lt;/li&gt;
&lt;li&gt;Supported updates under the same customId bill only newly added content on the token-ingestion meter.&lt;/li&gt;
&lt;li&gt;Connectors can reduce the work of ingesting documents and cloud sources.&lt;/li&gt;
&lt;li&gt;A local server is available for single-machine workflows.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credits, Memory tokens, SuperRAG tokens, queries, and operations are separate meters.&lt;/li&gt;
&lt;li&gt;Document identity changes or full replacements can incur fresh ingestion charges.&lt;/li&gt;
&lt;li&gt;Advanced PDF extraction and some connectors require higher plans.&lt;/li&gt;
&lt;li&gt;The current local server binary comes from a non-public codebase and is free only within its lite license limit. Open-source SDKs do not make the complete server open source.&lt;/li&gt;
&lt;li&gt;Local extraction models and available integrations differ from the hosted service.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud plans
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Monthly subscription&lt;/th&gt;
&lt;th&gt;Monthly included credits&lt;/th&gt;
&lt;th&gt;Main differences&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Free&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;$5&lt;/td&gt;
&lt;td&gt;APIs, plugins, 1 seat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pro&lt;/td&gt;
&lt;td&gt;$19&lt;/td&gt;
&lt;td&gt;$20&lt;/td&gt;
&lt;td&gt;Auto top-up, 3 seats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Max&lt;/td&gt;
&lt;td&gt;$100&lt;/td&gt;
&lt;td&gt;$130&lt;/td&gt;
&lt;td&gt;More credits, Gmail connector&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;$399&lt;/td&gt;
&lt;td&gt;$600&lt;/td&gt;
&lt;td&gt;Advanced PDF, S3, crawler, unlimited seats&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Contract-specific&lt;/td&gt;
&lt;td&gt;Dedicated support and deployment options&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Usage rates
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Meter&lt;/th&gt;
&lt;th&gt;Rate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Memory plain text&lt;/td&gt;
&lt;td&gt;$5 per million SM tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory rich content&lt;/td&gt;
&lt;td&gt;$10 per million SM tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SuperRAG text&lt;/td&gt;
&lt;td&gt;$1 per million SM tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SuperRAG images, PDFs, audio, and video&lt;/td&gt;
&lt;td&gt;$2 per million SM tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Search and traversal&lt;/td&gt;
&lt;td&gt;$5 per million queries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Operations&lt;/td&gt;
&lt;td&gt;$100 per million operations&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Subscription credits reset monthly; purchased top-up credits do not expire. An auto-top-up purchase limit is not a hard cap on the total invoice. Workflows can use multiple meters, so budget against the endpoints actually called. &lt;a href="https://supermemory.ai/pricing.md" rel="noopener noreferrer"&gt;Plans and rates&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The local server needs your extraction model. Its default embedding model is English-oriented, so multilingual workloads should evaluate alternatives. The reviewed licensing pages did not specify a numerical lite limit; it should not be described as unlimited free usage. &lt;a href="https://supermemory.ai/docs/self-hosting/overview" rel="noopener noreferrer"&gt;Local deployment&lt;/a&gt;, &lt;a href="https://supermemory.ai/docs/self-hosting/local-vs-enterprise" rel="noopener noreferrer"&gt;Local versus Enterprise&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Workloads combining memory with documents, websites, or cloud connectors, with room for more detailed usage accounting.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Memori
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://memorilabs.ai/" rel="noopener noreferrer"&gt;Memori&lt;/a&gt; emphasizes execution traces, structured recall, and production governance. Hermes uses an externally supplied hermes-memori CLI/provider integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tool-aware memory fits production agent workflows.&lt;/li&gt;
&lt;li&gt;Production plans include access control, audit logging, observability, and memory pooling.&lt;/li&gt;
&lt;li&gt;Deployment choices cover managed multi-tenant, managed single-tenant, customer VPC, and on-premises arrangements.&lt;/li&gt;
&lt;li&gt;Free Cloud and OSS routes allow smaller initial experiments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Cons&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paid production plans are priced primarily for enterprises.&lt;/li&gt;
&lt;li&gt;OSS, free Cloud, and production contracts are different offers.&lt;/li&gt;
&lt;li&gt;Counts of memories created or recalled are not directly comparable to another provider's API-request quotas.&lt;/li&gt;
&lt;li&gt;The current pricing text does not specify the free allowance's renewal period.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cloud pricing
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Plan&lt;/th&gt;
&lt;th&gt;Published price&lt;/th&gt;
&lt;th&gt;Scope&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OSS&lt;/td&gt;
&lt;td&gt;Software free&lt;/td&gt;
&lt;td&gt;Bring your database, models, and infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cloud Free&lt;/td&gt;
&lt;td&gt;$0&lt;/td&gt;
&lt;td&gt;5,000 memories created; 15,000 memories recalled&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Team&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;From $60,000/year&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One production agent, managed multi-tenant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Business&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;From $150,000/year&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Multiple production agents, managed single-tenant&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Enterprise&lt;/td&gt;
&lt;td&gt;Custom&lt;/td&gt;
&lt;td&gt;Customer VPC or on-premises, dedicated infrastructure&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Team and Business annualize to $5,000 and $12,500 per month respectively. &lt;strong&gt;Those are annual-contract equivalents, not published monthly purchase prices.&lt;/strong&gt; Production plans list unlimited memories, but agent and deployment scope still differ. &lt;a href="https://memorilabs.ai/pricing" rel="noopener noreferrer"&gt;Pricing&lt;/a&gt;, &lt;a href="https://github.com/NousResearch/hermes-agent/blob/main/website/docs/user-guide/features/memory-providers.md#memori" rel="noopener noreferrer"&gt;Hermes integration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Best fit:&lt;/strong&gt; Organizations buying production governance and vendor support rather than a low-cost personal memory subscription.&lt;/p&gt;

&lt;h2&gt;
  
  
  Budget for the whole memory loop
&lt;/h2&gt;

&lt;p&gt;The memory provider's price is only part of the bill.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Main-agent tokens:&lt;/strong&gt; A free or inexpensive recall operation can still return a large context that the main model must process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Background work:&lt;/strong&gt; Extraction, reconciliation, reasoning, refreshes, and consolidation may run behind a simple interaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operations and migration:&lt;/strong&gt; Self-hosting requires backups, upgrades, model configuration, and troubleshooting. Changing a service URL does not necessarily migrate stored memories.&lt;/p&gt;

&lt;p&gt;A useful budget is:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Total cost = memory subscription or metered usage
           + extraction, retrieval, and embedding costs not included
           + main-agent tokens used to read recalled context
           + self-hosted infrastructure and maintenance
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Requests, tokens, synchronized files, and generated memories measure different things. One conversation is not necessarily one billable operation.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical shortlist
&lt;/h2&gt;

&lt;p&gt;These are architectural matches, not measured performance rankings.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Primary requirement&lt;/th&gt;
&lt;th&gt;Start by comparing&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Minimal maintenance&lt;/td&gt;
&lt;td&gt;Hermes built-in memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lightweight local facts&lt;/td&gt;
&lt;td&gt;Holographic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inspectable project knowledge shared across tools&lt;/td&gt;
&lt;td&gt;ByteRover&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple managed fact API&lt;/td&gt;
&lt;td&gt;Mem0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long-term user understanding&lt;/td&gt;
&lt;td&gt;Honcho&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Temporal context and synthesis across memories&lt;/td&gt;
&lt;td&gt;Hindsight&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Navigable, directory-based knowledge&lt;/td&gt;
&lt;td&gt;OpenViking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory plus documents and connectors&lt;/td&gt;
&lt;td&gt;Supermemory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Low entry price with substantial hosted quotas&lt;/td&gt;
&lt;td&gt;RetainDB, with integration validation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Production governance and vendor delivery&lt;/td&gt;
&lt;td&gt;Memori and relevant enterprise offerings&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Keep built-in memory as a common baseline. Ask each candidate the same questions: did an old preference update correctly, can a decision be traced to its source, does information leak between projects, and does a deleted memory reappear?&lt;/p&gt;

&lt;p&gt;Record ingestion, retrieval, background operations, and main-model tokens for a complete session. That connects recall behavior to cost and gives a more useful decision than a cross-vendor accuracy chart.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Snapshot limitations:&lt;/strong&gt; Pricing and features were checked on October 22, 2026. ByteRover's monthly-billing price, Memori's free-allowance renewal period, Supermemory's numerical lite limit, and an OpenViking managed-service quote were not confirmed. Check the linked official documentation and checkout pages before purchasing or deploying.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>Jev, Drex, and Laya: Three System One Decision Models Compared</title>
      <dc:creator>James Wang</dc:creator>
      <pubDate>Mon, 19 Oct 2026 02:17:13 +0000</pubDate>
      <link>https://dev.to/james_wang_5aaab811177486/jev-drex-and-laya-three-system-one-decision-models-compared-48nn</link>
      <guid>https://dev.to/james_wang_5aaab811177486/jev-drex-and-laya-three-system-one-decision-models-compared-48nn</guid>
      <description>&lt;p&gt;A new kind of model showed up in 2026: the &lt;strong&gt;System One decision model&lt;/strong&gt;. Instead of writing an&lt;br&gt;
answer token by token, it reads a piece of text (the &lt;em&gt;state&lt;/em&gt;) plus a set of typed questions, and&lt;br&gt;
returns a probability for each option in a single pass. There is nothing to parse and no free-form&lt;br&gt;
output to go wrong.&lt;/p&gt;

&lt;p&gt;Three of them are worth knowing about: &lt;strong&gt;Jev&lt;/strong&gt; from TypeSafe, &lt;strong&gt;Drex&lt;/strong&gt; from Nace, and &lt;strong&gt;Laya&lt;/strong&gt;&lt;br&gt;
from ConvAI. This post compares them as of October 2026.&lt;/p&gt;

&lt;h2&gt;
  
  
  One protocol, three models
&lt;/h2&gt;

&lt;p&gt;All three speak the same API: &lt;code&gt;POST /v1/systemone&lt;/code&gt; with a &lt;code&gt;state&lt;/code&gt; and a map of questions. It is&lt;br&gt;
TypeSafe's API, and Jev was the first model on it; Drex and Laya both ship as wire-compatible&lt;br&gt;
replacements, so switching between them is mostly a base-URL change.&lt;/p&gt;

&lt;p&gt;They also share the three question types:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Asks&lt;/th&gt;
&lt;th&gt;Returns&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;choice&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Pick one of these named options&lt;/td&gt;
&lt;td&gt;The pick, a confidence, and a distribution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;noul&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Is this proposition true?&lt;/td&gt;
&lt;td&gt;P(true)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;score&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Where does this sit on an ordered scale?&lt;/td&gt;
&lt;td&gt;Expected level and a distribution&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Typical uses: routing a ticket, classifying an email, checking an extracted field, gating an&lt;br&gt;
action behind a guardrail. Code keeps the workflow, permissions, and arithmetic; the model supplies&lt;br&gt;
the judgment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Side by side
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;
&lt;strong&gt;Jev 1.13&lt;/strong&gt; (TypeSafe)&lt;/th&gt;
&lt;th&gt;
&lt;strong&gt;Drex 2.0&lt;/strong&gt; (Nace)&lt;/th&gt;
&lt;th&gt;
&lt;strong&gt;Laya&lt;/strong&gt; (ConvAI)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Weights&lt;/td&gt;
&lt;td&gt;Closed&lt;/td&gt;
&lt;td&gt;Open, under Open RAIL-M (use restrictions; not OSI open source)&lt;/td&gt;
&lt;td&gt;Open, Apache 2.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hosted API&lt;/td&gt;
&lt;td&gt;Yes (&lt;code&gt;api.typesafe.ai&lt;/code&gt;; also via OpenRouter)&lt;/td&gt;
&lt;td&gt;Yes (&lt;code&gt;console.nace.ai&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;No first-party API; self-host (&lt;code&gt;laya-serve&lt;/code&gt;). Third-party: Vercel AI Gateway (free through October 31, 2026, billed after). Plus a demo Space&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Model&lt;/td&gt;
&lt;td&gt;Not disclosed&lt;/td&gt;
&lt;td&gt;Qwen3.6-35B-A3B MoE (35B total, ~3B active)&lt;/td&gt;
&lt;td&gt;Encoders: ModernBERT-large 421M, mmBERT-base 322M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hardware to self-host&lt;/td&gt;
&lt;td&gt;n/a&lt;/td&gt;
&lt;td&gt;Large GPU: ~70 GB bf16, ~37 GB Q8 GGUF&lt;/td&gt;
&lt;td&gt;Small: a T4, or CPU (193–464 ms)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context&lt;/td&gt;
&lt;td&gt;64K per request / 32K per question; 262K with the long-context header&lt;/td&gt;
&lt;td&gt;128K state (hosted); self-host defaults to 16K, up to 128K&lt;/td&gt;
&lt;td&gt;512 (English) / 1,024; up to 8K multilingual&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Latency&lt;/td&gt;
&lt;td&gt;236–316 ms p50 (independently measured)&lt;/td&gt;
&lt;td&gt;~25 req/s per H100 (vendor)&lt;/td&gt;
&lt;td&gt;33–40 ms on a T4 (vendor)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Zero-shot quality&lt;/td&gt;
&lt;td&gt;The reference point&lt;/td&gt;
&lt;td&gt;Vendor reports ahead of Jev on its Decision Index (61.25 vs 57.96), slightly behind on JevBench (85.7% vs 86.6%)&lt;/td&gt;
&lt;td&gt;Weak: 0.362 on typed-decisions, below a 0.461 majority-class baseline&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;After fine-tuning&lt;/td&gt;
&lt;td&gt;Not offered; you steer it through state and instructions&lt;/td&gt;
&lt;td&gt;Offered as a vendor service&lt;/td&gt;
&lt;td&gt;0.766 vs a third-party-published Jev 0.727 on the same benchmark&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Many options&lt;/td&gt;
&lt;td&gt;Up to 255; 79.2% on the full Banking77 test (77 labels)&lt;/td&gt;
&lt;td&gt;Up to 255&lt;/td&gt;
&lt;td&gt;Drops past ~20 options at default settings: 0.425 on Banking77&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Calibration&lt;/td&gt;
&lt;td&gt;No vendor figure; independent ECE 0.02–0.35 depending on the task&lt;/td&gt;
&lt;td&gt;No figures published&lt;/td&gt;
&lt;td&gt;Over-confident until temperature-fitted (0.466 → 0.081)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Languages&lt;/td&gt;
&lt;td&gt;English primary; others, including CJK, handled less accurately&lt;/td&gt;
&lt;td&gt;No list published&lt;/td&gt;
&lt;td&gt;100+ (45 of 51 measured languages usable), with a built-in language router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Price&lt;/td&gt;
&lt;td&gt;$0.042 per 1M input tokens, output free&lt;/td&gt;
&lt;td&gt;Hosted: $0.06 per 1M input tokens (v2.0), output free, $25 signup credit. Self-host: royalty-free for personal or research use, or organizations under $1M revenue and funding; others need a commercial license&lt;/td&gt;
&lt;td&gt;Free (self-host)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rate limits&lt;/td&gt;
&lt;td&gt;Set per organization in requests/s and tokens/s; the numbers are in your console, not the public docs. My test: ~850 requests/min sustained (806 calls in 57 s, 4 in flight), no 429s&lt;/td&gt;
&lt;td&gt;Free tier: 120 requests/min, 8 in flight. Paid: 600 requests/min, 16 in flight. My test: 429s on the free tier even when paced below 110 requests/min; none after adding credit (~800 calls in about 2 minutes)&lt;/td&gt;
&lt;td&gt;None when self-hosted; your own hardware is the limit. AI Gateway limits not published&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Jev 1.14 shipped as a preview (&lt;code&gt;jev-preview&lt;/code&gt;) on October 14; &lt;code&gt;jev-latest&lt;/code&gt; still points to 1.13.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one when
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Jev&lt;/strong&gt; if you want it to work zero-shot today with the most mature SDKs and docs, and a
hosted-only service is fine.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Drex&lt;/strong&gt; if you want both doors open: a hosted API priced close to Jev today, and open weights you
can move in-house later if data has to stay in your own environment (check the license if your
organization is above its $1M thresholds). It also has the largest default context (128K).
Self-hosting it takes a large GPU.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laya&lt;/strong&gt; if the task is narrow and high-volume, latency matters, and you have labeled examples to
fine-tune on. It is the only one that runs comfortably on CPU or at the edge, and the only one
that publishes multilingual results.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In one line: Jev is the hosted default, Drex offers the same idea both hosted and as open weights,&lt;br&gt;
and Laya is a very small model you train and run yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Read the benchmarks carefully
&lt;/h2&gt;

&lt;p&gt;Almost none of these numbers are directly comparable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Drex's&lt;/strong&gt; figures are self-reported by Nace.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Laya's&lt;/strong&gt; comparisons against Jev use Jev numbers published by third parties; the model card
says they were never measured by the Laya team. The widely quoted "beats Jev" result is for a
checkpoint fine-tuned on that benchmark's own training split; the base checkpoint scores below
majority-class guessing on it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jev's&lt;/strong&gt; latency, Banking77 and calibration figures come from two independent benchmark repos;
TypeSafe itself publishes no accuracy or calibration numbers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because the three share a protocol, the honest way to choose is cheap: take 50–100 real decisions&lt;br&gt;
from your own workload, run all three, and compare. Each model also has documented weak spots worth&lt;br&gt;
testing for: injected text shifting Jev's probabilities, Laya's &lt;code&gt;score&lt;/code&gt; questions and its &lt;code&gt;noul&lt;/code&gt;&lt;br&gt;
following option labels instead of the state.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.typesafe.ai/models" rel="noopener noreferrer"&gt;Jev models, context and pricing&lt;/a&gt; and
&lt;a href="https://docs.typesafe.ai/api" rel="noopener noreferrer"&gt;API reference&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.nace.ai/drex" rel="noopener noreferrer"&gt;Drex&lt;/a&gt;, its &lt;a href="https://console.nace.ai/docs/drex/reference/pricing" rel="noopener noreferrer"&gt;pricing&lt;/a&gt;,
&lt;a href="https://console.nace.ai/docs/drex/reference/limits" rel="noopener noreferrer"&gt;limits and rate limits&lt;/a&gt; and
&lt;a href="https://github.com/nace-ai/drex-decision-models" rel="noopener noreferrer"&gt;repo&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://huggingface.co/convaiinnovations/laya" rel="noopener noreferrer"&gt;Laya model card&lt;/a&gt; and
&lt;a href="https://huggingface.co/convaiinnovations/laya-typed-decisions" rel="noopener noreferrer"&gt;laya-typed-decisions&lt;/a&gt;, and
&lt;a href="https://vercel.com/changelog/laya-decision-model-now-available-on-ai-gateway-free-through-october-31" rel="noopener noreferrer"&gt;Laya on Vercel AI Gateway&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/AbdelStark/jev-benchmarks" rel="noopener noreferrer"&gt;jev-benchmarks&lt;/a&gt; and
&lt;a href="https://github.com/nibzard/decision-model-benchmark" rel="noopener noreferrer"&gt;decision-model-benchmark&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>decisionmodels</category>
    </item>
  </channel>
</rss>
