Wheelhouse docs

The interface panel#

Clicking a row on Interfaces opens a side panel over the table. It has three read-only blocks — live state, counters and the commands you are about to stage — and one editor. The panel edits nothing directly: the two footer buttons stage operations and close, and the Commit Bar applies them. Pressing Esc closes the panel and drops whatever was typed into it; nothing is remembered between openings.

Every path below starts with the row's own base, which is the three words interfaces <type> <name> — the type column of the table is the second word.

Live state#

Read from the interface's own kernel block, refreshed with the page's four-second poll.

FieldMeaning
StateUP, DOWN or UNKNOWN, as the kernel reports it
Flagsthe flag list in angle brackets on the interface's first line, for example BROADCAST,MULTICAST,UP,LOWER_UP
MTUthe MTU in force now, which is not necessarily the configured one
Qdiscthe queueing discipline attached to the interface
MACfrom link/ether; blank for interfaces that have no Ethernet address
Addressesevery inet and inet6 address the kernel holds, link-local included

The addresses here differ from the table's Addresses column in one way: the table filters fe80… out, this list does not.

Counters#

Six numbers, all cumulative since the interface came up, from the two counter tables the kernel prints at the end of the block.

FieldWhat a rising number means
RX bytes / TX bytestraffic is flowing
RX packets / TX packetsas above, per packet
RX errors / droppedthe receive side is unhappy: cabling, duplex mismatch, or a full queue
TX errors / droppedthe transmit side is unhappy: usually a saturated link or a shaper doing its job

Non-zero drops on a shaped interface are expected — dropping is how a shaper signals congestion. Non-zero errors on an unshaped Ethernet port are worth investigating at the cable.

The editor#

Add address#

One address per staging round, entered as CIDR or as one of two literal words.

set interfaces ethernet eth1 address 203.0.113.2/24
set interfaces ethernet eth1 address dhcp
set interfaces ethernet eth1 address dhcpv6

A VyOS interface can hold several addresses at once, and set … address adds rather than replaces. To change an address you add the new one and mark the old one for removal, both in the same staging round. What counts as a valid value is on Addressing.

Remove address#

Below the field, every address the configuration declares appears as a small button. Clicking one marks it: it goes red and struck through, and a delete operation is added to the pending list. Clicking again unmarks it. Addresses the kernel holds but the configuration does not declare — an address from a DHCP lease, a link-local address — are not offered here, because deleting them from the configuration would be a command about something the configuration never said.

delete interfaces ethernet eth1 address 203.0.113.2/24

Set description#

Free text. It becomes the Description column on the table, the subtitle of this panel, and the label beside an uplink on the Uplinks tab.

set interfaces ethernet eth1 description 'ISP A'

A value containing a space is quoted when the command is rendered, and quoted the same way when the agent sends it — both renderOp in the UI and cliWord in the agent wrap it in single quotes with embedded quotes escaped, so what the preview shows is what the router runs. An unquoted description ISP A would be three arguments and the commit would fail — ui/src/lib/format.ts, agent/staging.go.

MTU#

The field is pre-filled with nothing and shows the current MTU as its placeholder, with the hint: 1500 is Ethernet, 1492 behind PPPoE, up to 9000 for jumbo frames. An operation is staged only if the number differs from the MTU the kernel currently reports.

set interfaces ethernet eth1 mtu 1492

Administratively disabled#

A checkbox, pre-set from the interface's live state — it is ticked when the kernel reports the link DOWN or carries the DOWN flag. Ticking it stages set … disable; unticking a box that was ticked stages delete … disable.

set interfaces ethernet eth1 disable
delete interfaces ethernet eth1 disable

An interface with disable set has its link taken down. Every address on it stops answering, every route through it is withdrawn, and any DHCP pool or VRRP group bound to it stops working. On the interface carrying your session it ends the session.

Commands#

The last block in the panel renders the pending operations, in order, exactly as they will be sent — with a copy button when JavaScript is available. Before anything is typed it reads # nothing staged yet. This block is the contract: what it shows is what POST /api/stage receives and what the commit runs.

Stage N changes sends the pending list to POST /api/stage and closes the panel on success. The count in the label is the number of operations, not the number of fields you touched — removing two addresses and setting a description is three.

Delete interface stages one operation and closes:

delete interfaces ethernet eth1

That removes the whole node: addresses, description, MTU, VLAN children, DHCP client options, everything under it. It does not remove references to the interface from elsewhere in the configuration. A firewall rule, a NAT rule, a DHCP pool, a VRRP group or a load-balancing member still naming the interface will fail the commit or, worse, survive it pointing at nothing. Check the config tree for the name before you commit a delete.

Both buttons are gated by role#

The panel's buttons are rendered for everyone and disabled with a reason for a principal that may not write. The agent enforces the same rule on POST /api/stage, which requires the operator role and a usable licence, so the disabled button is a courtesy and never the security boundary — agent/main.go, agent/license.go.

See also#


Checked against ui/src/pages/Interfaces.tsx (InterfaceDetailPanel), agent/parse.go (parseInterfaceDetail), ui/src/lib/format.ts, agent/staging.go, agent/main.go.

Updated 2026-09-02 manual network interfaces