Wheelhouse docs

Development#

This section is for whoever has to build Wheelhouse from source, extend it, or find out why a build broke. It describes the pieces the product is made of and the boundary between them, the four things that get built (the agent, the web UI, the .deb and the ISO), the test suites and what each one covers, what continuous integration runs, how a release is cut and published, and the decisions that were written down rather than argued about twice. Everything here is checkable against the repository, and every claim links to the file it came from.

Where to start#

If you want toRead
Understand the pieces before touching any of themArchitecture
Find a fileThe repository, directory by directory
Get something running on your own machineA development environment
Change the control planeBuilding the agent, then Adding an endpoint
Change the web UIBuilding the web UI, then Adding a page to the web UI
Add an application to the storeAdding an app to the catalogue
Produce an installable artefactBuilding the package, then Building the image
Change what makes the image the product's rather than the base'sThe flavor and the branding hooks
Know what CI will say before you pushThe test suites and What CI does
Ship a versionMaking a release
Know why something is the way it isArchitecture decision records
Know what is expected of a changeWorking agreements

The shape of the thing, in one paragraph#

Wheelhouse OS is a VyOS image with two programs added. wheelhouse-agent is a single static Go binary, run by systemd as root, that drives the router through VyOS' own HTTP API and serves a React single-page application on port 8443. The agent copies no VyOS code and links against none: it posts to /retrieve, /show, /configure, /config-file and /image on https://127.0.0.1 with an API key it mints for itself on first boot — agent/vyos.go, packaging/firstboot.sh. Everything the product ships is built from this one repository by scripts that need Go, Node and the Python standard library, and nothing else.

The three repositories#

The product repository is not the whole picture. AGENTS.md sets the split, and it exists so that a fact is written down once:

RepositoryHolds
wheelhouse (this one)The product: PLAN.md, the agent, the UI, packaging, the image pipeline, the tools, this documentation
wheelhouse-infraThe platform: the development bench, the vyoslab router and its automation, deployment paths
HomelabInfraThe environment: the homelab, including the production OPNsense router whose configuration is the reference workload

Product decisions, feature scope and architecture belong here. Bench, build-host and deployment work belongs in wheelhouse-infra. Facts about the homelab belong in HomelabInfra. Nothing is duplicated across them; a commit that spans two names the sibling commit.

What this section does not cover#

  • Using the product. That is the rest of this wiki.
  • Writing for this documentation site. The generator, the front matter and the Markdown it accepts are on Contributing and the page template.
  • The bench. How the vyoslab development router is built and reached lives in wheelhouse-infra, not here.

See also#

Checked against#

AGENTS.md · README.md · PLAN.md · agent/vyos.go · packaging/firstboot.sh

Updated 2026-09-02 development contributing build