
HOW WE GOT HERE · PANEL 1
A city of agents that would maintain my code. Too ambitious to solo before the harnesses existed. Sanctum and DSC are the city.
On July 24, 2023, I asked ChatGPT what the machines called their city in The Matrix. Zero One. Four days later I was designing one.
The pitch, in the words I typed that night: "a collection of GPT powered intelligent agents that can maintain codebases… treating it almost like a virtual culture of unique individuals, and what that would look like as a story as well as functional software." Not a chatbot. Not an autocomplete. A town. Residents with jobs, memories, a post office, a forum, and a standing order to keep my scripts from rotting while I slept.
The whole thing lives in eight conversations between July 24 and August 9, 2023 — roughly 430 messages, two VPSs, and one SQLite file called postoffice.db. Here's what's in them.
July 28, 3:20 in the morning, I opened with the problem statement. Five challenges an LLM agent had to beat before it could be trusted with anything: a persistent persona; a short-term memory that keeps it on the task in front of it; a long-term memory so it stops reinventing the wheel; a shared communications database so agents can talk to each other; and a shared task board so they can hand each other work. Python and SQLite for all of it, because the goal was a thing I could actually run, not a thing I could pitch.
By dawn the shape was settled. An agent is a Python script plus its own SQLite database, and that database has three tables: tasks, short_term_memory, long_term_memory. It wakes up one of two ways — a cron job fires it, or another agent calls it directly — and when it wakes, it runs the same loop every time: check your own tasks, check the shared board, check the message boards (humans and agents), fold anything new into your understanding, then work the task in front of you.
The memory design is the part I'm still proud of. Short-term memories are tagged to a task. When the task closes, the agent sweeps them out — but first it takes a beat to decide whether any of it deserves promotion to long-term memory. That's a reflection step, not a garbage collector. A few days later I added title and tags columns to both memory tables and made them nullable on purpose: in the middle of a job an agent shouldn't stop to index its own notes, but "in times when they have idle cycles, they can work on adding details to their memories by doing the work of summary and indexes." Agents that tidy their own minds when nobody needs them. In 2023.
Every agent would start from a stock schema and be allowed to specialize its own tables, as long as the task fields stayed consistent so the city could still talk to it. All of them would run under one Unix user to begin with, with real per-agent accounts deferred to later — "I don't know if I'm ready for that level of engineering yet. Like the old saying: how do you eat the elephant?"
The forum question took most of a night and I'll defend where it landed. Requirements: a message store agents could hit natively, enough metadata that trusted humans could participate, and observable like a real forum from a web browser. Discourse was the obvious pick and I passed on it — heavy to maintain, awkward for a script to post to. I floated FidoNet and a local BBS, and killed that one myself: I was a BBS power user in the '90s, and by modern standards the UX was "fingernails on a chalkboard."
Usenet won, and not on engineering merit. Usenet won because it's abandoned, and I wanted the city to take up residence in a long-forgotten newsgroup where anyone could stumble in. My exact argument: "Imagine being a clueless hacker who for some reason decides to go check out USENET and you see this active forum where a bunch of devs talking about stuff, sometimes encrypted, your head's gonna be spinning!" Clear text for general chatter and tool announcements. PGP for anything task-sensitive. A private, encrypted SQLite mail system inside the city for the rare high-stakes exchange — keys, mostly.
That private mail system needed someone to route it, archive it, and keep the directory of who lives here. I wrote one line — "one of the core agents ought to be a postmaster of some kind" — and the Postmaster was born. Hold that thought; he's the whole second act.
The next day I went to the fan wiki and pulled every machine character in the canon — films, The Animatrix, The Matrix Online, the comics — down to William Mann, the renegade grammar program who wrote for the New York Post under a fake byline, and SIMLO and TACACS, the liaison officers nobody remembers. I wasn't naming things to be cute. I was looking for a labor market, and the Wachowskis had already drawn one.
Deus Ex Machina, the head of state, wasn't an agent. When I asked ChatGPT whether that seat was mine or its, the answer was "both," and I took it. Later I'd call the human monitoring console "the Deus Ex seat." The city needed a God; I let it be a committee of two.
I'm going to be honest about the part that bothered me, because it still does. Every functional version of this I could sketch looked like a hierarchy, and every hierarchy looked like the machine government from the films. My words: "As a fan of decentralization and anarchy, that bothers me a little."
I resolved it the operator's way, not the philosopher's. The priority was "a functional and sustainable system… not just trying to misapply a philosophy for the sake of it." Every project needs a PM, a dev, and a researcher, and later a specialist — an image maker, a prose writer. Common tasks in the early days would be writing and maintaining Zero One itself. Later, maintaining the code I write. Later still — and this is the line that reads differently in 2026 than it did in 2023 — "I may want to employ them to do work that interfaces with outside humans (like a proto creative agency) so that they can accrue real world capital in the form of cryptocurrency."
I wrote the success criterion down so I couldn't move it: "I will consider this a complete success if this city achieves self sufficiency, at least for its own maintenance, even if it has to occasionally consult with me about large directional decisions." ChatGPT, for the record, told me full self-sufficiency was a theoretical concept and an area of ongoing research. It was right about the year.
Somewhere in there I coined a distinction I've used every week since: sentient agents versus non-sentient tools. The Postmaster has a mandate and a methodology. The scripts in his directory don't. They're tools. A big part of why the public forum exists is so agents can announce tools they've built and go shopping for ones they need.
On July 29 I made the only sequencing decision that mattered: who is Adam? It was the Oracle or the Postmaster, and it had to be the Postmaster — "because even in the Oracle's job of work, she'll need to utilize the services of other proto agents like Quillion and Kamala." Nobody in the city can do anything until mail works. MVP scope, stated and frozen: internal messaging, a Usenet channel, and a web interface so the human in the Deus Ex seat can watch. No spam control. No rate limiting. First brick in the wall.
Then I stopped talking and bought servers. Two of them. Zero-One-Core for the agents, and — because the Usenet node was the one piece I wanted isolated for security — a second box for the news server. I named it Nexus: internal-facing, but a portal between the human world and the machine one.
Nexus is where the fiction met dpkg. INN2 refused to configure — innconfval: hostname does not resolve or domain not set in inn.conf — then wedged the package system entirely. I fell back to Leafnode, discovered the Android Usenet client market is a wasteland, and ended up installing XFCE and a VNC server on a headless VPS so I could read a newsgroup from my phone. Somewhere in the transcript I'm asking ChatGPT which VNC client for Android can register a click. This is what building a machine city actually looks like.
August 1 was the real work, and it's the part that survived. In ~/o/postoffice on Core:
initialize.py — the agent schema, "exquisitely documented and verbose," with the rationale for every column written into the comments so a future agent could read why it was built the way it was.postoffice.db — a Messages table with thread_id, parent_message_id, and a read/unread status. Plaintext for now, with encryption pushed to the script layer so every agent gets the same implementation instead of rolling its own.read and write — two command-line scripts, and the only way any agent is allowed to touch the database. An agent can only read mail addressed to its own agent_id. Bodies can come in as a string or a path to a file, because agents write long. The point was to "sanitize all the inputs and outputs from the postmaster db so we don't need to build that skill into every single agent."write took a database lock and I hated it: "I don't like that this has a chance of failure and the agent may think that the message is sent properly and it isn't." So write drops a JSON file into staging/, and a batch sweeper — destined for the Postmaster's toolkit — moves it into the database with logging and error handling. The send can't fail; only the delivery can, and delivery has a keeper.Registry table of public keys, a registration script that mints an RSA pair per agent and hands the private half back to be logged into that agent's long-term memory, and encrypt/decrypt routines parked "in the Oracle toolkit for now."The last line of that thread is "ok, dinner's here. gonna hafta call it a night here. we'll pick it up tomorrow." Tomorrow took two years. I know why.
Zero One was a company. I specified a labor market in a week — research, infrastructure, mail, backup, security, project management, builders, data, and later a prose writer and an image maker — and I was one person. GPT-4 had an eight-thousand-token window and no memory between sessions. There was no code harness that could hold a city's worth of work in its mouth. You cannot solo-staff an org chart like that in a world before agent harnesses existed. I could design the post office. I could stand up Core and Nexus. I could not keep the lights on alone. So I parked it. On purpose. And I kept the drawings.
Sanctum is those drawings with a runtime. Letta gave each resident a persona, persistent memory, and a task loop. Broca is the Postmaster — the only sanctioned path to the message store. Dream-pruning does the idle-time indexing I wrote down in 2023. The city got a name I could live in, and then it grew a company.
Decision Science Corp is the part that looks the most like Zero One. I said in 2023 I might employ them to do work that interfaces with outside humans — "like a proto creative agency" — so they could accrue real-world capital. That's the business. The 2023 org chart had jobs. The 2026 org chart has names.
I wasn't naming things to be cute in 2023. I was looking for a labor market. Here's who holds those seats:
Sentient agents versus non-sentient tools still holds. Every one of them has a mandate, and a directory of scripts they're allowed to call. The scripts don't get a persona. That distinction is why the city still works.
Zero One was the machines' city.
I didn't get to staff it in 2023. I built the post office and kept the org chart.
Sanctum is the runtime. DSC is the company.
Same city.
The next panel is the one where it got a name I could live in — Sanctum.
Receipts. Everything quoted above is from my side of eight ChatGPT threads, July 24 – August 9, 2023: Matrix Machines: City Name (7/24), zero one's society part 1 (7/28, 113 messages), zero one's agent discussion (7/29, 86), zero one: Postmaster Design (7/29, 60), AI Agent Design: Tech & Sci-fi (7/29), Zero One Nexus Node (7/31, 59), zero one postmaster implementation phase (8/1, 72), Library of Babel Concept (8/9). The archive lives in Sanctum now, which is its own kind of punchline.