The manual#
One page per screen in the web UI, and for the larger screens one page per tab. Each page
says what the screen reads, what each control writes, the exact set and delete
commands an editor stages, and — the part most documentation leaves out — what the screen
does not do.
Sixty-two pages, in three sections that follow the left navigation.

The three sections#
| Section | What is in it |
|---|---|
| Network | Everything that decides where a packet goes and what address a host has: interfaces and their live kernel state, static routes beside the forwarding table, BGP and OSPF, multi-WAN and VRRP, DHCP and DNS. |
| Security, VPN and accounts | What reaches the router and who may change it: the firewall, NAT, the IDS, WireGuard, users, roles, your own account, single sign-on and API tokens. |
| Services, monitoring and system | Everything that watches the router or changes the box rather than a protocol: the Dashboard, telemetry, shaping, the app catalogue, diagnostics, the journal, system settings, boot images, backup, the audit log and the licence. |
The screens, in navigation order#
Twenty-nine entries in eight groups, exactly as ui/src/components/nav.ts declares them.
| Nav group | Screen | Page |
|---|---|---|
| Overview | Dashboard | Dashboard |
| Network | Interfaces | Interfaces |
| Network | Static routes | Static routes |
| Network | BGP / OSPF | BGP / OSPF |
| Network | High availability | High availability |
| Network | QoS | QoS |
| Security | Firewall | Firewall |
| Security | NAT | NAT |
| Security | IDS | IDS |
| VPN | WireGuard | WireGuard |
| VPN | IPsec | not documented — see below |
| VPN | OpenVPN | not documented — see below |
| Services | DHCP | DHCP |
| Services | DNS | DNS |
| Services | Apps | Apps |
| Services | Companions | Companions |
| Monitoring | Sessions | Telemetry |
| Monitoring | Diagnostics | Diagnostics |
| Monitoring | Logs | Logs |
| System | System | System |
| System | Certificates | not documented — see below |
| System | Config tree | The configuration tree |
| System | Reconcile | Desired state |
| System | Fleet | Fleet |
| System | About | About Wheelhouse |
| Administration | Users | Users, and Single sign-on for the section of that page |
| Administration | API tokens | API tokens |
| Administration | Agent settings | Agent settings |
| Administration | Licence | Licence |
Account is not in that list: it sits behind your own name at the foot of the navigation — Account.
Three entries do not always appear. IDS and WireGuard are hidden until their
feature module is installed, which is the plugin model the app catalogue uses. Fleet
is hidden without a licence whose plan carries the fleet feature, because a page whose
whole content is buy the plan that turns this on is an advert in the navigation of every
single-router install.
Four things that hold on every page in this section#
They are repeated on each page rather than assumed, because a reader arrives at one page from a search result rather than reading the section in order.
Nothing on a configuration screen applies itself. Every editor calls stage(...) and
renders the exact commands it will run before it stages them. The Commit Bar is the only
thing in the product that commits — ui/src/lib/staging.tsx,
ui/src/lib/format.ts (renderOp). The accounts pages are
the exception and say so: Users, API tokens and Account change the agent's own state file
and take effect the moment you click. Every page in this section shows that bar in its own
screenshot — NAT is the one to look at first, because it is the
screen with the most rules on it.
Reading never needs a licence; changing anything does. The write plane is wrapped in
writeable(requireLicense(...)) — the operator role and a usable licence. An unlicensed
agent answers 402 on those routes and keeps serving every read about this router, the
audit log and the login screen — What the licence gates.
Live state and configured intent are different things, and the pages never blur them. A panel that shows what the kernel is doing is labelled as such; a panel that shows what the configuration says is labelled as such. Where they disagree, that disagreement is the information — State against intent.
A greyed-out control is a courtesy, not the enforcement. Roles are enforced server-side on every route, and an attempt to use one your role does not reach is recorded in the audit log with your name on it — Roles.
Where to go instead#
- To do a specific job rather than to understand a screen — Task guides. A guide names the screens it uses and links back here.
- For the exact value of a field — Reference, which has every default, bound and endpoint in tables.
- To understand why the product is shaped this way — How Wheelhouse works.
See also#
- The Commit Bar — the bar at the foot of every screenshot on this page.
- Staging — why a change waits.
- First hour on a new router — the screens worth visiting in order, on a box you have just installed.