<?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: solosre</title>
    <description>The latest articles on DEV Community by solosre (@solosre).</description>
    <link>https://dev.to/solosre</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%2F3984679%2Ff673915d-21cb-46f1-8ae9-6a8aef9ea412.png</url>
      <title>DEV Community: solosre</title>
      <link>https://dev.to/solosre</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/solosre"/>
    <language>en</language>
    <item>
      <title>What 60+ Claude Code memory entries taught me about solo ops</title>
      <dc:creator>solosre</dc:creator>
      <pubDate>Mon, 22 Jun 2026 03:33:08 +0000</pubDate>
      <link>https://dev.to/solosre/what-60-claude-code-memory-entries-taught-me-about-solo-ops-18eo</link>
      <guid>https://dev.to/solosre/what-60-claude-code-memory-entries-taught-me-about-solo-ops-18eo</guid>
      <description>&lt;p&gt;I run a paid infrastructure service. Alone. No co-founder, no on-call rotation, no senior engineer to escalate to. My only collaborator is Claude Code, and after about a year, my persistent memory has grown to 60+ entries.&lt;/p&gt;

&lt;p&gt;Those entries have become more valuable than any runbook I've written. They've also taught me — painfully — what makes memory architecture work and what makes it quietly fail.&lt;/p&gt;

&lt;p&gt;If you're running anything solo with an AI agent, here are five lessons I wish I'd burned into my brain on day one.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Write the &lt;em&gt;why&lt;/em&gt;, not the &lt;em&gt;what&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;The first instinct when you start using persistent memory is to log what you did. "Migrated service X from tool A to tool B." "Switched protocol from X to Y."&lt;/p&gt;

&lt;p&gt;Six months later, when something breaks, that information is &lt;strong&gt;worthless&lt;/strong&gt;. You don't need to know what you did — &lt;code&gt;git log&lt;/code&gt; and &lt;code&gt;git blame&lt;/code&gt; already tell you that. You need to know &lt;em&gt;why&lt;/em&gt; you made that choice. What constraint forced it. What you ruled out.&lt;/p&gt;

&lt;p&gt;Real example. The bad version of an entry I once wrote:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Switched the worker pool from Docker containers to systemd units on host.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tells me nothing my git history doesn't. The rewritten version:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;systemd units on the host instead of Docker containers on this VPS provider. Why: the provider runs aggressive kernel-wide OOM scoring across tenants; containers were getting reaped by oom-killer triggered by &lt;em&gt;other&lt;/em&gt; customers' workloads. systemd processes survive because they're scored as system processes. How to apply: any VPS where &lt;code&gt;dmesg | grep -i oom&lt;/code&gt; shows kills from PIDs you don't recognize — don't run containers there, run systemd.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That one entry has saved me three rebuilds. Because the next time I'm tempted to "just dockerize it, it'll be cleaner," the memory entry says: no, you already learned this, you'll be back here in a week.&lt;/p&gt;

&lt;p&gt;The pattern: &lt;strong&gt;always include &lt;code&gt;Why:&lt;/code&gt; and &lt;code&gt;How to apply:&lt;/code&gt; lines.&lt;/strong&gt; If a memory entry can't answer those two questions, delete it.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Memory rots — prune or pay
&lt;/h2&gt;

&lt;p&gt;About six months in, I did a memory audit. Of 60 entries, &lt;strong&gt;14 referenced things that no longer existed&lt;/strong&gt;. A file path that had been renamed. A function that had been deleted. An architecture I'd since replaced.&lt;/p&gt;

&lt;p&gt;The cost wasn't just irrelevant context. It was actively &lt;em&gt;misleading&lt;/em&gt; context. The agent would surface a memory entry that pointed to a file path, the file wouldn't exist, and the agent would either dead-end or fabricate.&lt;/p&gt;

&lt;p&gt;I tried scheduled audits. Didn't work — I'd skip them. What worked: &lt;strong&gt;every time I read a memory entry mid-task, I make a snap call — still true? If yes, leave it. If no, edit or delete in that moment.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Memory isn't a backup. It's a live dependency. You either keep it in your operations loop or it becomes lore.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Feedback memories are the highest leverage. And the hardest to write.
&lt;/h2&gt;

&lt;p&gt;My best memory entries don't describe systems. They describe what &lt;em&gt;not&lt;/em&gt; to do.&lt;/p&gt;

&lt;p&gt;"Don't run X on Y." "Avoid this approach because we tried it last quarter and it cost three nights of debugging." "This UI shortcut looks fast but breaks under condition Z."&lt;/p&gt;

&lt;p&gt;These entries save the most time because they prevent re-discovering the same trap. But they're also the entries I have to actively force myself to write. Because when you've just spent four hours debugging something, the impulse is: I fixed it, I'm done, ship it. Not: let me sit here for another five minutes and document what I almost didn't notice.&lt;/p&gt;

&lt;p&gt;I now ask, after any frustrating debugging session: &lt;em&gt;did I just learn something my past self would have wanted to know?&lt;/em&gt; If yes — entry. Even if it's two lines.&lt;/p&gt;

&lt;p&gt;These are the entries with the highest savings per character written. They are also the easiest to skip.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The index entry decides retrieval. Not the file.
&lt;/h2&gt;

&lt;p&gt;I keep a &lt;code&gt;MEMORY.md&lt;/code&gt; that's an index — title plus a one-line hook for each memory file. After dozens of entries, I realized something uncomfortable:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The index entry matters more than the file content.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Why? Because the index is what the AI sees first. The body of the file is only loaded when the agent decides to read it. And the agent's decision is based entirely on the index description.&lt;/p&gt;

&lt;p&gt;If &lt;code&gt;webhook_replay.md&lt;/code&gt; is described as &lt;code&gt;"webhook stuff"&lt;/code&gt;, the AI never opens it. If described as&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Stripe webhook replay: idempotency-key collisions vs. event_id reuse; what to do when a partial DB failure leaves the worker in an unknown state; the one query that tells you if it's safe to re-fire&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;— the AI opens it in exactly the right moments.&lt;/p&gt;

&lt;p&gt;The memory file might be 500 words. The index entry is 100 characters. &lt;strong&gt;The 100 characters do all the retrieval work.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I write a new memory entry now, I spend more time on the index line than I do on the file body. This feels backwards. It isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Indexes have a context budget
&lt;/h2&gt;

&lt;p&gt;This one I had to learn the hard way: my agent truncates &lt;code&gt;MEMORY.md&lt;/code&gt; after a certain line count. For me, lines after 200 silently drop out of context. They might as well not exist.&lt;/p&gt;

&lt;p&gt;This means &lt;strong&gt;MEMORY.md isn't just an index — it's a layout problem.&lt;/strong&gt; Which 200 lines deserve to live in every conversation? Which entries are good enough to keep on disk but not critical enough to load every time?&lt;/p&gt;

&lt;p&gt;Pruning isn't only about deleting things that became wrong. It's about deciding what earns context.&lt;/p&gt;

&lt;p&gt;My rule now: if I haven't read or used a memory entry in two months and it's not load-bearing, the index line moves down or out. The file stays on disk for archaeology. The index line is sacred real estate.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I'm doing with all this
&lt;/h2&gt;

&lt;p&gt;I'm packaging the schema I converged on — the memory templates, the &lt;code&gt;MEMORY.md&lt;/code&gt; layout, the prompts I use to trigger high-signal writes, the audit rituals — into a kit for solo operators using Claude Code.&lt;/p&gt;

&lt;p&gt;It's the kit I wish I'd had on day one. It's at &lt;a href="https://solosre.dev" rel="noopener noreferrer"&gt;solosre.dev&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If any of these failure modes feel familiar — if your AI memory has started to drift, mislead, or quietly stop pulling its weight — there's a structured way out of it. You don't have to learn this through 60 entries the way I did.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;If you're running solo with Claude Code (or any agent with persistent memory), I'd love to hear what's worked and what's broken for you in the comments. The lesson nobody else will tell you is usually the one that saves the most pain.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>claude</category>
      <category>sre</category>
      <category>devops</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
