I set out to build one small thing: a way to detach a work session from my desk, so I could close my laptop, walk away, and keep working from my phone through a secure chat interface. What it became, by accident, was the control plane for my entire home lab, running on a single salvaged ThinkPad.
The method was the point. I don't design big systems up front. I define the smallest version that solves the task, decompose it into components with clean boundaries, and build interfaces between them. That makes each piece extensible, and it means the next problem can usually be solved by adding one more part rather than rebuilding.
The first part was a Telegram bot wired to a running Claude Code session through its channels feature, a relay I called relayd. Almost immediately it forced a security question: with no real way to authenticate a chat user, I had to gate every message at the relay before it reached the model, and split admins from regular users. The moment I drew that line, the thing became multi-tenanted. I invited a few friends to test it, and suddenly several people were holding separate conversations with the same model at once.
A necessary caveatThis is only safe among people I trust. You should never rely on a model as your security boundary. Gate a stochastic system behind a deterministic one.
Next it needed a pulse. I gave the model a scheduler so it could run tasks at set times and even schedule itself, waking up later to finish something. That one addition turned a chat bot into something much closer to an assistant.
Then I made it captain of its own ship: a bare Linux box it fully administers, reachable only over a Tailscale tunnel. Once it could touch the machine and the network, it needed senses, so I added an observability stack. Routing those alerts back through the relay gave it a nervous system: it notices when it's low on memory or disk, investigates, and tells me. It can begin to self-heal.
From there the surface kept widening on its own. A port scan turned up an open port on my TV, so I built a phone remote for it. A Bluetooth thermometer became an "open your windows" alert.
None of this was on a roadmap. I built the parts, each with a clean edge, and the platform emerged from setting them next to each other. That's the whole point: complex systems that work tend to grow from simple systems that work.