<?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: Bruno Andrade</title>
    <description>The latest articles on DEV Community by Bruno Andrade (@bruno_andrade_357863927e2).</description>
    <link>https://dev.to/bruno_andrade_357863927e2</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3876024%2Fd2184588-10ab-40ca-8aac-a710f19f6ba2.png</url>
      <title>DEV Community: Bruno Andrade</title>
      <link>https://dev.to/bruno_andrade_357863927e2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/bruno_andrade_357863927e2"/>
    <language>en</language>
    <item>
      <title>Markdown is not agent memory. It's a sticky note.</title>
      <dc:creator>Bruno Andrade</dc:creator>
      <pubDate>Wed, 22 Apr 2026 23:47:47 +0000</pubDate>
      <link>https://dev.to/bruno_andrade_357863927e2/markdown-is-not-agent-memory-its-a-sticky-note-2pip</link>
      <guid>https://dev.to/bruno_andrade_357863927e2/markdown-is-not-agent-memory-its-a-sticky-note-2pip</guid>
      <description>&lt;p&gt;Everyone's doing it. &lt;/p&gt;

&lt;p&gt;A MEMORY.md in the project root. A context.md the agent reads at session start. A few bullet points about past decisions. Maybe a CLAUDE.md if you watched Karpathy's video.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;for one person running local agents? It works&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Karpathy's setup is clever and clean.&lt;/p&gt;

&lt;p&gt;But the moment you try to do anything more serious with agents, markdown falls apart. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's how:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The file has no concept of confidence:&lt;/strong&gt; "We use Postgres" and "I think the retry logic might be buggy" look identical. Both are just sentences. Your agent treats them the same way.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Two agents writing to the same file? Last write wins:&lt;/strong&gt; No branching, no merge, no conflict detection. You won't even know it happened until something breaks in production.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;There's no history:&lt;/strong&gt; You can't diff what the agent knew last week vs. now. You can't roll back a bad memory. You can't audit why an agent made a wrong call two deploys ago. The file just is what it is.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It also doesn't travel:&lt;/strong&gt; Your MEMORY.md lives on your machine, for your agent. The second you add another agent, another developer, or a deployed pipeline, the memory doesn't follow. Every session burns tokens, re-establishing context that was already established last time.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building pipelines with &lt;strong&gt;CrewAI, LangGraph, AutoGen&lt;/strong&gt;, or others, the markdown thing isn't even on the table. Your agents don't share a file. They don't share anything. They contradict each other, duplicate work, and no one has a record of what was actually learned during a run. The orchestrator knows the output, but the reasoning that led to it is gone.&lt;/p&gt;

&lt;h3&gt;
  
  
  And the costs are way more concrete than people realize.
&lt;/h3&gt;

&lt;p&gt;That CLAUDE.md file gets loaded into every single session. Every word, every time. If it's 500 lines, that's maybe 3,000 to 5,000 tokens of overhead on turn one. By turn 50 of the same session, you're re-sending the entire conversation history plus that file on every single message (That's before any actual work gets done. That's just the flat file being re-read over and over.)&lt;/p&gt;

&lt;h3&gt;
  
  
  But it gets worse as the session ages
&lt;/h3&gt;

&lt;p&gt;By message 40, the agent isn't just re-reading the 4,000-token file. It's re-reading the entire history of accumulated conversations. A 40-message session where each message is ~500 tokens means the last message re-processes ~20,000 tokens of context just from history, on top of the file.&lt;/p&gt;

&lt;p&gt;That compounds to something like $2,000–$3,500/month per 10-person team in context overhead that provides zero new value. It's just the agent re-reading stuff it has already read.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8czgjp432tgnap0p6pbo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8czgjp432tgnap0p6pbo.png" alt="md as memory cost calculation" width="571" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What a proper memory system changes
&lt;/h3&gt;

&lt;p&gt;Instead of dumping everything into context, SenseLab compiles a ranked briefing of what's actually relevant to the current task. A 10-entry briefing might be 800 tokens instead of 4,000+. That's 80% reduction in memory related input tokens before you even account for the session history problem. &lt;/p&gt;

&lt;p&gt;The memory compiles itself into ranked briefings so the next agent starts with what matters, not a flat file of everything that ever happened.&lt;/p&gt;

&lt;h3&gt;
  
  
  Evolving agents
&lt;/h3&gt;

&lt;p&gt;Markdown solves "I want my agent to remember I prefer TypeScript." &lt;br&gt;
It doesn't solve "I want my agents to accumulate knowledge over time, share it reliably, and not step on each other."&lt;/p&gt;

&lt;p&gt;That problem is what most teams actually have. And there's almost nothing built for it.&lt;/p&gt;

&lt;p&gt;That's why we built &lt;a href="https://www.sense-lab.ai" rel="noopener noreferrer"&gt;SenseLab&lt;/a&gt;. Git for agent memory. Versioned, branchable, with confidence scoring, causal traces, and cross-agent reads that are tracked. &lt;/p&gt;

&lt;p&gt;Markdown will get you started, but it won't help you scale and improve agent context and experience.&lt;/p&gt;

&lt;p&gt;Want to give it a try? Sign up for free at &lt;a href="https://www.sense-lab.ai" rel="noopener noreferrer"&gt;SenseLab&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>agentskills</category>
      <category>development</category>
    </item>
    <item>
      <title>Your Claude Code and Cursor agents have amnesia. Here's the fix.</title>
      <dc:creator>Bruno Andrade</dc:creator>
      <pubDate>Mon, 13 Apr 2026 13:00:00 +0000</pubDate>
      <link>https://dev.to/bruno_andrade_357863927e2/your-claude-code-and-cursor-agents-have-amnesia-heres-the-fix-2l3a</link>
      <guid>https://dev.to/bruno_andrade_357863927e2/your-claude-code-and-cursor-agents-have-amnesia-heres-the-fix-2l3a</guid>
      <description>&lt;p&gt;Every time you open a new Claude Code or Cursor session, your agent wakes up with absolutely no memory of anything it's ever done. Blank slate. Tabula rasa. Goldfish brain. You spend the first 10 minutes re-explaining your codebase to something that was literally there yesterday.&lt;/p&gt;

&lt;p&gt;And if you're on a team? Each engineer's agent is its own little island of rediscovered knowledge. Agent A spends an hour figuring out why the auth service is flaky. Agent B does the same thing on Monday. Nobody the wiser.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sense-lab.ai" rel="noopener noreferrer"&gt;AMFS&lt;/a&gt; fixes this. It's an agent memory engine with an MCP server that you connect to Cursor or Claude Code, and your agents get persistent, shared memory across every session and every machine on your team. The core is open source (Apache 2.0).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22cbjc5to4rdcy6t6jtg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22cbjc5to4rdcy6t6jtg.png" alt="AMFS Agent Brain" width="800" height="424"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works
&lt;/h2&gt;

&lt;p&gt;AMFS stores memory as versioned key-value entries scoped to an entity path, typically a service, module, or domain in your codebase. Entries carry a confidence score, a memory type (&lt;code&gt;fact&lt;/code&gt;, &lt;code&gt;belief&lt;/code&gt;, or &lt;code&gt;experience&lt;/code&gt;), and full provenance: which agent wrote it, when, and from what context.&lt;/p&gt;

&lt;p&gt;Every write uses Copy-on-Write, and the previous version is never deleted. Reads are tracked, so you know which agent consumed which piece of knowledge. Outcome commits (&lt;code&gt;amfs_commit_outcome&lt;/code&gt;) feed back into confidence scores: entries written before a successful deploy gain confidence, entries linked to incidents lose it. Your agents get dumber when they're wrong and smarter when they're right, which is more than you can say for some humans :)&lt;/p&gt;

&lt;p&gt;Under the hood, there's a knowledge graph that materializes relationships between entities from normal read/write operations, a tiered memory model (hot / warm / archive) with frequency-modulated decay, and a hybrid search that combines full-text, semantic, recency, and confidence into a single ranked result set.&lt;/p&gt;

&lt;p&gt;The MCP server wraps all of this and exposes it to any MCP-compatible client.&lt;/p&gt;




&lt;h2&gt;
  
  
  MCP tools your agent gets
&lt;/h2&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;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amfs_set_identity&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Registers the agent's ID and current task. Scopes all subsequent writes to that agent.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amfs_briefing&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Returns a compiled digest of the highest-confidence entries for an entity — ranked by tier, recency, and score. This is what the agent calls at the start of a session instead of asking you to re-explain everything for the 40th time.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amfs_search&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Hybrid search across all entries: full-text + semantic + confidence weighting. Accepts an entity path filter.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amfs_read&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Reads a specific entry by entity path and key. Cross-agent reads are tracked automatically for provenance.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amfs_write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Writes an entry with confidence score, memory type, and automatic provenance. Triggers CoW versioning.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;amfs_commit_outcome&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Records a task outcome (success / failure / regression) and auto-propagates confidence updates to all entries the agent read during that task.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  Wiring it up
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Get an API key
&lt;/h3&gt;

&lt;p&gt;Sign up at &lt;a href="https://amfs.sense-lab.ai" rel="noopener noreferrer"&gt;amfs.sense-lab.ai&lt;/a&gt;. There's a free tier. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvar972z8zwq55c0qyk5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvvar972z8zwq55c0qyk5.png" alt="SenseLab AMFS API Keys" width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Grab your API key from the dashboard. That's the only credential you need; shared memory across your whole team is handled by the backend, no infrastructure to set up.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Claude Code
&lt;/h3&gt;

&lt;p&gt;Add to &lt;code&gt;~/.claude/claude_desktop_config.json&lt;/code&gt;:&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;"mcpServers"&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;"amfs"&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;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"uvx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&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;"amfs-mcp-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&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;"AMFS_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your-key&amp;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;"AMFS_HTTP_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://amfs-login.sense-lab.ai"&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;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;h3&gt;
  
  
  3. Cursor
&lt;/h3&gt;

&lt;p&gt;Add to &lt;code&gt;.cursor/mcp.json&lt;/code&gt; in your project, then copy the agent rules file:&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;"mcpServers"&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;"amfs"&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;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"uvx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&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;"amfs-mcp-server"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&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;"AMFS_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your-key&amp;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;"AMFS_HTTP_URL"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://amfs-login.sense-lab.ai"&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;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;blockquote&gt;
&lt;p&gt;Verify the connection by asking your agent to call &lt;code&gt;amfs_stats()&lt;/code&gt;. It should return entry counts and agent activity. If it stares back at you blankly, check the path in your config.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once each engineer on your team adds the same config block with their API keys, all your agents can automatically share the memory store across sessions and machines, with no extra setup.&lt;/p&gt;




&lt;h2&gt;
  
  
  What the agent actually does with it
&lt;/h2&gt;

&lt;p&gt;Once the rules file is in place, the agent follows this pattern automatically on every session:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Agent opens a session on checkout-service
&lt;/span&gt;
&lt;span class="nf"&gt;amfs_set_identity&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;cursor/alice&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;investigating flaky order flow&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;amfs_briefing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;entity_path&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;myapp/checkout&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# → ranked digest: known risks, prior decisions, confidence scores
# → "race-condition in order processing (0.85, written by cursor/bruno)"
# → alice's agent doesn't re-discover what bruno's already figured out
&lt;/span&gt;
&lt;span class="nf"&gt;amfs_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;myapp/checkout&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;retry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# → finds bruno's prior entry on the mutex fix
&lt;/span&gt;
&lt;span class="c1"&gt;# ... agent does the work, finds something new ...
&lt;/span&gt;
&lt;span class="nf"&gt;amfs_write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;myapp/checkout&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;timeout-under-load&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;downstream payment API times out above 200 rps — needs circuit breaker&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.78&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;memory_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;belief&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;amfs_commit_outcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;TASK-412&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;success&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;# → confidence on all entries read during this task adjusts upward
# → bruno's race-condition entry also updates (alice's agent read it)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The next agent to open a session on &lt;code&gt;myapp/checkout&lt;/code&gt;, whether that's a Claude Code session, another Cursor session, or a LangGraph pipeline — calls &lt;code&gt;amfs_briefing&lt;/code&gt; and gets both findings up front, ranked by confidence. No re-explaining, no re-discovering, no token budget burned on context that already exists.&lt;/p&gt;

&lt;p&gt;Agent identity is auto-detected from the environment (&lt;code&gt;cursor/&amp;lt;username&amp;gt;&lt;/code&gt;, &lt;code&gt;claude-code/&amp;lt;username&amp;gt;&lt;/code&gt;) so provenance is tracked without any extra config.&lt;/p&gt;




&lt;h2&gt;
  
  
  Using the Python SDK directly (for pipelines)
&lt;/h2&gt;

&lt;p&gt;If you're building agent pipelines with CrewAI, LangGraph, or AutoGen, use the SDK instead of MCP. Same API key, same shared store, and a finding written by a pipeline agent shows up in your next Cursor session's briefing.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;amfs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;amfs&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;AgentMemory&lt;/span&gt;

&lt;span class="n"&gt;mem&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;AgentMemory&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;agent_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;review-agent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://amfs-login.sense-lab.ai&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;your-key&amp;gt;&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# write a finding at the end of a pipeline run
&lt;/span&gt;&lt;span class="n"&gt;mem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;checkout-service&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;risk-race-condition&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Race condition in order processing under concurrent load&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;confidence&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.85&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;memory_type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;belief&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# next run: pull a briefing before the agent starts reasoning
&lt;/span&gt;&lt;span class="n"&gt;briefing&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;briefing&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;checkout-service&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# outcome feedback updates confidence on everything the agent read this run
&lt;/span&gt;&lt;span class="n"&gt;mem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;commit_outcome&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RUN-043&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;success&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# explain() returns the full causal chain for any decision
&lt;/span&gt;&lt;span class="n"&gt;trace&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;mem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;explain&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;RUN-043&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Open source
&lt;/h2&gt;

&lt;p&gt;The full memory engine — CoW versioning, confidence scoring, causal traces, knowledge graph, hybrid search, tiered memory, MCP server, HTTP API, Python + TypeScript SDKs, CLI — is &lt;a href="https://github.com/raia-live/amfs" rel="noopener noreferrer"&gt;Apache 2.0&lt;/a&gt;. If it's useful, a star helps other developers find it.&lt;/p&gt;

&lt;p&gt;⭐ &lt;a href="https://github.com/raia-live/amfs" rel="noopener noreferrer"&gt;github.com/raia-live/amfs&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.sense-lab.ai/amfs/guides/mcp" rel="noopener noreferrer"&gt;MCP setup guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.sense-lab.ai/amfs/introduction" rel="noopener noreferrer"&gt;Full docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://amfs.sense-lab.ai" rel="noopener noreferrer"&gt;Sign up — free tier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/raia-live/amfs" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>claude</category>
      <category>mcp</category>
      <category>python</category>
    </item>
  </channel>
</rss>
