Wheelhouse docs

Environment variables#

Every environment variable the agent reads is a default for a flag. Nothing is configured by environment alone: a flag given on the command line wins. Five of them carry a secret, and each has a -file counterpart. A process's environment is readable through /proc by anyone who can read the process, and a systemd unit that sets one is a world-readable file with a credential in it.

What the agent reads#

VariableSets the default forHolds
VYOS_API_KEY--api-keyThe router's own API key. Root-equivalent on that router.
WHEELHOUSE_ADMIN_TOKEN--admin-tokenThe break-glass Bearer token: admin role, no account behind it.
WHEELHOUSE_LICENSE--license-keyA licence key.
WHEELHOUSE_INITIAL_PASSWORD--initial-admin-passwordThe first-run admin password. Read only when the state file has no users.
WHEELHOUSE_OIDC_ISSUER--oidc-issuerThe identity provider's issuer URL. Not a secret, but it is the one that decides whether single sign-on is on at all.
WHEELHOUSE_OIDC_CLIENT_ID--oidc-client-idThe OIDC client id.
WHEELHOUSE_OIDC_SECRET--oidc-client-secretThe OIDC client secret.

Seven rows: six secrets and one identifier. To re-derive the list:

bash
grep -o 'os.Getenv("[A-Z_]*")' agent/main.go | sort -u

What the file forms do instead#

Instead ofUseMissing file behaviour
VYOS_API_KEY--api-key-fileFatal. Exit 2.
WHEELHOUSE_ADMIN_TOKEN--admin-token-fileWarns and continues with no break-glass token.
WHEELHOUSE_LICENSE--license-key-fileWarns and continues unlicensed.
WHEELHOUSE_INITIAL_PASSWORD--initial-admin-password-fileWarns and continues; the agent generates a password.
WHEELHOUSE_OIDC_SECRET--oidc-client-secret-fileWarns and continues; startup then fails validation if an issuer is configured.

A file that exists but is group- or world-readable is always fatal, whichever flag named it:

api-key-file (/config/wheelhouse/api-key) is mode 644; it must not be readable by
group or other (chmod 600)

An empty or whitespace-only file leaves the flag's value alone rather than blanking it.

The build-time variable#

VariableRead byEffect
VITE_WHEELHOUSE_VERSIONThe UI's Vite buildStamps a version string into the bundle. It is the UI's second source: the product block on GET /api/system is the box's own answer and wins over it. There is no hardcoded fallback constant. An unstamped build with no agent block reports unknown.

The agent's own version is compiled in, not read from the environment. The release build sets it with a linker flag:

bash
go build -trimpath -ldflags="-s -w -X main.version=1.2.3" -o wheelhouse-agent .

The same technique overrides the licence public keys compiled into the binary (-X main.licensePublicKeys=<kid>:<base64>); see Licence keys and states.

Variables the other programs read#

These belong to the build and developer scripts. None of them runs on a router.

VariableRead byMeaning
DEBpackaging/iso/build-iso.shRequired. The .deb to bake into the image.
VERSIONbuild-iso.shImage version; default dev.
BUILD_DIRbuild-iso.shWorking directory; default /srv/wheelhouse-build.
VYOS_BRANCHbuild-iso.shvyos-build branch and container tag; default rolling.
VYOS_BUILD_REPObuild-iso.shWhere vyos-build is cloned from; default the upstream GitHub repository.
VYOS_COMMITbuild-iso.shThe pinned vyos-build commit. head follows the branch instead and prints a warning that the result must not be shipped.
VYOS_BUILD_IMAGEbuild-iso.shThe build container; default vyos/vyos-build:$VYOS_BRANCH.
BUILD_BYbuild-iso.shThe --build-by string recorded in the image.
SOURCE_DATE_EPOCHpackaging/build-deb.pyTimestamp stamped into every archive member, for a reproducible .deb.
RELEASE_SIGNING_KEYinstall/sign.shThe GPG key to sign with. No key has been generated; without it, sign refuses rather than inventing one.
GPG_PASSPHRASEsign.shEnables batch signing on a runner.
WHEELHOUSE_PUBKEYsign.shArmoured public key to verify against, instead of the caller's keyring.
REQUIRE_SIGNATUREsign.shSet to 1 to make verify fail when nothing is signed.
API_URL, API_KEY, ADMIN_TOKEN, BIND_ADDR, LOCAL_BINinstall/install.shDefaults for the developer installer's flags.

See also#

Updated 2026-09-02 cli environment secrets