{"id":77,"date":"2026-05-24T15:35:46","date_gmt":"2026-05-24T23:35:46","guid":{"rendered":"https:\/\/satchnet.io\/?p=77"},"modified":"2026-05-24T15:35:46","modified_gmt":"2026-05-24T23:35:46","slug":"i-built-a-shared-brain-for-every-ai-on-my-homelab-from-my-phone-at-37000-feet","status":"publish","type":"post","link":"https:\/\/satchnet.io\/?p=77","title":{"rendered":"I Built a Shared Brain for Every AI on My Homelab \u2014 From My Phone, at 37,000 Feet"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\"><em>How git, markdown, and sheer stubbornness replaced a $200\/month RAG pipeline<\/em><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m an airline pilot. I also run what my wife generously calls \u201ctoo many computers\u201d in our house. Home Assistant, Proxmox, TrueNAS, Ollama, Frigate, TeslaMate, n8n \u2014 the whole homelab starter pack, plus some extras that probably qualify as a cry for help. My electric bill looks like a car payment and I regret nothing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I also use AI constantly. Claude Terminal Pro lives inside my Home Assistant. Gemini CLI sits right next to it. Claude Code runs on my workstation. I talk to Claude.ai on my phone while pretending to watch movies on long-haul flights. Each one knows things about my setup that the others don\u2019t. And that\u2019s been driving me absolutely fucking insane.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Problem: Every AI Has Amnesia<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s what my life looked like before this project:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Me to Claude Terminal Pro:<\/strong> \u201cThe W200 thermostat kills its preset mode every time you send a temperature command through HA. Learned this the hard way. Took me three days to figure out. Don\u2019t ever do it.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Claude Terminal Pro learns this. Adds it to its notes. Never makes that mistake again. Good robot.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Me to Gemini CLI, two days later:<\/strong> \u201cHey, set the thermostat to 72.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Gemini happily sends the command and blows away the active preset. Because it has no fucking idea about the W200 bug. Why would it? It\u2019s a completely different AI with completely different memory sitting on the SAME GODDAMN MACHINE.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Me:<\/strong> <em>screaming internally while explaining the same thing for the fourth time this month<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Every AI I use has its own siloed memory. Claude.ai\u2019s memories live on Anthropic\u2019s servers. Gemini\u2019s live at Google. Claude Terminal Pro has a local CLAUDE.md file. Gemini CLI has GEMINI.md. None of them talk to each other. Ever. It\u2019s like having four coworkers who share a desk but communicate exclusively through Post-it notes that only I can read and deliver.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I was the human middleware. The wetware message bus. The meat-based integration layer between AI systems that are individually brilliant but collectively have the institutional memory of a goldfish.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Fuck. That.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Idea: One Big Fucking Brain<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The concept hit me somewhere over the Pacific Ocean, cruising at FL370 on the way to Hong Kong. I was chatting with Claude on my phone (as one does when you\u2019re a pilot with WiFi and poor life choices), and I thought:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What if there was a single knowledge base that every AI on my network could read from and write to? Not some fancy vector database. Not a RAG pipeline with seventeen microservices. Not a $200\/month SaaS product from a startup that\u2019ll pivot to crypto in six months.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Just\u2026 a git repo full of markdown files.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I know. I KNOW. The AI infrastructure crowd is going to read that and have a stroke. \u201cWhere\u2019s your embedding model? Your vector store? Your semantic retrieval layer?\u201d It\u2019s text files, Karen. Markdown and git. The same technology that\u2019s been running every software project on earth since Linus Torvalds got pissed off in 2005. Sometimes the boring solution is the right one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Think about it: every AI tool in existence can read text. Git handles versioning, conflict resolution, and attribution. Markdown is human-readable AND machine-readable. The entire AI industry is out here building embedding pipelines and semantic search clusters, and I\u2019m sitting in seat 2A thinking \u201cwhat if it\u2019s just text files and every engineer on LinkedIn is overthinking this?\u201d<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Architecture: It\u2019s Embarrassingly Simple<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Here\u2019s the entire system:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>A Gitea instance<\/strong> running on a tiny LXC container (1 CPU, 512MB RAM, 8GB disk \u2014 my toaster uses more resources)<\/li>\n\n\n\n<li><strong>A git repo<\/strong> called <code>ai-brain<\/code> full of organized markdown files<\/li>\n\n\n\n<li><strong>A single service account<\/strong> with one token that every AI uses<\/li>\n\n\n\n<li><strong>Instructions in each AI\u2019s config<\/strong> that say \u201cpull the brain before working, push updates when you learn something new\u201d<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">That\u2019s it. That\u2019s the whole fucking thing. I\u2019ll wait while you look for the complicated part.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The repo structure:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ai-brain\/\n\u251c\u2500\u2500 infrastructure\/    # Proxmox, TrueNAS, networking, backups\n\u251c\u2500\u2500 homeassistant\/     # Climate, dashboards, automations, voice\n\u251c\u2500\u2500 services\/          # Ollama, Frigate, TeslaMate, n8n\n\u251c\u2500\u2500 people\/            # Family, preferences, personal context\n\u251c\u2500\u2500 landmines.md       # \"Touch this and die\" list\n\u251c\u2500\u2500 patterns.md        # \"Always do it this way or I swear to god\" list\n\u2514\u2500\u2500 pending-projects.md # The graveyard of good intentions<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Each file contains structured knowledge: entities, configurations, gotchas, architecture decisions, personal context. All with attribution tags so you can see which AI added what and when. Git blame, but for robot knowledge.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How It Works Day-to-Day<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Every AI on my network follows the same loop:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pull<\/strong> \u2014 <code>git pull<\/code> to get the latest brain state<\/li>\n\n\n\n<li><strong>Read<\/strong> \u2014 look at files relevant to the current task<\/li>\n\n\n\n<li><strong>Work<\/strong> \u2014 do whatever I asked<\/li>\n\n\n\n<li><strong>Learn<\/strong> \u2014 if something durable was discovered, update the appropriate brain file<\/li>\n\n\n\n<li><strong>Push<\/strong> \u2014 commit and push so every other AI gets the knowledge<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The key word is \u201cdurable.\u201d The AIs are instructed to commit facts, relationships, preferences, architecture decisions, and lessons learned. Not moods. Not temporary frustrations. Not \u201cDave seems extra pissed about the thermostat today.\u201d Durable knowledge only.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I don\u2019t want a journal. I want an ops manual that writes itself.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Moment I Lost My Shit (In a Good Way)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">After setting everything up \u2014 and remember, I\u2019m doing all of this from my phone, in an airplane, over the Pacific Ocean like some kind of unhinged sysadmin astronaut \u2014 I ran a test.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">First, I had Gemini update the brain with our DNS topology. Three Pi-holes, three nameservers, the whole setup. Gemini committed, pushed to the brain. Cool.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then I opened Claude Terminal Pro and just asked:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>\u201cWhat does the DNS topology look like on our network?\u201d<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I didn\u2019t tell Claude to check the brain. I didn\u2019t mention Gemini. I didn\u2019t say \u201chey, another AI just updated some shit.\u201d I just asked the question like I would any other day.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Claude\u2019s first move: <code>cd \/config\/ai-brain &amp;&amp; git pull<\/code><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On its own. Nobody told it to. It just did it because that\u2019s what its instructions say to do.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Then it read the networking file \u2014 the one <strong>Gemini<\/strong> had updated seven minutes earlier \u2014 and gave me a perfect answer with all the details Gemini had added. But this beautiful bastard didn\u2019t stop there. Claude decided to actually <em>verify<\/em> the information by scanning the real network with nslookup and dig, discovered additional hostnames that Gemini hadn\u2019t found, and pushed its findings back to the brain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I pulled up the Gitea commit history:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Claude  \u2014 docs: add confirmed DNS server hostnames     8 minutes ago\nGemini  \u2014 infra: update DNS topology and add Gitea LXC  15 minutes ago\ndrsatch \u2014 Initial brain population                       1 hour ago<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Three different authors. Two AIs that have never shared a single byte of memory before, independently reading from and writing to the same knowledge base. One of them verified and EXTENDED the other\u2019s work. Without anyone asking it to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I may have yelled \u201cFUCK YES\u201d loud enough for nearby passengers to hear. No regrets. This was worth it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why This Is Better Than Everything Else<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>No vendor lock-in.<\/strong> The memories aren\u2019t stored in Anthropic\u2019s cloud or Google\u2019s servers or some VC-funded startup\u2019s database that\u2019ll get acqui-hired next quarter. They\u2019re markdown files on a box in my house. If Claude disappears tomorrow, the knowledge persists. If I switch to a completely different AI next year, it reads the same files. The AIs are interchangeable parts. The brain is permanent. I OWN my AI\u2019s memory. That sentence shouldn\u2019t feel as revolutionary as it does.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>No complexity.<\/strong> It\u2019s git and text files. I didn\u2019t have to learn about embeddings. I didn\u2019t have to deploy a vector database. I didn\u2019t have to configure a retrieval pipeline. I didn\u2019t have to sell a kidney to pay for API calls to some embedding service. <code>git clone<\/code>, done.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It compounds like interest.<\/strong> Every AI interaction on my network makes the brain smarter for the next one. Six months from now, I could spin up a brand new AI tool on a brand new machine, and within thirty seconds of cloning the repo, it knows every IP address, every integration gotcha, every family member\u2019s name, every personal preference, and every hard-learned lesson from hundreds of hours of work. It\u2019s like hiring a new employee who\u2019s already read every internal doc on day one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>It\u2019s self-maintaining.<\/strong> I don\u2019t update it manually. The AIs do it as a natural part of their workflow. Fixed a bug? The fix goes in the brain. Discovered a gotcha? It goes in the landmines file. Changed a config? The brain reflects it. I just work normally, and the knowledge base grows behind the scenes. It\u2019s like compound interest for institutional knowledge, except the interest is generated by robots who never sleep.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Killer Feature: Instant Onboarding<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Think about what happens when you set up a new AI tool. Normally, you spend the first 20 minutes of every conversation doing this sad little dance:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u201cI run Home Assistant on Proxmox.\u201d<br>\u201cMy thermostat is an Aqara W200 and it\u2019s a piece of shit in these specific ways.\u201d<br>\u201cMy wife\u2019s name is New, she\u2019s in Thailand.\u201d<br>\u201cMy Tesla is called the Millennium Falcon.\u201d<br>\u201cNever, EVER docker-compose down on the TeslaMate container.\u201d<br>\u201cNo, I\u2019m not a sysadmin. I\u2019m a pilot. Talk to me like a human.\u201d<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With the brain: <code>git clone<\/code>, pull, done. The AI knows EVERYTHING. Every landmine, every preference, every architectural decision, every person in the household, every service on the network. Instant context. Zero repetition. Zero \u201clet me get you up to speed.\u201d It\u2019s already up to speed. It was up to speed before you even opened the terminal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The new AI reads the brain and immediately knows that your thermostat is a temperamental asshole, your son leaves his bedroom light on, your notification system rewrites alerts through a sarcasm engine, and your car is named after a spaceship. That\u2019s not onboarding. That\u2019s telepathy.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What\u2019s Next<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Network auto-discovery<\/strong> \u2014 I\u2019m going to have an AI scan my entire subnet, fingerprint every service and port, and document everything it finds. The brain shouldn\u2019t be limited to what I remember to tell it. There\u2019s probably shit running on my network that I forgot I set up three months ago.<\/li>\n\n\n\n<li><strong>n8n integration<\/strong> \u2014 automated workflows that write to the brain. Nightly changelog generation from commits. Conflict detection. Maybe a webhook endpoint so even HTTP-only tools can contribute.<\/li>\n\n\n\n<li><strong>Local model access<\/strong> \u2014 my Ollama instance running local models can read the brain files too. Now my local AI isn\u2019t just a dumb text generator \u2014 it\u2019s an informed participant that knows my entire setup.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Let\u2019s Talk About How I Built This<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Oh, did I mention the part where I did all of this from my PHONE?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Not a laptop. Not a workstation. My phone. A Pixel 10 Pro XL with Termius for SSH, a mobile browser for Gitea, and Claude.ai for planning. At 37,000 feet. Over the Pacific Ocean. On WiFi that I\u2019m frankly shocked worked as well as it did.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I installed Gitea on a fresh LXC. Set up the reverse proxy. Created the repo. Wrote 22 knowledge files covering every aspect of my homelab. Created service accounts. Generated API tokens. Wired up two different AI tools. Tested cross-AI knowledge transfer. Watched two robots share memories for the first time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">From a phone. In an airplane. While allegedly on vacation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m a pilot. I don\u2019t have a CS degree. I don\u2019t work in tech. I just got tired of being the meat middleware between AI systems that should be able to share a goddamn text file, and I fixed it with the most boring technology stack imaginable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The total cost: one LXC container using 512MB of RAM.<br>The total complexity: git and markdown.<br>The total time: about two hours of flight time and some creative profanity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The AI industry is spending billions on memory and context solutions. Mine cost me less than the in-flight WiFi.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><em>If you want to build your own: get a machine that can run Gitea (literally anything with a pulse and a network connection), create a repo with markdown files organized by topic, give your AIs a token and instructions to pull before reading and push after learning. That\u2019s it. That\u2019s the whole architecture. No PhD required. No venture funding needed. Just git, markdown, and the radical idea that maybe the simplest solution is the best one.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Now if you\u2019ll excuse me, I have a flight to catch.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How git, markdown, and sheer stubbornness replaced a $200\/month RAG pipeline I\u2019m an airline pilot. I also run what my wife generously calls \u201ctoo many computers\u201d in our house. Home Assistant, Proxmox, TrueNAS, Ollama, Frigate, TeslaMate, n8n \u2014 the whole homelab starter pack, plus some extras that probably qualify as a cry for help. My [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-77","post","type-post","status-publish","format-standard","hentry","category-llm"],"_links":{"self":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts\/77","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=77"}],"version-history":[{"count":1,"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts\/77\/revisions"}],"predecessor-version":[{"id":78,"href":"https:\/\/satchnet.io\/index.php?rest_route=\/wp\/v2\/posts\/77\/revisions\/78"}],"wp:attachment":[{"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=77"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=77"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/satchnet.io\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=77"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}