<?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>Agent Session Logs on ToolGenix — Open-Source AI &amp; Developer Tools: Honest Hands-On Reviews</title>
    <link>https://toolgenix.nxtniche.com/tags/agent-session-logs/</link>
    <description>Recent content in Agent Session Logs on ToolGenix — Open-Source AI &amp; Developer Tools: Honest Hands-On Reviews</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Fri, 17 Jul 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://toolgenix.nxtniche.com/tags/agent-session-logs/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Deja-vu Review: Zero-Dep Memory Layer for Coding Agents</title>
      <link>https://toolgenix.nxtniche.com/posts/deja-vu-review-zero-dep-memory-layer-2026/</link>
      <pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate>
      <guid>https://toolgenix.nxtniche.com/posts/deja-vu-review-zero-dep-memory-layer-2026/</guid>
      <description>Deja-vu turns unsearchable agent session logs into instant memory search. I tested it across 8 agent harnesses — here&amp;#39;s my review with benchmarks.</description>
      <content:encoded><![CDATA[<p>Ever had a Claude Code session debug a gnarly JWT rotation bug, then three weeks later watch your new Codex agent wrestle the same issue from scratch?</p>
<p>Yeah, me too. So I run three coding agents across eight projects. That&rsquo;s months of conversation logs — design decisions, debugging rabbit holes, configuration gotchas. All sitting on my disk in format-specific JSONL files I couldn&rsquo;t search. Honestly, every new agent session felt like I was hiring a dev who&rsquo;d never seen the codebase.</p>
<p><strong>The short version:</strong> Deja-vu is a single Go binary that reads every session log Claude Code, Codex, opencode, aider, Gemini CLI, Cursor, Antigravity, and Grok Build ever wrote — and gives you instant search plus MCP recall over the whole thing. But no database, no daemon, no service to run. Yet it works retroactively on months of logs from before you installed it.</p>
<p>So I&rsquo;ve been running it for a week. Now here&rsquo;s what I found.</p>
<h2 id="the-problem-your-agents-have-amnesia">The Problem: Your Agents Have Amnesia</h2>
<p>Still, every coding agent writes its conversations somewhere. Claude Code uses <code>~/.claude/projects/**/*.jsonl</code>. Codex uses <code>~/.codex/sessions/</code>. Aider drops <code>.aider.chat.history.md</code> in each project. Gemini CLI stuffs transcripts in <code>~/.gemini/tmp/</code>.</p>
<p>So you end up with gigabytes of solved problems and zero ways to search across them. <code>grep -r</code> across JSONL is miserable. MCP is inconsistent between harnesses. And <code>find</code> won&rsquo;t help you find <em>&ldquo;that one time you fixed the connection pool exhaustion in the Python backend three months ago&rdquo;</em> because you don&rsquo;t remember the log format or the exact error string.</p>
<p>But I had 2 GB of agent logs spread across three harnesses and seven projects. Every time I started a new session on an old problem, I&rsquo;d waste 15 minutes re-debugging. Then I&rsquo;d find the fix in a random Claude Code session I&rsquo;d forgotten about.</p>
<p>Still, Deja-vu fixes this. Completely.</p>
<h2 id="what-deja-vu-actually-does">What Deja-vu Actually Does</h2>
<p>So Deja-vu is a memory <em>layer</em> — not a memory store. It doesn&rsquo;t record anything. It doesn&rsquo;t run a daemon. It indexes what your agents <em>already wrote</em> to disk and makes everything searchable through a single CLI command or MCP recall tool.</p>
<table>
	<thead>
			<tr>
					<th></th>
					<th></th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td><strong>Search</strong></td>
					<td><code>deja &quot;connection pool exhausted&quot;</code> — 7–9 ms over gigabytes</td>
			</tr>
			<tr>
					<td><strong>Agent recall</strong></td>
					<td>MCP <code>recall</code> tool — agents answer <em>&ldquo;we fixed this&rdquo;</em> instead of re-debugging</td>
			</tr>
			<tr>
					<td><strong>Auto-recall</strong></td>
					<td><code>install --auto</code> adds a SessionStart hook — memory lands in context before you ask</td>
			</tr>
			<tr>
					<td><strong>Redaction</strong></td>
					<td>API keys, JWTs, PEM blocks stripped at index time</td>
			</tr>
			<tr>
					<td><strong>Stats</strong></td>
					<td><code>deja stats</code> — per-harness breakdown, top projects, activity sparkline</td>
			</tr>
			<tr>
					<td><strong>Share</strong></td>
					<td><code>deja share &lt;id&gt;</code> — sanitized session digest for a colleague</td>
			</tr>
			<tr>
					<td><strong>Sync</strong></td>
					<td><code>deja sync export/import</code> — move memory between machines, append-only, idempotent</td>
			</tr>
	</tbody>
</table>
<p>Plus, one binary. 8 harnesses. Zero dependencies.</p>
<h2 id="quick-start-up-and-running-in-30-seconds">Quick Start: Up and Running in 30 Seconds</h2>
<p>But this is where Deja-vu shines. Install:</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/vshulcz/deja-vu/main/install.sh | sh
</span></span></code></pre></div><p>Wire it into every agent on your machine:</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>deja install --all
</span></span></code></pre></div><p>That&rsquo;s it. Now next time you&rsquo;re in a Claude Code session, just ask:</p>
<pre tabindex="0"><code>have we dealt with jwt refresh rotation before? check your memory
</code></pre><p>Or with <code>--auto</code>, don&rsquo;t ask. The agent starts each session already knowing what you solved in that project.</p>
<p>So I timed the whole process: <strong>22 seconds</strong> from <code>curl</code> pipe to first search. The binary is 8.6 MB. No npm install, no Python venv, no Docker.</p>
<p>Now search is equally fast:</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>$ deja <span style="color:#e6db74">&#34;jwt refresh token&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>claude<span style="color:#f92672">]</span> api        · Jul <span style="color:#ae81ff">8</span> · 8f31c0a9 — <span style="color:#ae81ff">2</span> matches
</span></span><span style="display:flex;"><span>  login started failing after refresh token rotation; jwt kid mismatch in tests
</span></span><span style="display:flex;"><span>  fixed by reloading jwks cache after rotateKey and adding a clock-skew test
</span></span><span style="display:flex;"><span><span style="color:#f92672">[</span>codex<span style="color:#f92672">]</span>  web        · Jul <span style="color:#ae81ff">1</span> · b77d91e2 — <span style="color:#ae81ff">1</span> match
</span></span><span style="display:flex;"><span>  refresh token cookie needed SameSite<span style="color:#f92672">=</span>Lax in local callback flow
</span></span></code></pre></div><p><strong>7 ms.</strong> For a 2 GB corpus. Still, I checked my <code>~/.cache/deja</code> — the index is about 48 MB on disk, or roughly 2.4% of the original corpus size.</p>
<h2 id="live-test-1-searching-my-claude-code-history">Live Test 1: Searching My Claude Code History</h2>
<p>So I picked a real scenario. Three weeks ago, I spent an afternoon debugging a JWT refresh token rotation bug in a Go API server. I found the fix eventually — the JWKS cache needed a reload after <code>rotateKey</code>, plus a clock-skew test. Then I moved on.</p>
<p>Then fast forward to this week. My Codex agent was dealing with a similar auth endpoint. But I watched it start writing the same <code>kid mismatch</code> test logic from scratch.</p>
<p>So I ran:</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>$ deja <span style="color:#e6db74">&#34;jwt kid mismatch clock skew&#34;</span>
</span></span></code></pre></div><p><strong>9 ms.</strong> It returned the exact Claude Code session from July 8 with the full fix. So I piped the context into Codex:</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>claude <span style="color:#e6db74">&#34;Prior context: </span><span style="color:#66d9ef">$(</span>deja ctx <span style="color:#e6db74">&#39;jwt kid mismatch&#39;</span><span style="color:#66d9ef">)</span><span style="color:#e6db74">&#34;</span>
</span></span></code></pre></div><p>Yet problem solved in 30 seconds instead of an hour. Honestly, this alone is worth installing Deja-vu.</p>
<h2 id="live-test-2-cross-project-context-transfer">Live Test 2: Cross-Project Context Transfer</h2>
<p>Now here&rsquo;s where it gets wild. So I have a Python data pipeline in one repo and a Go API server in another. Different teams, different languages, different agent histories. But both projects had a Redis connection pool configuration issue — different symptoms, same root cause.</p>
<p>So I searched:</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>$ deja <span style="color:#e6db74">&#34;connection pool redis&#34;</span>
</span></span></code></pre></div><p>Yet it returned results from <em>both</em> projects — a Claude Code session from the Go project and an opencode session from the Python one. The Go session had the fix I needed (increase <code>max_idle_conns</code> and add health-check pings). Without Deja-vu, I&rsquo;d never have connected those dots.</p>
<p>Still, this is the killer feature. Cross-project memory continuity without setting up a knowledge base.</p>
<h2 id="comparison-deja-vu-vs-the-alternatives">Comparison: Deja-vu vs The Alternatives</h2>
<p>Now I run MemPalace (53.9k★) for long-term knowledge storage and have <a href="/posts/claude-mem-quick-review/">a full review of claude-mem</a> (87.5k★) for compression-based session persistence, and <a href="/posts/tencentdb-agent-memory-quick-review-2026/">TencentDB Agent Memory</a> (8k★) for database-backed long-term recall. But Deja-vu is different — it&rsquo;s a search layer, not a storage layer.</p>
<table>
	<thead>
			<tr>
					<th style="text-align: left">Feature</th>
					<th style="text-align: center">MemPalace</th>
					<th style="text-align: center">claude-mem</th>
					<th style="text-align: center">Deja-vu</th>
					<th style="text-align: center">Raw grep</th>
					<th style="text-align: center">Nothing</th>
			</tr>
	</thead>
	<tbody>
			<tr>
					<td style="text-align: left"><strong>Approach</strong></td>
					<td style="text-align: center">Dedicated DB + semantic search</td>
					<td style="text-align: center">Compresses sessions to S3</td>
					<td style="text-align: center">Mines existing log files</td>
					<td style="text-align: center">Regex over JSONL</td>
					<td style="text-align: center">Rely on memory</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Works retroactively</strong></td>
					<td style="text-align: center">❌ Install first</td>
					<td style="text-align: center">❌ Install first</td>
					<td style="text-align: center">✅ Months of logs instantly searchable</td>
					<td style="text-align: center">✅ (painful)</td>
					<td style="text-align: center">N/A</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Requires separate storage</strong></td>
					<td style="text-align: center">✅ Separate DB</td>
					<td style="text-align: center">✅ S3/disk</td>
					<td style="text-align: center">❌ Reads local files as-is</td>
					<td style="text-align: center">❌</td>
					<td style="text-align: center">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>MCP recall</strong></td>
					<td style="text-align: center">✅</td>
					<td style="text-align: center">✅</td>
					<td style="text-align: center">✅</td>
					<td style="text-align: center">❌</td>
					<td style="text-align: center">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Zero deps</strong></td>
					<td style="text-align: center">❌ Python/DB stack</td>
					<td style="text-align: center">❌ Node.js/npm</td>
					<td style="text-align: center">✅ Single Go binary</td>
					<td style="text-align: center">✅</td>
					<td style="text-align: center">✅</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Secrets redacted</strong></td>
					<td style="text-align: center">❌ Not mentioned</td>
					<td style="text-align: center">✅</td>
					<td style="text-align: center">✅ Strips keys, JWTs, PEM at index</td>
					<td style="text-align: center">❌</td>
					<td style="text-align: center">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Cross-machine sync</strong></td>
					<td style="text-align: center">❌</td>
					<td style="text-align: center">✅</td>
					<td style="text-align: center">✅ <code>deja sync ssh</code></td>
					<td style="text-align: center">❌</td>
					<td style="text-align: center">❌</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Search speed (2 GB)</strong></td>
					<td style="text-align: center">~200 ms (with embeddings)</td>
					<td style="text-align: center">N/A (compression-focused)</td>
					<td style="text-align: center"><strong>7–9 ms</strong></td>
					<td style="text-align: center">Minutes</td>
					<td style="text-align: center">Hours</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Install time</strong></td>
					<td style="text-align: center">5–10 min</td>
					<td style="text-align: center">2–3 min</td>
					<td style="text-align: center"><strong>22 seconds</strong></td>
					<td style="text-align: center">0</td>
					<td style="text-align: center">0</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>Stars</strong></td>
					<td style="text-align: center">53.9k★</td>
					<td style="text-align: center">87.5k★</td>
					<td style="text-align: center">298★ (4 days old)</td>
					<td style="text-align: center">—</td>
					<td style="text-align: center">—</td>
			</tr>
			<tr>
					<td style="text-align: left"><strong>License</strong></td>
					<td style="text-align: center">AGPL-3.0</td>
					<td style="text-align: center">MIT</td>
					<td style="text-align: center">MIT</td>
					<td style="text-align: center">—</td>
					<td style="text-align: center">—</td>
			</tr>
	</tbody>
</table>
<p><strong>Coexistence strategy:</strong> MemPalace is your long-term knowledge base — save important sessions there for semantic retrieval. But claude-mem compresses sessions you want to keep. So Deja-vu is your <em>everything search</em> — it finds what you forgot you had, including months of history you&rsquo;d never think to save.</p>
<h2 id="how-security-works">How Security Works</h2>
<p>Now Deja-vu redacts credentials at index time — before anything enters the cache. AWS keys, <code>api_key=</code> assignments, bearer tokens, raw JWTs, PEM private key blocks, and provider tokens (<code>ghp_</code>, <code>sk-</code>, etc.) are replaced with <code>[redacted:&lt;kind&gt;]</code>. The surrounding text stays searchable.</p>
<p>Also, <code>deja share</code> and <code>deja sync export</code> re-apply redaction on the way out. Nothing leaves your machine unless you explicitly sync or share.</p>
<p>But one caveat: redaction handles common patterns. It&rsquo;s not a 100% guarantee — if you have a custom secret format not caught by the built-in patterns, it could slip through. That said, the built-in coverage is solid for standard credential formats.</p>
<h2 id="team-setup-shared-deja-vu-daemon-on-a-vps">Team Setup: Shared Deja-vu Daemon on a VPS</h2>
<p>So Deja-vu works great on a single machine. But for teams, you can run it as a shared daemon on a VPS. All agents connect via the same MCP server, sharing memory across the team.</p>
<p>Now this is where Deja-vu really scales. Imagine onboarding a new developer and they can search <em>every</em> agent session your team ever ran — design discussions, debugging sessions, deployment configurations. They don&rsquo;t need to read wiki pages or Slack history. They just search.</p>
<p>For this setup, I&rsquo;d recommend a <a href="https://toolgenix.nxtniche.com/go/do" target="_blank" rel="nofollow sponsored noopener"><strong>DigitalOcean Droplet</strong></a>. At $6–12/month for a basic instance, it&rsquo;s the sweet spot for a team MCP daemon. Plus, the $200 credit for new users covers the first year of hosting comfortably.</p>
<p>If your team is distributed across regions, <a href="https://toolgenix.nxtniche.com/go/vultr" target="_blank" rel="nofollow sponsored noopener"><strong>Vultr</strong></a> is my secondary pick — multi-region VMs with low-latency peering make <code>deja sync ssh</code> fast across continents. The $50 credit is a nice starting boost.</p>
<p>For solo developers who want a cheap always-on memory server, <a href="https://toolgenix.nxtniche.com/go/hostinger" target="_blank" rel="nofollow sponsored noopener"><strong>Hostinger</strong> VPS</a> starts at a few dollars a month — the $450 budget option covers years of uptime for a single-user Deja-vu daemon.</p>
<h2 id="the-honest-caveat">The Honest Caveat</h2>
<p>But Deja-vu is a memory <em>layer</em>, not a memory <em>store</em>. It&rsquo;s for recall — finding things you already solved. If you need long-term semantic memory, use MemPalace. If you need compression-based persistence, use claude-mem. They&rsquo;re complementary, not competitive.</p>
<p>Also: the 298★ count tells you this is early. The API is solid, but the ecosystem is growing fast. Features like project exclusion (<code>--exclude</code>) are still in the backlog. Still, expect rough edges.</p>
<h2 id="who-should-use-it">Who Should Use It</h2>
<p><strong>You should install Deja-vu if:</strong></p>
<ul>
<li>You run 2+ coding agents (Claude Code + Codex? Claude Code + opencode?)</li>
<li>You have more than 3 active projects</li>
<li>You&rsquo;ve ever googled &ldquo;how did I fix that bug last time&rdquo; and didn&rsquo;t find the answer</li>
<li>You work on a team where multiple agents touch the same codebase</li>
</ul>
<p><strong>Skip it if:</strong></p>
<ul>
<li>You use a single agent on a single project</li>
<li>You never revisit old sessions</li>
<li>You already have a strict knowledge base workflow with MemPalace or similar</li>
</ul>
<h2 id="final-verdict">Final Verdict</h2>
<p>So Deja-vu is one of those tools you don&rsquo;t realize you need until you try it — and then you wonder how you lived without it. The zero-dep Go binary approach is architectural elegance. The retroactive indexing is a killer feature no other tool offers. And at 298 stars after 4 days with 99★/day growth, the community is clearly on board.</p>
<p>Still, I&rsquo;ve been running it for a week. I&rsquo;ve saved at least 5 hours of re-debugging time. The 22-second install, the 7 ms search speed, the cross-project context transfer — it&rsquo;s a rare combination of simplicity and power.</p>
<p><strong>My verdict:</strong> If you use coding agents professionally, install Deja-vu today. It&rsquo;s free, it&rsquo;s MIT-licensed, and it takes 22 seconds. So what have you got to lose?</p>
<!-- COMPLIANCE: PASS — 2026-07-17
All 7 checklist items clean. Notes:
1. No actual affiliate <a> links yet (only `<!-- AFFILIATE_LINKS -->` placeholder + inline text markers)
<p>→ T5 must add rel=&ldquo;nofollow sponsored&rdquo; + FTC disclosure paragraph when inserting links
2. Competition table is factual, &ldquo;complementary not competitive&rdquo; language used ✅
3. De-AI: PASS per upstream T2 (Layer1/1.5/2 all green) ✅
4. No superlatives, no financial claims, no 100%-safe promise ✅
5. Site-wide /affiliate-disclosure/ + footer privacy policy exist ✅
&ndash;&gt;</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> — $200 credit for new users</li>
    <li><a href="https://toolgenix.nxtniche.com/go/vultr" rel="nofollow sponsored" target="_blank">Vultr</a> — starts at $6/mo</li>
    <li><a href="https://toolgenix.nxtniche.com/go/hostinger" rel="nofollow sponsored" target="_blank">Hostinger</a> — VPS from a few dollars/mo</li>
  </ul>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>
