← Oleh Shevtsov

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-autopilot supervisor 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

  1. A task brief lands in the supervisor's queue for a repository.
  2. The Archon factory starts it in its own workspace on the harness VM, with throwaway Postgres and Redis containers.
  3. The supervisor answers only routine gates from its policy file, escalates everything else, and writes one ledger line per decision.
  4. CI jobs can target a self-hosted runner, so builds and deploys stay close to the code.
  5. 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.