Wheelhouse docs

Tools#

Five programs live outside the agent. Two of them ship on the router; three are laboratory and build tooling that never leave a workstation or a runner. All five are Python 3 standard library or POSIX shell — the project has no build dependencies and CI will not grow a toolchain.

ToolShips on the routerFor
opnsense-import.pyyes, as /usr/bin/wheelhouse-opnsense-importTurning an OPNsense config.xml into router commands plus a report, and checking a live router against it afterwards.
wheelhouse-seed.pynoBuilding an unattended-install seed image or directory.
install.shnoThe laboratory installer: put an agent on a host that can reach a router's API.
sign.shnoBuilding and verifying a manifest of a binary and its UI assets, and signing checksums.
check-images.pynoChecking, and pinning, the catalogue's container images.

Two more programs ship on the router but belong to the installer rather than to this list: wheelhouse-install and wheelhouse-autoinstall. They are documented under Answer-file keys and Where the installer looks for a seed.

Two helpers ship under /usr/lib/wheelhouse/ and are called by those two, never by hand: seed-to-answers.py (Seed cloud-config keys) and install-driver.py, which drives the base installer through a pseudo-terminal and stops rather than guessing at an unknown prompt.

Which one you want#

If you areUse
Migrating from OPNsenseopnsense-import.py, then wheelhouse-seed.py
Installing a machine with nobody at the keyboardwheelhouse-seed.py
Running the agent against a router from another boxinstall.sh
Checking what you downloadedsign.sh
Auditing what the app catalogue would pullcheck-images.py

See also#

Checked against#

tools/opnsense-import.py, tools/wheelhouse-seed.py, install/install.sh, install/sign.sh, scripts/check-images.py, packaging/build-deb.py, packaging/install-driver.py, packaging/seed-to-answers.py.

Updated 2026-09-02 tools