The architecture diagram has existed for weeks. Four layers, clean boxes, nice colors. BIOS at the bottom, brain above it, a local LLM brokering decisions in the middle, Claude at the top for when you need serious reasoning. I’ve written about it. I’ve pointed at it in conversations. It’s been a diagram.
Today it became code.
cortex_watch.py is a Python script that watches ~/Downloads for new files. When something lands, it reads the BIOS — a markdown file that describes the canonical structure of my filesystem — and asks a local language model what to do with it. The model is qwen2.5:14b, running on the gaming PC in the other room over Tailscale. The PC doesn’t know I’m building a cortex. It just serves inference requests and goes back to whatever it was doing.
The script took most of the day to get working end-to-end. The SSH connection to the PC was broken — it’s a Microsoft account, which Windows won’t let you authenticate over SSH because the password lives in Redmond. Fixed with a local admin account. The brain endpoint was silently failing because Python’s requests library doesn’t send an Accept header that FastMCP requires. Fixed with two lines. The file watcher was triggering twice per file because macOS fires an on_moved event when we move a file into a subfolder, and we were routing our own moves as if they were new arrivals. Fixed with a chokepoint check.
None of these bugs were interesting. They were just the cost of the first day.
The first real file the cortex processed was the EIN for Golds Honey LLC.
An EIN is a federal employer identification number — nine digits that identify a business to the IRS. Mine covers the honey operation that’s been running at a technical loss for the better part of two years. I’m hoping an SBIR grant changes that, but that’s a later problem.
The model had never seen this file before. It knew the filename (EIN Golds Honey.pdf), a brief description of the binary content, and the contents of my BIOS file. It ran its two-stage routing logic:
Stage 1: is this sensitive? Tax IDs, financial documents, anything identity-adjacent → route to ~/Downloads/_personal/ regardless of topic. Privacy wins.
The model flagged it correctly. “STAGE 1 identified the file as financial and identity-sensitive.” A macOS dialog appeared. I clicked Move. The file went to _personal/. The brain captured the confirmed decision.
the routing decision in action. STAGE 1 caught the sensitivity flag before STAGE 2 ever ran. one click, the file goes home.
That’s the loop. File lands → context assembly → local model → human confirmation → move → brain remembers.
Here’s the part I didn’t expect to notice until I saw it.
Later in the afternoon, I was prepping a checklist for tonight’s SBIR registration work. SAM.gov, SBA Company Registry, Grants.gov. The checklist included a note about where to find the EIN document. And sitting there in the checklist, naturally, was ~/Downloads/_personal/ — pulled from the brain capture made three hours earlier when the cortex routed that exact file.
three hours later. same path. the brain remembered without being asked.
The system that I spent the day building had, on its first working session, handled a real document related to the grant application that will fund the system I’m building. And the brain capture from that routing decision fed directly into the next task.
I’m not claiming this is magic. It’s a Python script and a language model and a vector database. But there’s something satisfying about a tool that eats its own cooking on day one.
What’s broken or missing: the file watcher still has a double-event quirk on macOS that puts timestamp suffixes on files when the same document gets re-detected. The brain captures routing decisions but doesn’t yet track whether files get confirmed or overridden by the human. The BIOS has gaps — my ~/Downloads/ folder has working buffers the cortex doesn’t know about yet.
These are all day-two problems.
What works: a file lands, a local model decides where it goes, a human confirms, the move happens, the brain remembers. The architecture diagram is no longer just a diagram.
What’s next: basement. Friday. Solder the Atlas pH and dissolved oxygen sensors to the Pi, confirm I2C addresses, get one reading streaming to the dashboard. The cortex routes files. The lab generates data. Eventually these two things talk to each other.
But first: SAM.gov registration from the couch. The cortex already knows where the EIN is.