Node0
A sovereign, self-hosted infrastructure site in two rooms of a home in northern Utah: built by one person and a set of agents, documented in the open, and the pattern anyone can start from.

Node0 is a real place: two rooms, four racks, a fabric of six switches, nine storage servers, a UPS wall, a set of GPU hosts behind one model gateway, and the agents that help run it. Christoph built it over 2025 and 2026, most of the distance in six weeks of the summer of 2026, out of pocket. It runs the work of Oznog today: development, incubation and pre-production of digital intelligence work that stays private by choice.
It is not a datacenter and does not pretend to be one. It runs on one fibre line and a battery, not two providers and a generator. What it has instead is a datacenter’s discipline: the inventory is the source of truth, every alert names its runbook, and backups are proven by restoring them. These pages are derived from a dated capture of the whole site.
Build it with an agent #
These pages are written to be read by a person and used by their agents. Point an agent at them, or at the repository that holds them as Markdown and YAML, and tell it what you have on the bench and what you need the site to do. It will find where to start on the Seed’s ladder , the decisions that transfer, and the lesson that would otherwise cost you the same time it cost us. Every page names its source and its date, so an agent can tell a rule from an instance. A prompt that works:
Read the Seed and the Seed design, then the as-it-stands pages for the layers I name. I have [the hardware on my bench], I need the site to [the workloads], and my limits are [budget, power, space]. Ask me what is missing, recommend the rung to start on, and cite the page or lesson behind each choice. Keep separate what Node0 actually ran, what the Seed proposes, and what you infer.
The Seed’s status table says which rungs have actually been run; have the agent check it before treating a design as demonstrated practice. Next on the Seed’s roadmap is an agent that helps monitor, manage and maintain the site .
These pages get technical quickly. The detail is for your agent, so ask it what anything means, why you would want it, and what happens if you skip it. If you are wondering whether any of this is worth it for you, start with why run your own, and when not to .
Three doors #
Build a starter Node0
The Seed: what to buy, what to run, and the order to do it in. Each rung says whether it has been run on real hardware.
See how it's built
Node0 as it stands, one page per layer, with the decisions, what each one cost, and what it can grow into.
Learn from what broke
The lessons: what broke, what it cost, what changed, and the check that now exists.
Why it is published #
We want many others to deploy a Node of their own, so we share as much as we can without compromising the security of this one. Everything on these pages is derived from the private site through a checklist. Humans other than Christoph appear by role and agents by name. There are no addresses, credentials, serials or paths, and the finance system is described by shape only. Every page names its source and the checklist version it passed.
For Node0 itself, what is here on purpose is the architecture, the design decisions with their trade-offs, the lessons and the rules we run by. Those are what we believe transfer, and many of the lessons and rules were distilled from the runbooks in the first place. The pages, the figures they draw on, the drawings’ data files and the tools live in one public repository: github.com/oznog-holdings/node0-public .
The Seed goes further. Its repository, github.com/oznog-holdings/node0-seed , holds what the bench ran, for a builder’s agent to repeat it: the configuration exactly as it ran, the scripts, the monitoring rules with their tests, the measurements, the pitfalls and the recovery-pack runbook, with secrets and serials removed and every address outside the Seed replaced. Step-by-step runbooks for each rung come next. Node0’s own runbooks, configuration, monitoring and management scripts, and the agents’ skills will follow the same route out as each piece proves itself, sanitised for privacy and security before it leaves.

What it is, in one paragraph each #
The site. Four racks. Rack 1 holds the power: four UPS at 240 V and their battery packs. Rack 2 is the storage and compute wall: the Ceph cluster, the hypervisors, the storage hub, the Pi clusters. Rack 3 holds the GPU hosts, the agents’ machines, the utility hosts and the ClusterHAT rig. The transfer switches sit in racks 2 and 3, beside what they feed. Rack 0, a small enclosure in the network room, is the edge: two firewalls, the time server, the replica server, the offsite dock.
The people and the agents. Christoph decides. The agents do most of the typing and, within written permissions, most of the operating. Rigger builds. Bosun watches the site from inside the fabric and acts on what it sees. The commit log says who typed what, and one operation is evidenced on the as-it-stands page.
The pattern. Every NixOS host, most of the servers, is one file in one repository, so a dead machine comes back from git; the Macs and the Debian Pis are backed up by script instead. The inventory describes every device, cable and address, and monitoring targets are discovered from it. Notifications leave through a machine that is not the one being watched. A backup destination never holds a backup that came from itself. Those four rules are most of what lets more than one actor operate the site.


Status #
Online 20260630. Production-ready 20260913, which means built, monitored, backed up and documented, a different thing from switched on; most of the runbooks were written between those two dates. Captured 20260920, with the figures re-measured on 20260921. The capture does not change. The next one is taken when the open list on the as-it-stands page is closed, not by editing this one. How it grew , from the hardware that waited in 2024 to today.
Source: node0 as-built v0.1, section 1; the public site plan of 20260920. Sanitized: checklist v0.1, 20260921; voice pass 20260921; the Seed, agent and why-run-your-own paragraphs added 20260928. Capture of 20260920; the private site keeps changing, this page does not. Part of oznog.com/node0.
