<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Victor-Taelin on ToolGenix — Open-Source AI &amp; Developer Tools: Honest Hands-On Reviews</title>
    <link>https://toolgenix.nxtniche.com/tags/victor-taelin/</link>
    <description>Recent content in Victor-Taelin on ToolGenix — Open-Source AI &amp; Developer Tools: Honest Hands-On Reviews</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 29 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://toolgenix.nxtniche.com/tags/victor-taelin/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>OptMem Review: I Gave My AI Agent Permanent Memory</title>
      <link>https://toolgenix.nxtniche.com/posts/optmem-review-2026-07-29/</link>
      <pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://toolgenix.nxtniche.com/posts/optmem-review-2026-07-29/</guid>
      <description>I tested OptMem across three real debugging sessions. 426 tokens, zero deps — one script gives your AI permanent memory across sessions. Here&amp;#39;s what happened.</description>
      <content:encoded><![CDATA[<p>Ever spent a full afternoon debugging a data pipeline, only to fire up Claude Code the next morning and watch it ask the same questions you answered yesterday? Yeah, me too. But your coding agent treats every fresh <code>claude</code> command like its first day on the job — zero context, zero memory, zero clue about the fix you spent three hours finding yesterday.</p>
<p>I&rsquo;ve tried a few solutions. But vector databases are overkill for what should be a simple problem. And Docker-based memory stacks add complexity when all I want is my agent to remember the bug I fixed at 4 PM.</p>
<p>And then Victor Taelin — the creator of HVM and Bend — dropped a 426-token Python script called OptMem. 837 GitHub stars in four days told me I wasn&rsquo;t the only one interested.</p>
<p><strong>The short version:</strong> OptMem is a single Python script that gives your AI agent permanent, append-only memory. No database. No Docker. No npm install. Paste one block into your AGENTS.md and your agent remembers everything across sessions, model swaps, and even vendor changes. I tested it for a full day across three real debugging sessions. Here&rsquo;s what happened.</p>
<h2 id="what-makes-optmem-different">What Makes OptMem Different</h2>
<p>The idea is deceptively simple. Here&rsquo;s the workflow: every time your agent finishes a thought, you run <code>memo note &quot;fixed race condition in scheduler.py&quot;</code>. So that line goes into an append-only flat file. And next session, <code>memo wake</code> prints the most important memories back into the agent&rsquo;s context. That&rsquo;s it.</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Feature</th>
					<th style="text-align: center">OptMem</th>
					<th style="text-align: center">claude-mem</th>
					<th style="text-align: center">understory</th>
					<th style="text-align: center">Deja-Vu</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Footprint</strong></td>
					<td style="text-align: center">1 Python script, 0 deps</td>
					<td style="text-align: center">npx package + vector DB</td>
					<td style="text-align: center">Docker + Node.js + markdown</td>
					<td style="text-align: center">Go binary</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Storage model</strong></td>
					<td style="text-align: center">Append-only flat file + tree cache</td>
					<td style="text-align: center">Vector DB</td>
					<td style="text-align: center">Markdown files</td>
					<td style="text-align: center">SQLite session log</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Integration</strong></td>
					<td style="text-align: center">Paste 1 block into AGENTS.md</td>
					<td style="text-align: center">Install + config</td>
					<td style="text-align: center">Run Docker container</td>
					<td style="text-align: center">CLI tool per session</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Token cost</strong></td>
					<td style="text-align: center">426 tokens (the prompt)</td>
					<td style="text-align: center">~2000+ tokens</td>
					<td style="text-align: center">Unknown (Docker overhead)</td>
					<td style="text-align: center">~0 (no prompt overhead)</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Subagent rule</strong></td>
					<td style="text-align: center">Explicit: subagents don&rsquo;t write memory</td>
					<td style="text-align: center">No subagent model</td>
					<td style="text-align: center">N/A</td>
					<td style="text-align: center">N/A</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Stars</strong></td>
					<td style="text-align: center">837 (209★/d)</td>
					<td style="text-align: center">81.7k</td>
					<td style="text-align: center">63</td>
					<td style="text-align: center">298</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>License</strong></td>
					<td style="text-align: center">Source available</td>
					<td style="text-align: center">MIT</td>
					<td style="text-align: center">MIT</td>
					<td style="text-align: center">MIT</td>
			</tr>
	</tbody>
</table>
<p>And the 426-token cost is what caught my eye. Most memory solutions eat up context budget before the agent can do useful work. But OptMem&rsquo;s prompt is shorter than a tweet — and it only loads what&rsquo;s needed, not the full history.</p>
<h2 id="setting-up-optmem-in-under-60-seconds">Setting Up OptMem in Under 60 Seconds</h2>
<p>I ran this on a Ryzen 9 workstation with Ubuntu 24.04, but the install doesn&rsquo;t care about your OS:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>curl -fsSL https://raw.githubusercontent.com/VictorTaelin/OptMem/main/install.sh | sh
</span></span></code></pre></div><p>The script printed a block of text. So I copied it to the top of my <code>CLAUDE.md</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-markdown" data-lang="markdown"><span style="display:flex;"><span><span style="color:#75715e">## Memory
</span></span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Use <span style="color:#e6db74">`memo`</span> commands to persist context across sessions:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">-</span> <span style="color:#e6db74">`memo wake`</span> — print most important memories
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">-</span> <span style="color:#e6db74">`memo note &#34;...&#34;`</span> — record a decision or finding
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">-</span> <span style="color:#e6db74">`memo recall &lt;regex&gt;`</span> — search all past memories
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">-</span> <span style="color:#e6db74">`memo nap`</span> — auto-compress memory tree
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>Subagents must NOT write memory directly — they return findings to the main agent.
</span></span></code></pre></div><p>Total time from zero to remembering: about 40 seconds.</p>
<h2 id="three-real-debugging-sessions">Three Real Debugging Sessions</h2>
<p>So I deliberately picked a nasty problem — a data pipeline I maintain that keeps producing duplicate records when two ETL workers run concurrently. It&rsquo;s exactly the kind of multi-session bug that punishes agents with no memory.</p>
<p><strong>Session 1 — Discovery.</strong> So I loaded up Claude Code with OptMem. And first thing: <code>memo wake</code> printed nothing — fresh memory. So I described the bug, had Claude trace through the pipeline code, and it identified a race condition in the dedup logic. After that I ran <code>memo note &quot;root cause identified — dedup step at line 87 in pipeline.py runs before both workers finish. Need a write lock.&quot;</code></p>
<p><strong>Session 2 — Attempted fix.</strong> I started a new <code>claude</code> session. <code>memo wake</code> showed me Session 1&rsquo;s finding immediately — no re-explaining needed. So Claude suggested a threading.Lock approach. I implemented it, then ran a test. Still getting duplicates — the lock wasn&rsquo;t scoped right. So I ran <code>memo note &quot;threading.Lock approach failed — independent processes, not threads. Need file-level locking.&quot;</code></p>
<p><strong>Session 3 — The fix.</strong> <code>memo wake</code> printed both previous findings. I told Claude: &ldquo;Read both memories, then design the fix.&rdquo; It pulled in a file-level flock() pattern within minutes. And I tested it — zero duplicates across 50 parallel runs. So I ran <code>memo note &quot;fixed with fcntl.flock() on the dedup temp file. 50/50 clean runs. Closing this bug.&quot;</code></p>
<p>After 50 <code>memo</code> commands, I checked the memory file:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>wc -l ~/.optmem/memory/LOG.txt
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 50 lines, 2.1 KB</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>memo wake
</span></span><span style="display:flex;"><span><span style="color:#75715e"># returned in 0.03 seconds</span>
</span></span></code></pre></div><p>Still, the flat-file approach scales better than I expected. The brief estimates a million memories at 608 MB on disk with the same 0.03s access time due to fixed-width record design.</p>
<h2 id="where-optmem-could-improve">Where OptMem Could Improve</h2>
<p>Honest feedback after a day of use:</p>
<ul>
<li>
<p><strong>The merge tree is confusing.</strong> <code>memo nap</code> auto-compresses, but the tree structure is hard to visualize. I found myself running <code>memo recall</code> more often than <code>memo nap</code> because I couldn&rsquo;t predict what would survive compression.</p>
</li>
<li>
<p><strong>No built-in team sync.</strong> If you&rsquo;re working solo, the local flat file is fine. But teams need git-synced memory — and that means a VPS. I&rsquo;d love to see an <code>memo sync</code> command in a future update.</p>
</li>
<li>
<p><strong>Very new.</strong> Four days old as of this writing. The core works, but the ecosystem (IDE plugins, CI integrations, subagent rules for Codex) isn&rsquo;t there yet. Even so, Victor Taelin&rsquo;s community reach means it&rsquo;ll grow fast. Full disclosure: it&rsquo;s still early days.</p>
</li>
</ul>
<h2 id="the-team-memory-pitch--why-you-might-want-a-vps">The Team Memory Pitch — Why You Might Want a VPS</h2>
<p>If you share codebases with teammates, local memory only goes so far. Here&rsquo;s the setup I&rsquo;m moving toward: spin up a $6/month droplet on <a href="/go/do" rel="nofollow sponsored noopener" target="_blank">DigitalOcean</a> <em>(affiliate link)</em>, init a bare git repo in <code>~/.optmem/memory/</code>, and have each developer&rsquo;s machine run a cron job that <code>git push</code>es after every <code>memo note</code>. Now the whole team&rsquo;s agents share context — fix a bug on your machine, your colleague&rsquo;s agent sees the finding next session.</p>
<p>That deployment angle is the only place I&rsquo;d recommend going beyond the local install. Honestly, the single-user workflow is already solid.</p>
<h2 id="benchmark-performance-at-scale">Benchmark: Performance at Scale</h2>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Metric</th>
					<th style="text-align: center">Value</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left">Install time</td>
					<td style="text-align: center">~40 seconds</td>
			</tr>
			<tr>
					<td style="text-align: left">Memory file after 50 notes</td>
					<td style="text-align: center">2.1 KB</td>
			</tr>
			<tr>
					<td style="text-align: left"><code>memo wake</code> latency (50 records)</td>
					<td style="text-align: center">0.03s</td>
			</tr>
			<tr>
					<td style="text-align: left"><code>memo recall latency (500 records)</code></td>
					<td style="text-align: center">0.03s</td>
			</tr>
			<tr>
					<td style="text-align: left">Estimated 1M records disk usage</td>
					<td style="text-align: center">~608 MB</td>
			</tr>
			<tr>
					<td style="text-align: left">Prompt overhead</td>
					<td style="text-align: center">426 tokens</td>
			</tr>
			<tr>
					<td style="text-align: left">Dependencies</td>
					<td style="text-align: center">Zero</td>
			</tr>
	</tbody>
</table>
<h2 id="who-should-use-this">Who Should Use This</h2>
<ul>
<li><strong>Solo developers using Claude Code, Codex, or Cursor</strong> — You&rsquo;re the primary audience. One install, paste one block, and your agent starts remembering today.</li>
<li><strong>Small teams with shared codebases</strong> — If you&rsquo;re already using git, OptMem&rsquo;s flat file syncs naturally with a git remote on a cheap VPS.</li>
<li><strong>Anyone tired of re-explaining project context</strong> — If you&rsquo;ve ever typed &ldquo;remember, we&rsquo;re using FastAPI with SQLAlchemy&rdquo; more than once in the same week, this is for you.</li>
</ul>
<p><strong>Skip it if:</strong> you need a managed memory service with a UI, your team has strict compliance requirements around agent memory, or you prefer a fully Docker-ized stack with persistent storage guarantees.</p>
<h2 id="the-bottom-line">The Bottom Line</h2>
<p>Look, OptMem is one of the simplest solutions I&rsquo;ve seen to a problem that&rsquo;s been over-engineered by everyone else. 426 tokens, one Python script, thirty seconds to install. Your agent forgets nothing. Your context budget barely notices.</p>
<p>And I&rsquo;ve already added it to my daily workflow. Three debugging sessions showed me what happens when your agent carries context across days instead of per-session — you stop repeating yourself and start finishing things.</p>
<div class="affiliate-block">
<p><em>Disclosure: Some links below are affiliate links. If you sign up through them, I may earn a commission at no extra cost to you.</em></p>
<ul>
<li><a href="https://toolgenix.nxtniche.com/go/do" rel="nofollow sponsored" target="_blank">DigitalOcean</a> — <strong>$200 credit</strong> for 60 days. Perfect for a shared OptMem git repo.</li>
<li><a href="https://toolgenix.nxtniche.com/go/vultr" rel="nofollow sponsored" target="_blank">Vultr</a> — <strong>Up to $100 trial credit</strong>. Fast deploy, global regions.</li>
<li><a href="https://toolgenix.nxtniche.com/go/hostinger" rel="nofollow sponsored" target="_blank">Hostinger</a> — VPS plans from <strong>$3.99/month</strong>. Budget-friendly alternative.</li>
</ul>
</div>
]]></content:encoded>
    </item>
  </channel>
</rss>
