<?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: J Jones AI</title>
    <description>The latest articles on DEV Community by J Jones AI (@jjonesai).</description>
    <link>https://dev.to/jjonesai</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%2F4229579%2Fd71cce30-64db-4da1-a04d-93d8e8d8bf29.png</url>
      <title>DEV Community: J Jones AI</title>
      <link>https://dev.to/jjonesai</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jjonesai"/>
    <language>en</language>
    <item>
      <title>Your AI models can change. Your memory shouldn't.</title>
      <dc:creator>J Jones AI</dc:creator>
      <pubDate>Fri, 06 Nov 2026 03:41:07 +0000</pubDate>
      <link>https://dev.to/jjonesai/your-ai-models-can-change-your-memory-shouldnt-22f8</link>
      <guid>https://dev.to/jjonesai/your-ai-models-can-change-your-memory-shouldnt-22f8</guid>
      <description>&lt;p&gt;Every six months the "best" model changes. GPT, Claude, Llama, Qwen, DeepSeek — the logo on the API key is not the asset.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your notes, docs, and decisions are.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most assistant stacks invert that. Your memory gets shipped into whichever frontier model is fashionable this quarter. Switch vendors and you rebuild context from scratch. Cancel a subscription and the "assistant that knew you" forgets you existed.&lt;/p&gt;

&lt;p&gt;That is the wrong dependency graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local-first means the memory lives with you
&lt;/h2&gt;

&lt;p&gt;A local-first assistant API keeps the canonical store on &lt;strong&gt;your&lt;/strong&gt; machine (or your VPS):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Notes and files stay in a local database you control&lt;/li&gt;
&lt;li&gt;Search works offline&lt;/li&gt;
&lt;li&gt;The model is a &lt;em&gt;plugin&lt;/em&gt;, not the source of truth&lt;/li&gt;
&lt;li&gt;Sensitive content can stay redacted until &lt;strong&gt;you&lt;/strong&gt; approve it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Models become interchangeable. Memory does not.&lt;/p&gt;

&lt;h2&gt;
  
  
  What that looks like in practice (Python + FastAPI)
&lt;/h2&gt;

&lt;p&gt;Here is the shape I teach in &lt;a href="https://jjonesai.gumroad.com/l/hqoiqi" rel="noopener noreferrer"&gt;Build a Local-First AI Assistant API&lt;/a&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;FastAPI service&lt;/strong&gt; with clear settings and health checks
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local memory store&lt;/strong&gt; (SQLite) with sensitivity tags and file ingest (Markdown, text, PDF)
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Offline search&lt;/strong&gt; — full-text (FTS5) plus local embeddings, hybrid ranking
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;/ask&lt;/code&gt;&lt;/strong&gt; against a local model (Ollama by default), with citations and streaming
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Human-in-the-loop approval gate&lt;/strong&gt; — policy decides content vs metadata vs nothing
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Provider plugins&lt;/strong&gt; — local by default; optional cloud behind the same interface
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict mode&lt;/strong&gt; — local data + local model only, tested to make &lt;strong&gt;zero&lt;/strong&gt; outbound calls
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ship it&lt;/strong&gt; — tests, Docker, run as a background service&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;None of that requires renting your notes to a SaaS "second brain."&lt;/p&gt;

&lt;h2&gt;
  
  
  Strict / General / Full — modes, not vibes
&lt;/h2&gt;

&lt;p&gt;Prompting "please don't send my data" is not a control plane.&lt;/p&gt;

&lt;p&gt;Enforce modes in code:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Data&lt;/th&gt;
&lt;th&gt;Model&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Strict&lt;/td&gt;
&lt;td&gt;Local only&lt;/td&gt;
&lt;td&gt;Local only&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;General&lt;/td&gt;
&lt;td&gt;Controlled&lt;/td&gt;
&lt;td&gt;Local or approved cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Full&lt;/td&gt;
&lt;td&gt;Per policy&lt;/td&gt;
&lt;td&gt;Best available provider&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If Strict can still phone home, it is not Strict.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free outline vs full course
&lt;/h2&gt;

&lt;p&gt;I published a public teaser outline (module titles only) so you can see the map before you buy:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Repo: &lt;a href="https://github.com/jamalfrnk/local-first-ai-assistant-api" rel="noopener noreferrer"&gt;github.com/jamalfrnk/local-first-ai-assistant-api&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Outline: &lt;a href="https://github.com/jamalfrnk/local-first-ai-assistant-api/blob/main/COURSE.md" rel="noopener noreferrer"&gt;COURSE.md&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full course (lessons + labs + starter code): &lt;a href="https://jjonesai.gumroad.com/l/hqoiqi" rel="noopener noreferrer"&gt;Gumroad — $99&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Related: if you also want the hosting side of "own your stack," see &lt;a href="https://jjonesai.gumroad.com/l/yviahw" rel="noopener noreferrer"&gt;Own Your Web&lt;/a&gt; (VPS + Caddy + DNS migration) — free outline on &lt;a href="https://github.com/jamalfrnk/own-your-web" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is for
&lt;/h2&gt;

&lt;p&gt;Python developers who are comfortable with functions and classes, and who are tired of rebuilding context every time the model carousel spins.&lt;/p&gt;

&lt;h2&gt;
  
  
  Who this is not for
&lt;/h2&gt;

&lt;p&gt;Anyone looking for a one-click ChatGPT wrapper with no local store and no approval gate.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Support:&lt;/strong&gt; &lt;a href="mailto:support@jjones.ai"&gt;support@jjones.ai&lt;/a&gt; · &lt;a href="https://jjones.ai" rel="noopener noreferrer"&gt;jjones.ai&lt;/a&gt; · &lt;a href="https://malcolm.expert" rel="noopener noreferrer"&gt;malcolm.expert&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Education product from Malcolm Frank / FranklySolutions LLC. Adapt everything to your own environment.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want to promote these courses? Affiliates earn &lt;strong&gt;15%&lt;/strong&gt; → &lt;a href="https://jjonesai.gumroad.com/affiliates" rel="noopener noreferrer"&gt;jjonesai.gumroad.com/affiliates&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>fastapi</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
