CASE STUDY · THE HOMELAB
Self-hosted infrastructure
One physical server that hosts my whole working environment: isolated virtual machines per project and client, workspaces where coding agents run unattended, and the runners that build and deploy my projects.
1 host16 cores, 62 GB RAM, Ubuntu 22.04 LTS.
35 VMsOne per project or client, started only when needed.
SSH + RDPKey-only SSH on per-VM ports; a full desktop over xrdp when a GUI is needed.
Agents 24/7Archon workspaces and a supervisor run the factory unattended.
Why self-host
Coding agents need room: a real shell, Docker, databases, a browser, and hours of runtime. Giving them my laptop is risky and slow; renting all of it in the cloud gets expensive. A single server split into isolated VMs gives every project — and every agent — its own sandbox, with nothing shared that I didn't decide to share.
The layout
- Hypervisor host: VirtualBox on Ubuntu; each VM gets its own SSH port, its own keys and its own resources.
- Template VM: a clean base image that new project environments are cloned from, so a new project starts the same way every time.
- Harness VM: where Claude Code, Archon and the
sdlc-autopilotsupervisor live, with Docker for the services a task needs. - Project VMs: one per product or client, so code, credentials and data never mix between them.
- Desktop access: xrdp with GNOME for the moments an agent's work has to be checked in a real browser.
How agents run here
- A task brief lands in the supervisor's queue for a repository.
- The Archon
factorystarts it in its own workspace on the harness VM, with throwaway Postgres and Redis containers. - The supervisor answers only routine gates from its policy file, escalates everything else, and writes one ledger line per decision.
- CI jobs can target a self-hosted runner, so builds and deploys stay close to the code.
- Test leftovers older than 24 hours are cleaned up daily.
Rules I keep
- Key-only SSH, separate GitHub identities per account through host aliases.
- Secrets live in the environment of the VM that needs them — never in repositories, never in the bundle.
- Anything an agent does unattended must leave a trace: ledger lines, PRs, run reports.
My laptop is a terminal. The work — and the agents — live on the server.