Wheelhouse docs

How Wheelhouse works#

Wheelhouse is a web UI and an HTTP API in front of a router whose configuration is a tree, not a database of forms. Everything else in this documentation follows from that. A change is a set or a delete against a path in that tree; changes collect in one working set; one commit applies the whole set at once; the commit becomes a numbered revision you can look at and go back to. This section explains each link in that chain once, so that the manual and the guides can name a concept instead of re-explaining it.

The road a change travels#

The route a configuration change takes: an editor renders set and delete commands, staging holds them as the working set, the Commit Bar commits them as one diff, and the router archives the result as a revision that can be rolled back

Nothing on any page applies itself. An editor renders the exact commands it would run, hands them to the staging area, and stops. The Commit Bar is the only component that calls POST /api/commitui/src/components/CommitBar.tsx, and the rule is written down in docs/ui.md as the first of the four rules every page follows.

That single road is what makes the rest possible. Because a change is a list of commands before it is a commit, it can be shown, edited, copied into a terminal, abandoned, or committed with the router's own rollback timer armed.

The pages in this section#

PageThe idea
The configuration treeNodes, tag nodes and values; why every screen names the subtree it owns.
Every click shows its commandsWhy the UI renders set and delete before it does anything, and how to use that.
Staging: the working setWhere a change waits, why the queue lives on the agent rather than in your tab, and what may enter it.
The Commit BarThe one component that commits, and how it decides a change is dangerous.
Commit-confirmArm a window, confirm it, or the router reboots into the previous configuration.
Revisions and rollbackEvery commit is archived; rolling back loads an archived revision and commits it.
State, intent and driftWhat the kernel is doing, beside what the configuration declares, and every place the two are compared.
Desired stateOne file describes the router; one engine turns the gap into operations.
Apps are configurationAn add-on is a container declared in the config tree, so installing one is a diff you review.
Read plane, write plane, admin planeThree roles, enforced by the agent on every route.
Accounts, sessions and tokensThe three kinds of principal, what proves each one, and what a second factor covers.
The audit logWho changed what, from where — and how that differs from the journal and the commit history.
What the licence gatesReads never need a licence; every mutating route answers 402 without one.
What the agent asks the routerEvery API call forks a shell on the router, and everything about the cache follows from that.
On-router, off-router, fleetThree ways the agent runs, and what changes in each.
Wheelhouse and VyOSWhat comes from the base, what Wheelhouse adds, and where the boundary is drawn.

Why a config model rather than a database of forms#

The router underneath Wheelhouse is VyOS, and its configuration is a single transactional tree. That gives four properties an appliance built around per-page forms cannot offer, because they are properties of the configuration system rather than of the user interface:

  1. A change set exists as an object. It can be listed, printed, reviewed and thrown away before anything happens. A form that writes on save has no such object to show you.
  2. A commit is atomic. Either every command in the set applies, or none does. The agent sends the whole working set as one array to the router's /configure endpoint — agent/staging.go ToConfigurePayload.
  3. The previous configuration is still there. The router archives each commit, so "go back" is loading revision 1, not restoring a backup.
  4. The failure path is a reboot into a known-good configuration, not a hope that the UI can still reach you. That is what commit-confirm buys.

None of those four is Wheelhouse's invention. They are VyOS', and Wheelhouse is built on VyOS — see Wheelhouse and VyOS. What Wheelhouse adds is the staging area, the Commit Bar, the accounts and roles, the audit log, the app catalogue, the installer and the web UI that makes all of it visible.

What this section is not#

It is not a tour of the screens — that is the manual: Network, Security, VPN and accounts and Services, monitoring and system — and it is not a set of instructions. Each page here answers "what is this, why does it exist, what does it cost, and where do I see it", and then points at the page that tells you what to press.

See also#

Checked against#

docs/ui.md · PLAN.md §4 · agent/staging.go · agent/main.go · ui/src/components/CommitBar.tsx

Updated 2026-09-02 concepts model