Not a chatbot. The infrastructure that does the doing.
The desktop is the cockpit. The VPS is the brain.
Universal Agent is a self-driving operator system: it watches incoming signals (email, X, YouTube, Hacker News), clusters them into insight briefs, files those into a durable Task Hub, and on a heartbeat dispatches ready work to sub-agents — Atlas for research, Cody for code — which build in isolated workspaces and report back. The interesting problem isn't any single service; it's operating 140+ of them coherently.
The architectural bet that makes that possible: the runtime/cockpit split. Everything continuous — every timer, scheduler, worker, database — lives on a dedicated always-on VPS. The desktop is only where I develop and steer. Nothing operational runs where I sit, which means the machine I'm typing on can reboot without losing a single running task.
// the runtime/cockpit contract, enforced mechanically# desktop: interactive development only
$ claudereal # the cockpit launcher; never runs a ua-* timer
# vps (ua@uaonvps): the single runtime host
ssh ua@uaonvps # every systemd unit, cron, worker lives here
# a desktop PreToolUse hook DENIES systemctl --user enable ua-*
# → can't accidentally run operational work on the cockpit
// structural decisions worth knowing
- the path guaranteeThe desktop and VPS mount each other over SSHFS such that
/home/kjdragan/...resolves to the same file on both machines. So an agent on the VPS reads a desktop file at its normal absolute path — no file-fetcher tools, no sync scripts, no path translation. A whole class of "move this file to the server" agent-workaround simply never needs to exist. - tailnet as the boundaryThe entire operator surface — dashboards, the artifact scratchpad, sub-agent results — is served from the VPS's Tailscale name over auto-HTTPS. Being on the tailnet is the only auth. No login screens on internal tools; no cloud in the path; the same URLs open on my phone, tablet, and desktop. (Same mesh SonosKD rides — it's a portfolio-wide operational default, not a UA feature.)
- LLM-native intelligenceWhen the system needs to detect themes, surface opportunities, or synthesize meaning over a bounded corpus, it asks an LLM rather than building a Pythonic pseudo-reasoning system. Code collects and preserves evidence and gates execution; LLMs synthesize meaning. The division of labor is deliberate: don't build a brittle trend-detector when a strong model with the right context does it better.
- code-verified answersThe repo's own operating contract forbids answering "how does X work?" from memory — any agent working in it must read the actual source and cite symbols before responding. This is the same discipline the case studies you're reading were built under: claim nothing about the system that can't be pointed at in the code.
- root-cause, not band-aidsThe standing problem-solving directive: solve the root cause holistically. Before any fix, ask whether you can expand a capability rather than restrict one (raise a system limit vs. cap the data), and whether you're losing information. Defensive guards are a last-resort backstop, never the primary fix.
- OK... go ahead and ask...Is this AGI ???