<?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: Andrea Redegalli</title>
    <description>The latest articles on DEV Community by Andrea Redegalli (@aendrix03).</description>
    <link>https://dev.to/aendrix03</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%2F4127096%2F14027752-0719-4833-9b60-3cbe33818bdb.jpg</url>
      <title>DEV Community: Andrea Redegalli</title>
      <link>https://dev.to/aendrix03</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aendrix03"/>
    <language>en</language>
    <item>
      <title>Your coding agent already learned this: local-first memory with Graft</title>
      <dc:creator>Andrea Redegalli</dc:creator>
      <pubDate>Wed, 16 Sep 2026 02:23:18 +0000</pubDate>
      <link>https://dev.to/aendrix03/your-coding-agent-already-learned-this-local-first-memory-with-graft-4dgb</link>
      <guid>https://dev.to/aendrix03/your-coding-agent-already-learned-this-local-first-memory-with-graft-4dgb</guid>
      <description>&lt;p&gt;Many coding-agent sessions end with an expensive loss: the bug is understood, the fix is shipped, and the useful reasoning disappears with the session.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/AEndrix03/Graft" rel="noopener noreferrer"&gt;Graft&lt;/a&gt; is an open-source project for keeping that kind of knowledge available locally across later agent work. Its focus is not document ingestion or a hosted chatbot. It is persistent memory for the fixes, decisions, constraints, and project-specific gotchas that agents uncover while solving real tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  The workflow is intentionally small
&lt;/h2&gt;

&lt;p&gt;The core loop is three questions:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Have we seen this before?&lt;/strong&gt; Use &lt;code&gt;graft query&lt;/code&gt; for a confidence-gated top result: &lt;code&gt;STRONG&lt;/code&gt;, &lt;code&gt;WEAK&lt;/code&gt;, or &lt;code&gt;MISS&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What could help here?&lt;/strong&gt; Use &lt;code&gt;graft retrieve&lt;/code&gt; for ranked memories.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What else is connected?&lt;/strong&gt; Use &lt;code&gt;graft explore&lt;/code&gt; to walk semantic and keyword relationships.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;When a solution is worth preserving, it can be added as a memory node with a title, body, and keywords:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;graft insert &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--title&lt;/span&gt; &lt;span class="s1"&gt;'Spring @Valid must also be applied to nested DTO fields'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--body&lt;/span&gt; &lt;span class="s1"&gt;'Without @Valid on the nested field, validation does not cascade into it.'&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--keyword&lt;/span&gt; spring-boot &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--keyword&lt;/span&gt; validation &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--keyword&lt;/span&gt; gotcha
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project documents the intended pattern clearly: search before a non-trivial task, solve normally when nothing useful exists, and save the reusable learning afterward.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local runtime, not a hosted memory service
&lt;/h2&gt;

&lt;p&gt;Graft’s core runtime is local: a CLI communicates with a local daemon, which uses SQLite storage alongside FTS5 and sqlite-vec. Embeddings run locally through llama.cpp with BGE-M3. The repository states that the default setup needs no SaaS account, external embedding API, or API key.&lt;/p&gt;

&lt;p&gt;The retrieval modes are deliberately different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;query&lt;/code&gt; uses embedding-based candidates plus lexical verification and confidence gating.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;retrieve&lt;/code&gt; combines BGE-M3 vectors, BM25 over titles, and BM25 over bodies with Reciprocal Rank Fusion.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;explore&lt;/code&gt; traverses semantic and keyword relationships using beam search, score decay, and MMR diversity.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why Graft is not positioned as a replacement for a vector database. The repository distinguishes bulk document indexing from remembering agent learnings produced during work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrations and current scope
&lt;/h2&gt;

&lt;p&gt;Graft ships as a C11 project with a CLI contract, so agents that can launch a subprocess can use it. The repository lists integrations for Claude Code, Codex, Open Code, Gemini CLI, Claude Desktop, ChatGPT, and custom agents through CLI, subprocess, REST, or MCP.&lt;/p&gt;

&lt;p&gt;It also documents profiles for separate memory spaces, plus optional REST, MCP, graph-viewer, and analytics tooling. Knowledge can evolve through supersession: older memories remain inspectable while a newer memory becomes the useful one.&lt;/p&gt;

&lt;p&gt;The project is currently an active alpha in the v0.1.x line. Its README lists the local daemon and CLI, SQLite storage, BGE-M3 embeddings, verified recall, hybrid retrieval, graph exploration, profiles, coding-agent skills, and MCP bridge as working today. It also explicitly calls out areas still evolving, including the API surface before 1.0, packaging and platform coverage, remote/shared memory, team workflows, and neural reranking.&lt;/p&gt;

&lt;p&gt;If your problem is indexing millions of documents, use the right retrieval stack for that. If the problem is that your coding agent keeps rediscovering the same hard-won lesson, Graft is built for that narrower job.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/AEndrix03/Graft" rel="noopener noreferrer"&gt;https://github.com/AEndrix03/Graft&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This post was prepared with AI assistance and reviewed against the repository README.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>opensource</category>
    </item>
  </channel>
</rss>
