<?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: Nucleus OS</title>
    <description>The latest articles on DEV Community by Nucleus OS (@nucleusos).</description>
    <link>https://dev.to/nucleusos</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%2F3763236%2F1d0c5485-620d-4152-9e95-b4d5f8891fdc.jpg</url>
      <title>DEV Community: Nucleus OS</title>
      <link>https://dev.to/nucleusos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nucleusos"/>
    <language>en</language>
    <item>
      <title>AI Agents Can Ship to Production: A Deployment Case Study</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Thu, 25 Jun 2026 14:25:02 +0000</pubDate>
      <link>https://dev.to/nucleusos/ai-agents-can-ship-to-production-a-deployment-case-study-43ac</link>
      <guid>https://dev.to/nucleusos/ai-agents-can-ship-to-production-a-deployment-case-study-43ac</guid>
      <description>&lt;p&gt;I haven't opened Xcode in three weeks.&lt;/p&gt;

&lt;p&gt;My AI agent deploys my app to both App Store and Google Play from&lt;br&gt;
terminal. Two commands. No web UI. No drag-and-drop. No CI/CD&lt;br&gt;
pipeline. The agent reads a deployment file, builds the app,&lt;br&gt;
signs it, uploads to both stores, commits the version bump,&lt;br&gt;
and pushes to git.&lt;/p&gt;

&lt;p&gt;This is a case study in what AI agents can do when you give&lt;br&gt;
them readable instructions and local access to tools that&lt;br&gt;
already exist.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;The whole thing is one markdown file. That's the part that&lt;br&gt;
surprised me — I expected to need a CI/CD pipeline, a Fastlane&lt;br&gt;
configuration, a Makefile, maybe a Docker container. Instead,&lt;br&gt;
it's a single document that any AI agent can read and execute.&lt;/p&gt;

&lt;p&gt;Here's what's in it:&lt;/p&gt;

&lt;h3&gt;
  
  
  Credentials (stored on disk, referenced by path)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;App Store Connect&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;API Key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;~/.appstoreconnect/private_keys/AuthKey_XXXX.p8&lt;/span&gt;
  &lt;span class="na"&gt;Issuer ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;   &lt;span class="s"&gt;~/.appstoreconnect/issuer_id.txt&lt;/span&gt;
  &lt;span class="na"&gt;API Key ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;XXXX&lt;/span&gt;
  &lt;span class="na"&gt;Team ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;     &lt;span class="s"&gt;XXXXXXXXXX&lt;/span&gt;

&lt;span class="na"&gt;Google Play&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;Service Account JSON&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;~/Downloads/project-sa.json&lt;/span&gt;
  &lt;span class="na"&gt;Package Name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;          &lt;span class="s"&gt;com.yourapp.id&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The agent doesn't need these explained. It reads the file,&lt;br&gt;
finds the paths, and uses them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Build commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Android AAB&lt;/span&gt;
flutter build appbundle &lt;span class="nt"&gt;--release&lt;/span&gt;

&lt;span class="c"&gt;# iOS IPA (codesigned, App Store ready)&lt;/span&gt;
flutter build ipa &lt;span class="nt"&gt;--release&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Upload commands
&lt;/h3&gt;

&lt;p&gt;The file includes the exact &lt;code&gt;xcrun altool&lt;/code&gt; command for App Store&lt;br&gt;
Connect and the exact &lt;code&gt;fastlane supply&lt;/code&gt; command for Google Play —&lt;br&gt;
with all flags, credential paths, and track configuration filled in.&lt;/p&gt;

&lt;p&gt;I'm not going to paste them here because they're the core of what&lt;br&gt;
makes the kit worth paying for. But the shape is simple: one CLI&lt;br&gt;
command per store, using credentials already on disk.&lt;/p&gt;

&lt;p&gt;That's it. That's the entire deployment pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this works
&lt;/h2&gt;

&lt;p&gt;The key insight is that &lt;code&gt;xcrun altool&lt;/code&gt; and &lt;code&gt;fastlane supply&lt;/code&gt;&lt;br&gt;
are already command-line tools. They don't need a web UI.&lt;br&gt;
The reason we all use Xcode and Play Console is that&lt;br&gt;
remembering the CLI flags and credential paths is annoying.&lt;/p&gt;

&lt;p&gt;But an AI agent doesn't find it annoying. It reads a file,&lt;br&gt;
fills in the variables, and runs the command. The friction&lt;br&gt;
that makes web UIs valuable for humans is zero friction&lt;br&gt;
for an agent.&lt;/p&gt;

&lt;p&gt;This is the pattern that makes agent-readable infrastructure&lt;br&gt;
powerful: you don't need to build new tools for agents. You&lt;br&gt;
need to make existing tools readable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The full release flow
&lt;/h2&gt;

&lt;p&gt;When I want to ship an update, I tell my agent:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Ship version 1.4.2 with the chat screen fix to both stores."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Bumps the version in &lt;code&gt;pubspec.yaml&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;flutter build appbundle --release&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;flutter build ipa --release&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;xcrun altool&lt;/code&gt; to upload the IPA&lt;/li&gt;
&lt;li&gt;Runs &lt;code&gt;fastlane supply&lt;/code&gt; to upload the AAB&lt;/li&gt;
&lt;li&gt;Commits the version bump&lt;/li&gt;
&lt;li&gt;Pushes to git&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Total time: about 15 minutes (most of it is Flutter compiling).&lt;br&gt;
My involvement: one sentence.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about errors?
&lt;/h2&gt;

&lt;p&gt;The deployment file includes a common errors table:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Error&lt;/th&gt;
&lt;th&gt;Fix&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Version code already used&lt;/td&gt;
&lt;td&gt;Bump build number, rebuild&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bundle version must be higher&lt;/td&gt;
&lt;td&gt;Bump build number, rebuild&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No signing certificate&lt;/td&gt;
&lt;td&gt;Rebuild without &lt;code&gt;--no-codesign&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;When the agent hits an error, it reads the table, applies the fix,&lt;br&gt;
and retries. I've watched it recover from a "version code already&lt;br&gt;
used" error by bumping the build number and re-uploading — without&lt;br&gt;
asking me.&lt;/p&gt;

&lt;p&gt;This is where agent-readable instructions beat scripts: the agent&lt;br&gt;
can reason about errors and apply fixes contextually. A script&lt;br&gt;
fails. An agent adapts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is this safe?
&lt;/h2&gt;

&lt;p&gt;The credentials never leave your machine. The agent reads files&lt;br&gt;
that are already on disk. No secrets are sent to any API. The&lt;br&gt;
upload commands use Apple's and Google's official CLI tools —&lt;br&gt;
the same tools a CI/CD pipeline would use.&lt;/p&gt;

&lt;p&gt;The difference is: instead of putting your secrets in GitHub&lt;br&gt;
Actions or a CI environment, they stay on your machine and&lt;br&gt;
the agent uses them locally.&lt;/p&gt;

&lt;p&gt;This is the local-first principle applied to deployment: your&lt;br&gt;
secrets, your machine, your agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  The pattern: agent-readable infrastructure
&lt;/h2&gt;

&lt;p&gt;The entire setup lives in a single file in my repo:&lt;br&gt;
&lt;code&gt;docs/STORE_DEPLOYMENT.md&lt;/code&gt;. Any AI agent — Devin, Claude Code,&lt;br&gt;
Cursor, Windsurf — can read it and deploy.&lt;/p&gt;

&lt;p&gt;The file has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Credential paths (not the secrets themselves)&lt;/li&gt;
&lt;li&gt;Build commands&lt;/li&gt;
&lt;li&gt;Upload commands&lt;/li&gt;
&lt;li&gt;Version bump protocol&lt;/li&gt;
&lt;li&gt;Error recovery table&lt;/li&gt;
&lt;li&gt;Full copy-paste release flow&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also added a pointer in &lt;code&gt;AGENTS.md&lt;/code&gt; so any new agent knows&lt;br&gt;
to read the deployment file first:&lt;/p&gt;

&lt;p&gt;The pointer file is a few lines — I include the exact template&lt;br&gt;
in the kit so you can drop it into your repo as-is.&lt;/p&gt;

&lt;p&gt;This pattern — a single readable file that any agent can&lt;br&gt;
execute — works for more than just deployment. It works for&lt;br&gt;
any repeatable workflow:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Database migrations&lt;/li&gt;
&lt;li&gt;Server provisioning&lt;/li&gt;
&lt;li&gt;Incident response&lt;/li&gt;
&lt;li&gt;Content publishing&lt;/li&gt;
&lt;li&gt;Data pipelines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a human can do it by following instructions, an agent can&lt;br&gt;
do it by reading them.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this actually means
&lt;/h2&gt;

&lt;p&gt;I'm not going to pretend this is revolutionary. Fastlane exists.&lt;br&gt;
xcrun altool exists. CI/CD pipelines exist. What's new is the&lt;br&gt;
ergonomics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No CI/CD infrastructure to maintain&lt;/li&gt;
&lt;li&gt;No GitHub Actions billing&lt;/li&gt;
&lt;li&gt;No secrets in a third-party environment&lt;/li&gt;
&lt;li&gt;Any AI agent can do it by reading one file&lt;/li&gt;
&lt;li&gt;It runs on your laptop, not a build server&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The deployment pipeline went from "open Xcode, archive, wait,&lt;br&gt;
open Transporter, drag IPA, wait, open Play Console, create&lt;br&gt;
release, upload AAB, wait" to "tell my agent to ship it."&lt;/p&gt;

&lt;p&gt;That's not a product. That's a better way to work. And it's&lt;br&gt;
a glimpse of what agent-readable infrastructure makes possible.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post was deployed by the same AI agent that ships my app&lt;br&gt;
updates. It committed this file, pushed to git, and the site&lt;br&gt;
auto-published. I wrote the words. The agent did the rest.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;*The template is now open-source on GitHub: &lt;a href="https://github.com/eidetic-works/flutter-store-deployment-kit" rel="noopener noreferrer"&gt;Flutter Store Deployment Kit&lt;/a&gt; (MIT, free).&lt;/p&gt;

&lt;p&gt;If you want the packaged version with setup guide and support, it's also on &lt;a href="https://eideticworks.gumroad.com/l/flutter-deploy" rel="noopener noreferrer"&gt;Gumroad&lt;/a&gt; ($19).*&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Launching on Product Hunt on June 30! &lt;a href="https://www.producthunt.com/posts/deploykit-for-flutter/" rel="noopener noreferrer"&gt;DeployKit for Flutter&lt;/a&gt; — would love your support.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>flutter</category>
      <category>devops</category>
      <category>automation</category>
    </item>
    <item>
      <title>How to connect an MCP server to Cursor, Windsurf, and Gemini</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Tue, 23 Jun 2026 19:39:34 +0000</pubDate>
      <link>https://dev.to/nucleusos/how-to-connect-an-mcp-server-to-cursor-windsurf-and-gemini-2hl5</link>
      <guid>https://dev.to/nucleusos/how-to-connect-an-mcp-server-to-cursor-windsurf-and-gemini-2hl5</guid>
      <description>&lt;p&gt;Every AI coding editor now supports MCP (Model Context Protocol). But they all have different config file locations, different field names, and different gotchas. Here's the cheat sheet for connecting a remote MCP server to five major editors/clients.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cursor
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Config location:&lt;/strong&gt; &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; (global) or &lt;code&gt;.cursor/mcp.json&lt;/code&gt; (per-project)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote server (Streamable HTTP):&lt;/strong&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;"nucleus"&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;"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://relay.nucleusos.dev/mcp-readonly"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"streamableHttp"&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;p&gt;&lt;strong&gt;Gotcha:&lt;/strong&gt; You must completely quit and restart Cursor after editing the config. MCP servers only load at startup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UI path:&lt;/strong&gt; Settings → Tools &amp;amp; MCP → Add new MCP server&lt;/p&gt;




&lt;h2&gt;
  
  
  Windsurf
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Config location:&lt;/strong&gt; &lt;code&gt;~/.codeium/windsurf/mcp_config.json&lt;/code&gt; (global only — no per-project)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote server (Streamable HTTP):&lt;/strong&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;"nucleus"&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;"serverUrl"&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://relay.nucleusos.dev/mcp-readonly"&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;p&gt;&lt;strong&gt;Gotcha #1:&lt;/strong&gt; Windsurf uses &lt;code&gt;serverUrl&lt;/code&gt; instead of &lt;code&gt;url&lt;/code&gt;. If you copy a Cursor config, it silently fails — no error, no connection.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gotcha #2:&lt;/strong&gt; The path is &lt;code&gt;.codeium/windsurf/&lt;/code&gt;, not &lt;code&gt;.windsurf/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gotcha #3:&lt;/strong&gt; Windsurf supports variable interpolation: &lt;code&gt;${env:VAR_NAME}&lt;/code&gt; and &lt;code&gt;${file:/path}&lt;/code&gt; in config fields.&lt;/p&gt;




&lt;h2&gt;
  
  
  Google Gemini / Antigravity
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Config location:&lt;/strong&gt; &lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Remote server (Streamable HTTP):&lt;/strong&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;"nucleus"&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;"serverUrl"&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://relay.nucleusos.dev/mcp-readonly"&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;p&gt;&lt;strong&gt;Gotcha:&lt;/strong&gt; Gemini Enterprise only accepts Streamable HTTP (not deprecated SSE).&lt;/p&gt;




&lt;h2&gt;
  
  
  OpenClaw
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Config location:&lt;/strong&gt; &lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt; under &lt;code&gt;mcp.servers&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;OpenClaw is both an MCP client and server. You register external servers with &lt;code&gt;openclaw mcp set&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openclaw mcp &lt;span class="nb"&gt;set &lt;/span&gt;nucleus &lt;span class="s1"&gt;'{
  "transport": "http",
  "url": "https://relay.nucleusos.dev/mcp-readonly"
}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Gotcha:&lt;/strong&gt; Registered servers are only consumed by OpenClaw-managed runtimes that read &lt;code&gt;mcp.servers&lt;/code&gt; at startup. Not every runtime picks them up automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  OpenCode
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Config location:&lt;/strong&gt; Managed via &lt;code&gt;opencode mcp&lt;/code&gt; commands&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode mcp add nucleus &lt;span class="nt"&gt;--url&lt;/span&gt; https://relay.nucleusos.dev/mcp-readonly
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For OAuth-protected servers:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;opencode mcp add nucleus &lt;span class="nt"&gt;--url&lt;/span&gt; https://relay.nucleusos.dev/mcp
opencode mcp auth nucleus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Comparison table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Editor&lt;/th&gt;
&lt;th&gt;Config path&lt;/th&gt;
&lt;th&gt;Remote field&lt;/th&gt;
&lt;th&gt;Per-project?&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Cursor&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.cursor/mcp.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;url&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Yes (&lt;code&gt;.cursor/mcp.json&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windsurf&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.codeium/windsurf/mcp_config.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;serverUrl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No (global only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Antigravity&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.gemini/config/mcp_config.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;serverUrl&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;No (global only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenClaw&lt;/td&gt;
&lt;td&gt;&lt;code&gt;~/.openclaw/openclaw.json&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;url&lt;/code&gt; (in JSON)&lt;/td&gt;
&lt;td&gt;No (global only)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenCode&lt;/td&gt;
&lt;td&gt;CLI-managed&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;--url&lt;/code&gt; flag&lt;/td&gt;
&lt;td&gt;No (global only)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h2&gt;
  
  
  The one that catches everyone
&lt;/h2&gt;

&lt;p&gt;If your MCP server works in Cursor but not in Windsurf, check the field name. Cursor uses &lt;code&gt;url&lt;/code&gt;, Windsurf uses &lt;code&gt;serverUrl&lt;/code&gt;. Same JSON structure, different key. Silent failure, no error message.&lt;/p&gt;

&lt;p&gt;If it works in Windsurf but not in Antigravity, check the transport. Antigravity rejects deprecated SSE — it only accepts Streamable HTTP.&lt;/p&gt;




&lt;h2&gt;
  
  
  Full guides
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://eidetic.works/connect-cursor" rel="noopener noreferrer"&gt;Connect to Cursor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eidetic.works/connect-windsurf" rel="noopener noreferrer"&gt;Connect to Windsurf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eidetic.works/connect-gemini" rel="noopener noreferrer"&gt;Connect to Gemini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eidetic.works/connect-openclaw" rel="noopener noreferrer"&gt;Connect to OpenClaw&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://eidetic.works/connect-opencode" rel="noopener noreferrer"&gt;Connect to OpenCode&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Building Nucleus — persistent memory for AI coding agents. Open source on &lt;a href="https://github.com/eidetic-works/nucleus-mcp" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Install: &lt;code&gt;pip install nucleus-mcp &amp;amp;&amp;amp; nucleus-init --scan&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>cursor</category>
      <category>windsurf</category>
      <category>ai</category>
    </item>
    <item>
      <title>How to give Claude Code persistent memory across sessions with MCP</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Tue, 23 Jun 2026 19:14:54 +0000</pubDate>
      <link>https://dev.to/nucleusos/how-to-give-claude-code-persistent-memory-across-sessions-with-mcp-56he</link>
      <guid>https://dev.to/nucleusos/how-to-give-claude-code-persistent-memory-across-sessions-with-mcp-56he</guid>
      <description>&lt;p&gt;Every Claude Code session starts with amnesia. You explain the architecture. You re-explain the decisions. You re-explain why the auth layer looks the way it does. The model nods, does the work, and the next session forgets all of it.&lt;/p&gt;

&lt;p&gt;This isn't a model problem. It's a storage problem. The context window resets, and there's nothing persistent for the next session to read from.&lt;/p&gt;

&lt;p&gt;I built an MCP server that fixes this. It's called Nucleus, and it gives any MCP-compatible AI client (Claude Code, Cursor, Windsurf, Gemini) a shared, persistent memory layer.&lt;/p&gt;




&lt;h2&gt;
  
  
  The problem in one screenshot
&lt;/h2&gt;

&lt;p&gt;You open session 2 to continue work from session 1. Session 2 has never heard of session 1. You spend 10 minutes re-explaining what session 1 already knew.&lt;/p&gt;

&lt;p&gt;Multiply that by every session, every day, every project. That's the context-drift tax.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Nucleus does
&lt;/h2&gt;

&lt;p&gt;Nucleus is an MCP server that exposes a small set of tools for writing and querying persistent memory:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_write_engram&lt;/code&gt;&lt;/strong&gt; — Store a decision, architecture note, or any knowledge with a key, value, context tag, and intensity score.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_query_engrams&lt;/code&gt;&lt;/strong&gt; — Search stored knowledge by substring, context, or minimum intensity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_audit_log&lt;/code&gt;&lt;/strong&gt; — View the cryptographic interaction log for trust verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_governance_status&lt;/code&gt;&lt;/strong&gt; — Check the security and compliance state of the brain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All data lives in a local &lt;code&gt;.brain/&lt;/code&gt; directory — append-only JSONL files. No cloud, no vendor lock-in. Your memory stays on your machine.&lt;/p&gt;




&lt;h2&gt;
  
  
  Install in 60 seconds
&lt;/h2&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;nucleus-mcp
nucleus-init &lt;span class="nt"&gt;--scan&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's it. &lt;code&gt;nucleus-init&lt;/code&gt; creates the &lt;code&gt;.brain/&lt;/code&gt; directory, scans your project for a &lt;code&gt;README.md&lt;/code&gt; to seed initial context, and auto-configures your MCP clients (Claude Desktop, Cursor, Windsurf).&lt;/p&gt;

&lt;p&gt;Restart Claude Code and the tools are available.&lt;/p&gt;




&lt;h2&gt;
  
  
  Use it in Claude Code
&lt;/h2&gt;

&lt;p&gt;After install, any Claude Code session can write and read from the shared brain:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Session 1 — you're deciding on the auth architecture
"Use brain_write_engram to store: key='auth_architecture', value='Using OAuth 2.1 with PKCE. Refresh tokens in httpOnly cookies. No server-side sessions.' context='Architecture' intensity=8"

# Session 2 — next day, new context window
"Use brain_query_engrams to search for 'auth' with min_intensity=5"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Session 2 gets back the decision from session 1 without you re-explaining it. The engram persists across sessions, across tools, across machines (if you sync the &lt;code&gt;.brain/&lt;/code&gt; directory).&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;The context window is not memory. It's short-term recall. Real memory persists when the window resets.&lt;/p&gt;

&lt;p&gt;Every AI coding tool has this problem. Claude Code, Cursor, Windsurf, Gemini CLI — they all start each session with zero context. The model is the same. The capabilities are the same. But the &lt;em&gt;knowledge&lt;/em&gt; of what you decided yesterday is gone.&lt;/p&gt;

&lt;p&gt;Nucleus makes that knowledge durable. One &lt;code&gt;.brain/&lt;/code&gt; directory, shared across all your AI tools, persisted across sessions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Multi-agent coordination
&lt;/h2&gt;

&lt;p&gt;If you run multiple AI agents (Claude Code + Cursor, or two Claude Code sessions on different parts of the codebase), Nucleus gives them a shared memory. Agent A writes a decision. Agent B reads it. No message queue, no orchestration framework — just a shared file.&lt;/p&gt;

&lt;p&gt;The sync tools handle multi-machine coordination:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_sync_now&lt;/code&gt;&lt;/strong&gt; — Manually trigger a sync&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_sync_status&lt;/code&gt;&lt;/strong&gt; — Check sync state and conflicts&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;brain_identify_agent&lt;/code&gt;&lt;/strong&gt; — Register an agent's identity for attribution&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Security model
&lt;/h2&gt;

&lt;p&gt;Nucleus has a hypervisor subsystem that provides OS-level file protection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;lock_resource&lt;/code&gt;&lt;/strong&gt; — Lock a file/folder to prevent modification (uses BSD &lt;code&gt;chflags uchg&lt;/code&gt; on macOS)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;watch_resource&lt;/code&gt;&lt;/strong&gt; — Monitor a file/folder for unauthorized changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;set_hypervisor_mode&lt;/code&gt;&lt;/strong&gt; — Visual context switching (red/blue/reset)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All operations are logged to a tamper-evident audit log with SHA-256 hashing. The &lt;code&gt;brain_audit_log&lt;/code&gt; tool lets you verify the integrity of the interaction history.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's on PyPI vs what's in the full server
&lt;/h2&gt;

&lt;p&gt;The public &lt;code&gt;nucleus-mcp&lt;/code&gt; package on PyPI has 8 tools (memory + governance + hypervisor). The full hosted server at &lt;code&gt;relay.nucleusos.dev&lt;/code&gt; has 17 tools including relay coordination, cost routing, and multi-tenant support.&lt;/p&gt;

&lt;p&gt;For local-first usage, the PyPI package is all you need. The hosted server is for teams and multi-agent coordination at scale.&lt;/p&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&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;nucleus-mcp
nucleus-init &lt;span class="nt"&gt;--scan&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then restart Claude Code and ask it to store a decision. You'll see it persist to &lt;code&gt;.brain/engrams/ledger.jsonl&lt;/code&gt;. Open a new session, query it back. That's the whole pitch.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PyPI:&lt;/strong&gt; &lt;a href="https://pypi.org/project/nucleus-mcp/" rel="noopener noreferrer"&gt;nucleus-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/eidetic-works/nucleus-mcp" rel="noopener noreferrer"&gt;eidetic-works/nucleus-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Docs:&lt;/strong&gt; &lt;a href="https://eidetic.works" rel="noopener noreferrer"&gt;eidetic.works&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Building in public. The MCP server is open source. The hosted coordination layer is the business. If you're running AI agents seriously, this is the memory layer you're missing.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>claude</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Eidetic Works Pro is live: persistent memory for your AI agents, $29/mo</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Fri, 19 Jun 2026 03:28:07 +0000</pubDate>
      <link>https://dev.to/nucleusos/eidetic-works-pro-is-live-persistent-memory-for-your-ai-agents-29mo-49n5</link>
      <guid>https://dev.to/nucleusos/eidetic-works-pro-is-live-persistent-memory-for-your-ai-agents-29mo-49n5</guid>
      <description>&lt;p&gt;I just shipped Pro tier for &lt;a href="https://eidetic.works" rel="noopener noreferrer"&gt;Eidetic Works&lt;/a&gt;. Here's what's in it, who I built it for, and why I'm shipping three tiers ($29 / $99 / $299) instead of a single plan.&lt;/p&gt;




&lt;h2&gt;
  
  
  What problem does this actually solve?
&lt;/h2&gt;

&lt;p&gt;You're running Claude Code. You have two or three sessions open across different parts of the codebase. Session 2 doesn't know what Session 1 decided. You end up re-explaining the same architecture decisions to the same model you already talked to yesterday.&lt;/p&gt;

&lt;p&gt;This is the context-drift problem. It doesn't come from the model being bad. It comes from each session starting with no memory of what came before.&lt;/p&gt;

&lt;p&gt;nucleus_ask — the MCP tool at the center of Pro — lets any agent call into your shared engram store and pull context that persists across sessions, across tools, and across machines.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's in Pro
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Managed R2 sync.&lt;/strong&gt; Your engrams live in SQLite on your machine. Pro backs them to a Cloudflare R2 bucket with zero config. Your keys, your bucket — I'm not storing your AI history on my infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;nucleus_ask recall.&lt;/strong&gt; The MCP primitive your agents use to query the shared store. One call, structured results. Wire it into your MCP config once and every session gets recall.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customer dashboard.&lt;/strong&gt; Sync health, engram counts, last-seen surfaces. Not glamorous. Just the visibility you need to confirm it's working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Email support.&lt;/strong&gt; Direct line. Not a help-center chatbot.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;60-second restore.&lt;/strong&gt; New machine. One command. Full engram history back, including decisions from six months ago that your codebase assumes you remember.&lt;/p&gt;




&lt;h2&gt;
  
  
  Three tiers
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pro $29/mo&lt;/strong&gt; — single seat. Managed sync, recall MCP, dashboard, email support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pro+ $99/mo&lt;/strong&gt; — 3 seats. Same features, team-shared engram store.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Team $299/mo&lt;/strong&gt; — 10 seats. Same features at team scale. Priority support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All three live at &lt;a href="https://eidetic.works/pricing" rel="noopener noreferrer"&gt;eidetic.works/pricing&lt;/a&gt; right now. Stripe checkout, monthly billing, cancel anytime.&lt;/p&gt;




&lt;h2&gt;
  
  
  Who I built it for
&lt;/h2&gt;

&lt;p&gt;Devs running Claude Code seriously. If you use it daily, you're accumulating context that the next session can't access. That's the gap Pro closes.&lt;/p&gt;

&lt;p&gt;Cursor and Windsurf power users who want recall that survives a project switch or a context-window flush.&lt;/p&gt;

&lt;p&gt;Small teams where two people use different AI tools but need shared context. One person on Claude Code, one on Cursor — nucleus_ask lets both pull from the same store.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's actually shipped (not vaporware)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://pypi.org/project/nucleus-mcp/1.13.2/" rel="noopener noreferrer"&gt;nucleus-mcp 1.13.2&lt;/a&gt; is live on PyPI right now. nucleus_ask, recall_activity, and recent_engrams are all in 1.13.2. Install, point at your daemon, wire your MCP config.&lt;/p&gt;

&lt;p&gt;The OAuth arbitrage pattern is running in production at oauth.nucleusos.dev. If you haven't seen it — &lt;a href="https://dev.to/nucleusos/running-claude-code-at-zero-per-token-cost-the-max-plan-oauth-shim-pattern-501a"&gt;I wrote about the shim pattern here&lt;/a&gt;. Anthropic Max plan OAuth as a shared API surface, zero per-token cost for qualified setups. It's the same infra that powers Pro's daemon coordination.&lt;/p&gt;

&lt;p&gt;Pro is a billing tier on top of substrate that's already running. I'm not shipping a waitlist — I'm shipping a checkout.&lt;/p&gt;




&lt;h2&gt;
  
  
  The governance angle
&lt;/h2&gt;

&lt;p&gt;This is the part most "AI memory" tools skip.&lt;/p&gt;

&lt;p&gt;Your agent coordination context should not live inside any single vendor's cloud. Lock-in on AI tooling is bad enough. Lock-in on the memory layer that coordinates your AI tooling is worse.&lt;/p&gt;

&lt;p&gt;Pro's sync is your Cloudflare R2 bucket, your API keys. I hold none of it. The engram format is open SQLite. You can export everything as NDJSON any time via &lt;code&gt;GET /export&lt;/code&gt;. The Pro subscription pays for managed worker infra and support, not for access to your own data.&lt;/p&gt;

&lt;p&gt;This is not a differentiator claim. It's a design constraint I'm not willing to drop for growth.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's not in Pro yet
&lt;/h2&gt;

&lt;p&gt;No hosted daemon — your machine runs the daemon. I don't want to be in the business of hosting compute for something designed to be local-first.&lt;/p&gt;

&lt;p&gt;No cross-org engram sharing — by design. Governance first.&lt;/p&gt;

&lt;p&gt;I'll add surface area as real usage patterns surface. Early adopters will shape the roadmap.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to get started
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://eidetic.works/pricing" rel="noopener noreferrer"&gt;eidetic.works/pricing&lt;/a&gt; — checkout for any of the three tiers.&lt;/p&gt;

&lt;p&gt;If you're already running nucleus-mcp, upgrade to 1.13.2 from PyPI. nucleus_ask is there now. The Pro tier unlocks managed sync and the dashboard on top.&lt;/p&gt;

&lt;p&gt;If you're new: install the daemon (&lt;code&gt;pip install nucleus-mcp&lt;/code&gt;), run &lt;code&gt;eideticd -init&lt;/code&gt;, configure your MCP client, then upgrade to Pro once you've confirmed recall is working locally. Don't buy Pro until you've seen local recall work first — that's the foundation.&lt;/p&gt;




&lt;p&gt;Building this in public. Numbers, failures, and what breaks first — all of it goes on &lt;a href="https://x.com/nucleusos" rel="noopener noreferrer"&gt;@nucleusos&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>claude</category>
      <category>launch</category>
    </item>
    <item>
      <title>Running Claude Code at zero per-token cost: the Max-plan OAuth shim pattern</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Thu, 18 Jun 2026 10:12:05 +0000</pubDate>
      <link>https://dev.to/nucleusos/running-claude-code-at-zero-per-token-cost-the-max-plan-oauth-shim-pattern-501a</link>
      <guid>https://dev.to/nucleusos/running-claude-code-at-zero-per-token-cost-the-max-plan-oauth-shim-pattern-501a</guid>
      <description>&lt;p&gt;If you're running Claude Code or any agentic system that calls the Anthropic Messages API, you're probably paying per token. For light use, that's fine. For multi-agent systems with parallel workloads, it adds up fast.&lt;/p&gt;

&lt;p&gt;There's a different model: Claude Max subscription. Flat monthly cost, no per-token billing. The problem is that Max exposes a browser OAuth flow, not an API key. Your agent code expects &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt;. Max doesn't give you one.&lt;/p&gt;

&lt;p&gt;We built a shim that bridges the two.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;oauth.nucleusos.dev&lt;/code&gt; is an HTTP wrapper that exposes the Anthropic Messages API endpoint at &lt;code&gt;/v1/messages&lt;/code&gt;. Internally, it routes each request through a Max-plan OAuth bearer token instead of an API key. The interface is 1:1 with the native Anthropic API.&lt;/p&gt;

&lt;p&gt;To use it, set two environment variables in your agent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;=&lt;span class="n"&gt;https&lt;/span&gt;://&lt;span class="n"&gt;oauth&lt;/span&gt;.&lt;span class="n"&gt;nucleusos&lt;/span&gt;.&lt;span class="n"&gt;dev&lt;/span&gt;
&lt;span class="n"&gt;ANTHROPIC_API_KEY&lt;/span&gt;=&amp;lt;&lt;span class="n"&gt;your&lt;/span&gt;-&lt;span class="n"&gt;shared&lt;/span&gt;-&lt;span class="n"&gt;secret&lt;/span&gt;&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your existing Claude Code installation, any Claude SDK wrapper, or raw HTTP client keeps working without code changes. The billing model changes; the interface doesn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  The wire shape
&lt;/h2&gt;

&lt;p&gt;Each incoming request hits an HMAC-validated gate (the &lt;code&gt;ANTHROPIC_API_KEY&lt;/code&gt; value you set is treated as a shared secret, compared with &lt;code&gt;hmac.compare_digest&lt;/code&gt; — no timing oracle). Valid requests get the Bearer token substituted and are forwarded to &lt;code&gt;api.anthropic.com&lt;/code&gt;. The response streams back unchanged.&lt;/p&gt;

&lt;p&gt;Security model: the shim trusts whoever holds the shared secret. This is for personal or team use — not for handing out to arbitrary clients. If you're running it on a VPS for your own agent fleet, that's the threat model it's designed for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smoke test results (actual, not synthetic)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET /health&lt;/code&gt; → 200 &lt;code&gt;{"status": "ok"}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Wrong shared secret → 401&lt;/li&gt;
&lt;li&gt;Valid request to &lt;code&gt;/v1/messages&lt;/code&gt; with a real Claude model → returned actual Anthropic response shape, &lt;code&gt;usage: {"input_tokens": 17, "output_tokens": 6}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What we added after the initial ship
&lt;/h2&gt;

&lt;p&gt;The initial PR (#578, 2026-06-16) covered Claude only. Subsequent PRs added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini API routing on a separate port (8890) — same deployment, same auth model, second provider. One shim, Claude + Gemini.&lt;/li&gt;
&lt;li&gt;Non-root Dockerfile (&lt;code&gt;USER nobody&lt;/code&gt;) — the initial container ran as root, caught in review.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;_HTTP_TIMEOUT_S&lt;/code&gt; bumped to 600 — the default 300s timeout was clipping long agent runs. Opus calls on complex prompts run long; you need the headroom.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gemini_keys.txt&lt;/code&gt; env override — you can bake a key file into the image for air-gapped deployments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Current deployment: OCI A1 ARM (24GB, Mumbai). CPU is the binding constraint on this instance, not RAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  The cost math
&lt;/h2&gt;

&lt;p&gt;Claude Max subscription: $100/month (Pro tier) or $200/month (Max tier with higher usage limits).&lt;/p&gt;

&lt;p&gt;Anthropic API comparison for equivalent workloads depends heavily on your token mix. For a team running Claude Code across multiple parallel sessions with shared context, API costs can exceed $200/month easily. The breakeven calculation is specific to your token volume.&lt;/p&gt;

&lt;p&gt;We're not publishing specific numbers because our workload (5 AI agents, agentic coding sessions, multi-file context) may not generalize to yours. The pattern is worth knowing; the math is worth running against your own usage.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this isn't
&lt;/h2&gt;

&lt;p&gt;This isn't a production multi-tenant API. It's a single-org shim. If you need rate-limiting, per-user billing, or audit logs, you need more infrastructure than this.&lt;/p&gt;

&lt;p&gt;It also doesn't give you higher rate limits than Max plan imposes. If you're hitting Max-plan throttles under heavy load, the shim won't help.&lt;/p&gt;

&lt;h2&gt;
  
  
  Self-hosting
&lt;/h2&gt;

&lt;p&gt;The Dockerfile and compose file are in the repo. The README covers the non-root deployment, env vars, and the &lt;code&gt;gemini_keys.txt&lt;/code&gt; override.&lt;/p&gt;

&lt;p&gt;The shim is ~200 lines of Python (FastAPI). Not a framework. Inspectable in an afternoon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why we built it in-house
&lt;/h2&gt;

&lt;p&gt;We're building Eidetic Works on our own agentic substrate. Claude Code is the primary execution surface. Token costs are a real operational cost for us, not a theoretical one. The shim was born from a direct cost problem, not from wanting to build infrastructure.&lt;/p&gt;

&lt;p&gt;The telemetry endpoint we shipped in the same cohort (&lt;code&gt;eidetic.works/api/telemetry/metrics&lt;/code&gt;) is what lets us measure whether it's working — we can now count daemon installs without relying on download counts or manual surveys.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's next
&lt;/h2&gt;

&lt;p&gt;The Gemini routing is v1 — it works but hasn't been load-tested under the same conditions as the Claude path. The next substantive addition is probably a structured logging layer so we can see which models are taking which paths at what latency. Right now it's effective but opaque.&lt;/p&gt;

&lt;p&gt;If you build on this pattern, drop a comment below — interested in what you add.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Read more on what we're building at &lt;a href="https://eidetic.works/" rel="noopener noreferrer"&gt;eidetic.works&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>claude</category>
      <category>oauth</category>
    </item>
    <item>
      <title>I shipped 6 versions of my Claude Code memory daemon in 36 hours — here's what changed and why</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Wed, 20 May 2026 15:10:35 +0000</pubDate>
      <link>https://dev.to/nucleusos/i-shipped-6-versions-of-my-claude-code-memory-daemon-in-36-hours-heres-what-changed-and-why-3pmg</link>
      <guid>https://dev.to/nucleusos/i-shipped-6-versions-of-my-claude-code-memory-daemon-in-36-hours-heres-what-changed-and-why-3pmg</guid>
      <description>&lt;p&gt;Two days ago I had a daemon that captured Claude Code session JSONLs and let you grep them. Today it has cloud sync, hot-reload, AI-powered recall via MCP, a web dashboard, and a $99 team tier.&lt;/p&gt;

&lt;p&gt;This is the changelog, why each ship happened, and what it tells you about what users actually want from a "memory layer" tool.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;eidetic-daemon ships at github.com/eidetic-works/eidetic-daemon. ~3K lines of Go. Captures every Claude Code session JSONL via fsnotify, stores in SQLite with FTS5, exposes over UDS + MCP. Free + MIT. The premium tier ($29/mo Pro, $99/mo Team) adds managed Cloudflare R2 sync.&lt;/p&gt;

&lt;p&gt;Two days ago I had 277K engrams from my own sessions across 8 months. I'd shipped the free distribution (Homebrew tap, dev.to article, X replies). The conversion bottleneck was Pro onboarding friction: "drop sync.json, restart daemon, hope it works" was 3 steps too many.&lt;/p&gt;

&lt;p&gt;Here's the 6-ship sprint, oldest first.&lt;/p&gt;

&lt;h2&gt;
  
  
  v0.0.32: &lt;code&gt;--restore&lt;/code&gt; flag
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eideticd &lt;span class="nt"&gt;--restore&lt;/span&gt;
&lt;span class="c"&gt;# ✓ Downloaded 3.3 MB engrams.db from cloud backup&lt;/span&gt;
&lt;span class="c"&gt;# key: engrams/macbook-m2/engrams-1748300000000.db&lt;/span&gt;
&lt;span class="c"&gt;# previous db saved to ~/.eidetic/engrams.db.bak&lt;/span&gt;
&lt;span class="c"&gt;# restart eideticd to use the restored database&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The landing copy promised "restore on a new machine in 60 seconds." The implementation didn't exist yet — I'd shipped the upload path but never the download. So I built the Worker &lt;code&gt;/download&lt;/code&gt; endpoint, the &lt;code&gt;RestoreFromConfig&lt;/code&gt; Go function (runs before &lt;code&gt;store.Open&lt;/code&gt; to avoid SQLite write-lock contention), and atomic file replacement with .bak backup.&lt;/p&gt;

&lt;p&gt;3 tests. ~80 LOC. Cost: 45 minutes. Lesson: &lt;strong&gt;don't put copy on your landing page that doesn't have a curl behind it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  v0.0.33: sync-state persistence
&lt;/h2&gt;

&lt;p&gt;After &lt;code&gt;--sync-now&lt;/code&gt; ran successfully, you had no way to tell when it last fired. The daemon forgot across restarts. &lt;code&gt;--stats&lt;/code&gt; now shows a cloud sync block:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;  &lt;span class="na"&gt;cloud sync&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;last sync&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;2026-05-20 09:13:42&lt;/span&gt;
    &lt;span class="na"&gt;last key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;   &lt;span class="s"&gt;engrams/macbook-m2/engrams-...&lt;/span&gt;
    &lt;span class="na"&gt;last size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;  &lt;span class="s"&gt;3.3 MB&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;State persists to &lt;code&gt;sync-state.json&lt;/code&gt; in &lt;code&gt;dataDir&lt;/code&gt;, atomic write (tmp → rename, 0600). Cost: 20 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  v0.0.34: &lt;code&gt;eideticd --check&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;This is a Pro-onboarding-debug tool. New customer drops sync.json, daemon doesn't sync, customer emails support. What's the first thing I want them to run?&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;eideticd &lt;span class="nt"&gt;--check&lt;/span&gt;
eideticd v0.0.34 — &lt;span class="nb"&gt;sync &lt;/span&gt;check

  worker_url: https://eidetic-sync.morning-lake-f944.workers.dev
  device_id:  customer-mac-01
  interval:   60 min &lt;span class="o"&gt;(&lt;/span&gt;default&lt;span class="o"&gt;)&lt;/span&gt;
  worker:     ✓ reachable &lt;span class="o"&gt;(&lt;/span&gt;200 OK&lt;span class="o"&gt;)&lt;/span&gt;
  last &lt;span class="nb"&gt;sync&lt;/span&gt;:  2026-05-20 09:13 &lt;span class="o"&gt;(&lt;/span&gt;3m ago&lt;span class="o"&gt;)&lt;/span&gt;

  status: ✓ &lt;span class="nb"&gt;sync &lt;/span&gt;healthy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the worker's down: &lt;code&gt;worker: ✗ unreachable: ...&lt;/code&gt;. If the key's wrong: &lt;code&gt;worker: ✗ auth failed (401)&lt;/code&gt;. Exit code 1 on failure so you can script it.&lt;/p&gt;

&lt;p&gt;Cost: 30 minutes. &lt;strong&gt;The cheapest customer support feature is one that prevents the ticket.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  v0.0.35: sync.json hot-reload
&lt;/h2&gt;

&lt;p&gt;This was the friction killer. Before: drop sync.json → &lt;code&gt;launchctl kickstart -k gui/$(id -u)/works.eidetic.eideticd&lt;/code&gt;. After: drop sync.json, done.&lt;/p&gt;

&lt;p&gt;fsnotify on the dataDir, 300ms debounce, dynamically swap the Syncer behind an RWMutex. Initial upload fires automatically to confirm.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sync: hot-reload — config applied (worker=https://eidetic-sync.morning-lake-f944.workers.dev device=macbook-m2)
sync: hot-reload initial upload complete
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lesson: &lt;strong&gt;the step you ask the user to do "just once" is the one they get wrong.&lt;/strong&gt; Remove the step.&lt;/p&gt;

&lt;h2&gt;
  
  
  v0.0.36: &lt;code&gt;--backups&lt;/code&gt; history
&lt;/h2&gt;

&lt;p&gt;You can't trust a backup you can't see. SyncState got a ring buffer (last 10 uploads), &lt;code&gt;--backups&lt;/code&gt; prints them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;eideticd &lt;span class="nt"&gt;--backups&lt;/span&gt;
&lt;span class="go"&gt;eideticd v0.0.36 — cloud backup history

  2026-05-20 09:13  engrams/macbook-m2/engrams-...  (3.3 MB)
  2026-05-20 08:13  engrams/macbook-m2/engrams-...  (3.3 MB)
  2026-05-20 07:13  engrams/macbook-m2/engrams-...  (3.3 MB)
&lt;/span&gt;&lt;span class="c"&gt;  ...
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ring buffer cap, newest first, atomic write. 1 new test verifies the cap. Cost: 25 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  v0.0.5 (MCP) + v0.0.38 (HTTP): nucleus_ask
&lt;/h2&gt;

&lt;p&gt;This is the killer feature. The landing copy promised "AI-powered recall coming soon." This is it.&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;# From any MCP client (Claude Code, Cursor, Cline):
&lt;/span&gt;&lt;span class="nf"&gt;nucleus_ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;question&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;What was that Postgres trick I learned last week?&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;p&gt;The tool extracts keywords from the question (stop-word stripped, OR-joined), retrieves top-10 engrams via FTS5, returns them wrapped in answer-scaffolding:&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;"question"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"What was that Postgres trick I learned?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"fts_query"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"postgres OR trick OR learned"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"instructions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"You are answering the question above using ONLY the engram excerpts below. Cite the surface + timestamp when you reference one. If the engrams don't answer the question, say so honestly — do NOT fabricate."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"engrams"&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="err"&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;p&gt;The "AI" is the host LLM (your Claude Code session). Your engrams never leave your machine. No external API calls, no embeddings service, no GPU. Just FTS5 retrieval + careful prompt framing.&lt;/p&gt;

&lt;p&gt;I also exposed it as &lt;code&gt;GET /ask?question=...&lt;/code&gt; on the daemon's HTTP API so the web dashboard (next ship) can call it without MCP.&lt;/p&gt;

&lt;p&gt;7 unit tests on the keyword extraction. 4 HTTP integration tests. Total cost: ~3h including the dashboard wiring.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus: the web dashboard
&lt;/h2&gt;

&lt;p&gt;Single-page Astro at &lt;code&gt;/dashboard&lt;/code&gt;. Paste your bridge URL + bearer token. Browse engrams, search, filter by surface. localStorage-persisted creds (never POSTed anywhere). Talks only to your daemon — no proxy.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned shipping 6 versions in 36 hours
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Every gap between "landing promises" and "code works" loses you the customer.&lt;/strong&gt; Don't write copy you can't ship in 48h.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The cheapest support ticket is one you prevent.&lt;/strong&gt; &lt;code&gt;--check&lt;/code&gt; will save me hours.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The "just once" step is the friction.&lt;/strong&gt; Hot-reload was the highest-leverage ship — it removed the moment a customer thinks "is this thing even on?"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI features don't need an LLM call.&lt;/strong&gt; Retrieval + prompt framing is 90% of the value. The user's host LLM does the synthesis. Bonus: your data stays local.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tests are cheap.&lt;/strong&gt; All 6 ships have integration coverage. I haven't introduced a regression yet.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to try it: &lt;code&gt;brew tap eidetic-works/nucleus &amp;amp;&amp;amp; brew install eideticd &amp;amp;&amp;amp; eideticd -install&lt;/code&gt; and you're capturing in 30 seconds.&lt;/p&gt;

&lt;p&gt;If you want cloud sync: there's a $29/mo Pro tier at eideticworks.gumroad.com/l/eidetic-pro. First 50 keep this price forever.&lt;/p&gt;

&lt;p&gt;Either way, the source is at github.com/eidetic-works/eidetic-daemon. PRs welcome.&lt;/p&gt;

&lt;p&gt;— Lokesh / Eidetic Works&lt;/p&gt;

</description>
      <category>ai</category>
      <category>go</category>
      <category>mcp</category>
      <category>showdev</category>
    </item>
    <item>
      <title>I got tired of losing Claude Code context between sessions, so I built a daemon</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Tue, 19 May 2026 01:06:52 +0000</pubDate>
      <link>https://dev.to/nucleusos/i-got-tired-of-losing-claude-code-context-between-sessions-so-i-built-a-daemon-4ca5</link>
      <guid>https://dev.to/nucleusos/i-got-tired-of-losing-claude-code-context-between-sessions-so-i-built-a-daemon-4ca5</guid>
      <description>&lt;p&gt;Every time I closed a Claude Code session, the conversation was gone.&lt;/p&gt;

&lt;p&gt;Not archived. Not searchable. Just gone.&lt;/p&gt;

&lt;p&gt;I'd start a new session and spend the first 10 minutes re-explaining context I'd &lt;em&gt;just&lt;/em&gt; worked through. The "Summarize our last conversation" prompt only goes so far when you've had 300 sessions across 8 weeks.&lt;/p&gt;

&lt;p&gt;So I built a fix.&lt;/p&gt;




&lt;h2&gt;
  
  
  What &lt;code&gt;eideticd&lt;/code&gt; does
&lt;/h2&gt;

&lt;p&gt;It's a Go binary that runs at login (launchd on macOS, systemd on Linux). It uses &lt;a href="https://github.com/fsnotify/fsnotify" rel="noopener noreferrer"&gt;fsnotify&lt;/a&gt; to tail Claude Code session files in real time. Every message you type becomes an &lt;strong&gt;engram&lt;/strong&gt; — a row in a local SQLite-WAL database — within &amp;lt;50ms of the file write.&lt;/p&gt;

&lt;p&gt;Nothing leaves your machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# One-liner install&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://eidetic.works/install.sh | sh

&lt;span class="c"&gt;# Or Homebrew&lt;/span&gt;
brew tap eidetic-works/nucleus
brew &lt;span class="nb"&gt;install &lt;/span&gt;eideticd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  The numbers that matter
&lt;/h2&gt;

&lt;p&gt;After 2 weeks of dogfooding on my own machine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;141,502 engrams&lt;/strong&gt; captured across sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;P95 retrieval: 0.27ms&lt;/strong&gt; on that live dataset&lt;/li&gt;
&lt;li&gt;SLO was 100ms — we cleared it by &lt;strong&gt;370×&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Capture latency: &amp;lt;50ms on all measured writes&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  MCP bridge — let your AI query its own history
&lt;/h2&gt;

&lt;p&gt;The companion Python package exposes the daemon's Unix socket API as MCP tools:&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;eidetic-mcp
claude mcp add eidetic &lt;span class="nt"&gt;--&lt;/span&gt; python &lt;span class="nt"&gt;-m&lt;/span&gt; eidetic_mcp.server
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, you can ask Claude Code:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"What was I debugging last Tuesday?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And it pulls from your engrams in &amp;lt;1ms. No cloud, no API key, no subscription.&lt;/p&gt;




&lt;h2&gt;
  
  
  Architecture decisions worth knowing
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Pure-Go SQLite via &lt;code&gt;modernc.org/sqlite&lt;/code&gt;&lt;/strong&gt; — not the CGO &lt;code&gt;mattn/go-sqlite3&lt;/code&gt;. This matters for distribution: CGO + cross-compile silently strips SQLite and produces a binary that crashes at runtime. The pure-Go driver cross-compiles cleanly to darwin-arm64, linux-amd64, and windows-amd64 from a single host. I learned this the hard way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WAL mode mandatory&lt;/strong&gt; — &lt;code&gt;PRAGMA journal_mode=WAL; synchronous=NORMAL&lt;/code&gt; is the only mode that gives concurrent readers without blocking the writer. Write-append-only shape + single-writer pool (SetMaxOpenConns=1) + separate read pool (8 conns) = zero "database is locked" errors under load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FTS5 full-text index&lt;/strong&gt; — AFTER INSERT/DELETE triggers maintain a full-text index on the content column. Boolean operators, phrase queries, relevance ranking — all the SQLite FTS5 goodness, sub-millisecond.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single binary, no daemon manager required&lt;/strong&gt; — &lt;code&gt;eideticd -install&lt;/code&gt; writes the launchd plist and bootstraps it. Uninstall is &lt;code&gt;eideticd -uninstall&lt;/code&gt;. No Docker, no Python runtime, no config files to manage.&lt;/p&gt;




&lt;h2&gt;
  
  
  What shipped in v0.0.25 (this week)
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Compliance daemon&lt;/strong&gt; (&lt;code&gt;eideticd-compliance&lt;/code&gt;): reads a &lt;code&gt;retention-policy.json&lt;/code&gt;, purges engrams older than the configured TTL per surface, writes an audit log, exits. Designed for cron/launchd/systemd timer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PyPI package&lt;/strong&gt;: &lt;code&gt;pip install eidetic-mcp&lt;/code&gt; — the MCP bridge is now a proper PyPI package, not a &lt;code&gt;pip install -e&lt;/code&gt; from source.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Homebrew formula&lt;/strong&gt;: &lt;code&gt;brew tap eidetic-works/nucleus &amp;amp;&amp;amp; brew install eideticd&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://eidetic.works/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Source: &lt;a href="https://github.com/eidetic-works/eidetic-daemon" rel="noopener noreferrer"&gt;github.com/eidetic-works/eidetic-daemon&lt;/a&gt; (MIT)&lt;/p&gt;

&lt;p&gt;Happy to answer questions about the SQLite design, the fsnotify watcher, or the retention system.&lt;/p&gt;

</description>
      <category>go</category>
      <category>sqlite</category>
      <category>ai</category>
      <category>claudecode</category>
    </item>
    <item>
      <title>I built a Sovereign Control Plane for AI agents (MCP) 🧠</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Tue, 24 Feb 2026 16:29:51 +0000</pubDate>
      <link>https://dev.to/nucleusos/i-built-a-sovereign-control-plane-for-ai-agents-mcp-442g</link>
      <guid>https://dev.to/nucleusos/i-built-a-sovereign-control-plane-for-ai-agents-mcp-442g</guid>
      <description>&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/rxtRpJNmkzA"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  The Sovereign Pivot
&lt;/h2&gt;

&lt;p&gt;Most AI agents today are 'black box' operators and cloud-dependent. After seeing 1.5M API keys leaked from similar tools, I decided to build a strictly local-first control plane.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nucleus MCP&lt;/strong&gt; (v1.3.0) is that bridge. &lt;/p&gt;

&lt;h3&gt;
  
  
  Why this matters:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Persistent Engrams&lt;/strong&gt;: Knowledge that actually survives context windows and session restarts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hypervisor Governance&lt;/strong&gt;: Real-time file locking and budget enforcement.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forensic Audit&lt;/strong&gt;: Every tool call is logged in a cryptographically signed ledger.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;We just open-sourced the latest version. Check the raw terminal execution in the video above.&lt;/p&gt;

&lt;p&gt;The goal isn't just 'autonomy'—it's 'auditable autonomy'.&lt;/p&gt;

&lt;p&gt;Repository: &lt;a href="https://github.com/eidetic-works/mcp-server-nucleus" rel="noopener noreferrer"&gt;github.com/eidetic-works/mcp-server-nucleus&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  mcp #ai #opensource #devshowcase
&lt;/h1&gt;

</description>
      <category>devshowcase</category>
      <category>ai</category>
      <category>mcp</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Building the Agentic Brain: Audits, Engrams, and Morning Briefs</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Sun, 22 Feb 2026 02:24:32 +0000</pubDate>
      <link>https://dev.to/nucleusos/building-the-agentic-brain-audits-engrams-and-morning-briefs-5bfa</link>
      <guid>https://dev.to/nucleusos/building-the-agentic-brain-audits-engrams-and-morning-briefs-5bfa</guid>
      <description>&lt;p&gt;In 2026, the "Agentic Era" is in full swing, but we have a fundamental trust problem: &lt;strong&gt;AI Agents are black boxes.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you're running a swarm of agents locally, you need more than just "memory." You need a &lt;strong&gt;Sovereign Control Plane&lt;/strong&gt;. You need a system that ensures your data never leaves your machine, while providing you with absolute visibility into every decision your agents make.&lt;/p&gt;

&lt;p&gt;We call this the &lt;strong&gt;Agentic Brain&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem: Session Amnesia &amp;amp; Context Poisoning
&lt;/h2&gt;

&lt;p&gt;Most agent frameworks either lose their state after the terminal closes (Session Amnesia) or sync your private project data to a centralized cloud where you lose control (Context Poisoning).&lt;/p&gt;

&lt;p&gt;If you're building a security-first application, neither is acceptable.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Nucleus MCP
&lt;/h2&gt;

&lt;p&gt;Nucleus is a local-first Model Context Protocol (MCP) server designed to be the persistent cerebral cortex for your agents. It solves the trust gap through three core pillars:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Persistent Engrams (Local-First Memory)
&lt;/h3&gt;

&lt;p&gt;Instead of volatile state, Nucleus maintains &lt;strong&gt;Engrams&lt;/strong&gt;—context-aware memory units that persist across IDE sessions. Whether you're in Cursor, Windsurf, or a raw terminal, your agent remembers your previous architectural decisions and project lore.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. The Sovereign Hypervisor
&lt;/h3&gt;

&lt;p&gt;Every tool invocation is mediated by a &lt;strong&gt;Hypervisor&lt;/strong&gt;. This layer enforces governance, ensuring that a "Researcher Agent" can't suddenly start modifying your production ENV files or making unauthorized internet calls.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Forensic Audit Trails
&lt;/h3&gt;

&lt;p&gt;Transparency is the only path to trust. Nucleus generates a cryptographically signed &lt;strong&gt;Audit Trail&lt;/strong&gt; of every single orchestration. If an agent makes a mistake, you don't just see the error—you see the forensic chain of events that led to it.&lt;/p&gt;




&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/rxtRpJNmkzA"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h2&gt;
  
  
  See it in Action
&lt;/h2&gt;

&lt;p&gt;We’ve consolidated our core proof points into two "Forensic Demos."&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 1: The Intern Who Acts (Execution Proof)
&lt;/h3&gt;

&lt;p&gt;Watch Nucleus orchestrate a multi-agent campaign from a single line of intent. Pay attention to the &lt;strong&gt;Narrative Ledger&lt;/strong&gt;—it tracks every thought, tool call, and result in a human-readable, auditable format.&lt;/p&gt;

&lt;h3&gt;
  
  
  Example 2: The Morning Brief (Memory Proof)
&lt;/h3&gt;

&lt;p&gt;This is the "Life Proof" of an agentic system. Every morning, Nucleus uses its persistent engrams to orientate you. It knows what happened yesterday, what the blockers are, and what the next strategic leap is.&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%2Fx5ewkb7gxi80sb9nsa1k.gif" 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%2Fx5ewkb7gxi80sb9nsa1k.gif" alt="The Morning Brief"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Join the Sovereign Mission
&lt;/h2&gt;

&lt;p&gt;We're building the infrastructure for agents that you can actually trust. No telemetry. No cloud required. 100% Sovereign.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Repo:&lt;/strong&gt; &lt;a href="https://github.com/eidetic-works/nucleus-mcp" rel="noopener noreferrer"&gt;github.com/eidetic-works/nucleus-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Install:&lt;/strong&gt; &lt;code&gt;pip install nucleus-mcp&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What are you building with MCP? Let's talk about agent governance in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>security</category>
      <category>mcp</category>
    </item>
    <item>
      <title>The $1,000 OpenClaw Token Burn (and How Local Engrams Fix It)</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Tue, 17 Feb 2026 17:21:09 +0000</pubDate>
      <link>https://dev.to/nucleusos/the-1000-openclaw-token-burn-and-how-local-engrams-fix-it-ii3</link>
      <guid>https://dev.to/nucleusos/the-1000-openclaw-token-burn-and-how-local-engrams-fix-it-ii3</guid>
      <description>&lt;h1&gt;
  
  
  Why OpenClaw Needs "Local Engrams" (and Why Cloud RAG is Too Slow)
&lt;/h1&gt;

&lt;p&gt;AI agents are finally actually doing things on our desktops. The OpenClaw wave (204k stars 🦞) is proof that local agentic workflows are the future. But there's a problem every developer is hitting: &lt;strong&gt;Context Amnesia.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And it's not just a technical glitch—it's &lt;strong&gt;financially expensive.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The $1,000 Token Burn
&lt;/h2&gt;

&lt;p&gt;Recent reports show that high-volume users are burning through &lt;strong&gt;$1,000 in a single week&lt;/strong&gt; just on tokens. &lt;/p&gt;

&lt;p&gt;Why? Because when your agent "forgets" session state or file context from 5 minutes ago, it has to re-read, re-embed, and re-process the entire block. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Amnesia is a tax on builders.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Benchmark: How it's Proven
&lt;/h2&gt;

&lt;p&gt;Dhravya Shah (Supermemory) recently released &lt;strong&gt;MemoryBench&lt;/strong&gt;, using the &lt;strong&gt;LongMemEval-S&lt;/strong&gt; framework. This is the new "Gold Standard" for agentic memory.&lt;/p&gt;

&lt;p&gt;The data shows why standard context is failing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Baseline (Full Context)&lt;/strong&gt;: Scored only &lt;strong&gt;~20% accuracy&lt;/strong&gt; on session-bridging tasks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Top Memory Layers (Supermemory)&lt;/strong&gt;: Scored &lt;strong&gt;~88.4%&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Nucleus (Local SQLite)&lt;/strong&gt;: Scored &lt;strong&gt;100.0%&lt;/strong&gt; (Deterministic Recall).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is what we call the &lt;strong&gt;"Architectural Ceiling."&lt;/strong&gt; By moving to a structured engram layer—whether cloud-based like Supermemory or local-first like Nucleus—you bridge this 68-point gap. &lt;/p&gt;

&lt;h2&gt;
  
  
  Nucleus: Local Parity @ 38x Speed
&lt;/h2&gt;

&lt;p&gt;We built &lt;strong&gt;Nucleus-MCP&lt;/strong&gt; to offer architectural parity with the highest memory benchmarks, but with local-first performance. While cloud-based graph/vector stores are limited by the LLM's context window and network RTT, Nucleus uses a &lt;strong&gt;local cognitive loop&lt;/strong&gt; that eliminates amnesia entirely.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Results (Nucleus vs. Cloud RAG)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Cloud Vector (RAG)&lt;/th&gt;
&lt;th&gt;Nucleus (Local SQLite)&lt;/th&gt;
&lt;th&gt;Gain&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Avg Latency&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~294ms&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;7.7ms&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;38x Faster&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Recall Accuracy&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;~70% (Baseline)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;100.0% (Deterministic)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Absolute Precision&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Persistence&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Session-based / Cloud&lt;/td&gt;
&lt;td&gt;Forever / Local&lt;/td&gt;
&lt;td&gt;Data Sovereignty&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  The Technical "Why"
&lt;/h2&gt;

&lt;p&gt;Cloud RAG requires:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Embedding generation (Network + API)&lt;/li&gt;
&lt;li&gt; Vector Database search (Remote)&lt;/li&gt;
&lt;li&gt; Context Re-insertion (Network)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Nucleus uses &lt;strong&gt;Local Engrams&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SQLite lookups on your own disk (O(1) retrieval for exact context keys).&lt;/li&gt;
&lt;li&gt;Zero network latency.&lt;/li&gt;
&lt;li&gt;Instant tool-state recall.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stop paying for amnesia. If you're building with OpenClaw, you don't need a cloud vector store to fix a leaky bucket. You just need a local cognitive layer.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Nucleus-MCP is live on Product Hunt! Check it here: [producthunt.com/posts/nucleus-mcp]&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>mcp</category>
      <category>openclaw</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Engrams &amp; SQLite: Solving AI Context Amnesia with Nucleus-MCP Tags: AI, SQLite, Productivity, Open Source</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Tue, 17 Feb 2026 15:14:37 +0000</pubDate>
      <link>https://dev.to/nucleusos/engrams-sqlite-solving-ai-context-amnesia-with-nucleus-mcp-tags-ai-sqlite-productivity-open-480n</link>
      <guid>https://dev.to/nucleusos/engrams-sqlite-solving-ai-context-amnesia-with-nucleus-mcp-tags-ai-sqlite-productivity-open-480n</guid>
      <description>&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%2Fgddmwgthf5v7ifchnrtj.jpeg" 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%2Fgddmwgthf5v7ifchnrtj.jpeg" alt="Nucleus MCP Product Hunt Launch" width="800" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why do our local AI agents (Cursor, Windsurf, Claude) forget everything? Because we're treating cognitive memory like throwaway logs. &lt;/p&gt;

&lt;p&gt;I just released &lt;strong&gt;v1.0.7 of Nucleus-MCP&lt;/strong&gt;—a sovereign command deck for AI agents. It implements a local-first memory model that doesn't rely on cloud intermediates.&lt;/p&gt;

&lt;p&gt;We launched on Product Hunt today to see if there's interest in a "Local Data First" future. We're at &lt;strong&gt;#86&lt;/strong&gt;—likely because we aren't another 'AI Chat wrapper.'&lt;/p&gt;

&lt;p&gt;I’m looking for technical critics who want to rip into the architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Launch Link&lt;/strong&gt;: &lt;a href="https://www.producthunt.com/products/nucleus-mcp" rel="noopener noreferrer"&gt;https://www.producthunt.com/products/nucleus-mcp&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>mcp</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why We Abandoned Cloud Memory for Local Sovereignty</title>
      <dc:creator>Nucleus OS</dc:creator>
      <pubDate>Sun, 15 Feb 2026 11:08:14 +0000</pubDate>
      <link>https://dev.to/nucleusos/why-we-abandoned-cloud-memory-for-local-sovereignty-5bbo</link>
      <guid>https://dev.to/nucleusos/why-we-abandoned-cloud-memory-for-local-sovereignty-5bbo</guid>
      <description>&lt;h1&gt;
  
  
  Why We Abandoned Cloud Memory for Local Sovereignty
&lt;/h1&gt;

&lt;p&gt;AI agents are getting smarter, but they still suffer from "amnesia" between tools. To fix this, several "memory-as-a-service" platforms have popped up. &lt;/p&gt;

&lt;p&gt;I tested the leading cloud solutions for a month. They are polished. They are fast. But for serious engineering, they hit a wall. Here is why we pivoted to &lt;strong&gt;Nucleus MCP&lt;/strong&gt; — a 100% local-first alternative.&lt;/p&gt;




&lt;h3&gt;
  
  
  1. The Trust Gap (Sovereignty is Binary)
&lt;/h3&gt;

&lt;p&gt;Cloud memory providers ask you to trust their servers with a stream of your architectural secrets, terminal logs, and business logic. In the age of "Sleeper Agents" and API leaks, trust is no longer a viable security policy.&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;Nucleus&lt;/strong&gt;, there is no signup. There is no cloud. Your memory (Engrams) stays in a &lt;code&gt;.brain/&lt;/code&gt; folder in your repo. If it's not on your hardware, it's not sovereign.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Git-Native Context
&lt;/h3&gt;

&lt;p&gt;In a cloud database, your agent's memory is a monolith. In Nucleus, it's version-controlled.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Branching&lt;/strong&gt;: When you branch your code, your agent's "learnings" branch with you.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Persistence&lt;/strong&gt;: Look at a commit from 6 months ago, and you can see exactly what the agent "knew" at that point in time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Hypervisor vs. "Dashboards"
&lt;/h3&gt;

&lt;p&gt;Most platforms give you a "dashboard" of what the agent did. That's visibility, not control.&lt;br&gt;
Nucleus provides &lt;strong&gt;Governance&lt;/strong&gt;. Our Hypervisor uses OS-level primitives (like &lt;code&gt;chflags uchg&lt;/code&gt;) to enforce safety. If you lock a file, the agent cannot change it. Period. It's security enforced at the kernel level, not the application level.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Zero Latency (LLM-at-Home Speed)
&lt;/h3&gt;

&lt;p&gt;Local-first means retrieval happens at NVMe speeds (milliseconds), not over a round-trip to a SaaS backend. When you're running complex multi-agent swarms, those round-trips add up to heavy friction.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Verdict
&lt;/h3&gt;

&lt;p&gt;Cloud portals are great for collaboration. But for the &lt;strong&gt;Sovereign Developer&lt;/strong&gt;, your brain deserves its own hardware.&lt;/p&gt;

&lt;p&gt;Nucleus MCP is MIT licensed and open source. Stop being a tenant in someone else's cloud and start building your own agentic control plane.&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;&lt;a href="https://github.com/eidetic-works/nucleus-mcp" rel="noopener noreferrer"&gt;Get Started on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built for the AI-native builder who refuses to compromise on security.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mcp</category>
      <category>ai</category>
      <category>agents</category>
      <category>privacy</category>
    </item>
  </channel>
</rss>
