Skip to main content

Lab

Things I built for myself that turned out to be worth keeping.

The lab is where the tools get built. None of this was a client brief. Each one started as an irritation, got prototyped over a weekend, and then earned its place by making the day job faster. Everything here is running in anger, not sitting in a demo branch.

Built and running

Design system

A component library that survives rebranding

A hundred and thirty components across atoms, molecules, organisms and forms, all themed from a single set of CSS custom properties. Dark mode and per-tenant white label are the same mechanism, so a new brand is a token file rather than a fork.

Developer tooling

WX, one command surface for the whole workspace

Every repeated operation in the workspace is a typed command instead of a remembered incantation. Builds, audits, image work, database checks, deploys. The same commands are exposed to agents, so a machine and a human drive the repo through one interface.

Infrastructure

A home server that behaves like a datacentre

Proxmox on bare metal running containers for CI, a git forge, local model inference and a handful of services I would rather not rent. It is the cheapest way I have found to keep production instincts sharp without a production incident.

Agent workflow

The knowledge and task loop

Documentation compressed to the point where an agent can load the whole context of a subsystem for the price of a couple of source files. Open tasks live beside the knowledge they depend on, and finished work is swept out so the working set never grows.

Monorepo

One workspace, twenty six apps

Twenty six applications and thirteen libraries in one Nx workspace, versioned and deployed independently, with affected-graph CI so a release does not rebuild the world. Bun for install and test, Next for the apps, Biome as the only linter.

Agent design

Agents that route work instead of guessing

Named agents with narrow briefs, driven by scripts rather than conversation. Deterministic work goes to a command, repeatable fan-out goes to an agent definition, and judgement stays with a person. The interesting part is the routing, not the model.