Fleet Management

Discover, pair, and manage multiple Exaviz boards from a single dashboard

Overview

Fleet management lets you monitor and control multiple Exaviz boards from a single dashboard. Boards on the same network discover each other automatically, and after a secure pairing process, you can view all your boards in one place.

Enabling Fleet Management

Fleet management is opt-in and must be enabled in the management config before pairing or the Fleet view will work. On a freshly deployed board, edit /etc/exaviz/management.json:

{
  "fleet": {
    "enabled": true,
    "board_name": "Top Of Rack"
  }
}

board_name is the friendly name other boards see when they discover this one. Restart the management service to pick up the change:

sudo systemctl restart exaviz-mgmt

Verifying

After restart, the dashboard header shows a Fleet view tab in addition to “N boards”. You can also confirm via the API:

curl -sk https://<board-ip>/api/v1/fleet/peers | jq .enabled
# expected: true

How Discovery Works

Each board announces itself on the local network using mDNS (multicast DNS) on the _exaviz._tcp.local. service type. When you open the fleet view, any boards on the same network segment appear automatically in the discovery list.

Boards announce every 30 seconds. A board that has not been seen for 120 seconds is removed from the discovered list.

Each announcement includes:

  • Board serial number
  • Board type (Cruiser, Interceptor, etc.)
  • Firmware version
  • User-defined board name (if set)

Pairing Boards

Pairing establishes a secure trust relationship between two boards using Ed25519 cryptography. Both boards must confirm the pairing.

Step-by-Step

  1. Open the dashboard on Board A
  2. Switch to Fleet view (toggle in the header bar)
  3. Find Board B in the discovered boards list
  4. Click Pair next to Board B
  5. Both boards display a 6-digit confirmation code
  6. Verify the codes match on both screens (this prevents man-in-the-middle attacks)
  7. On Board A, click Confirm
  8. On Board B, a pairing notification appears. Click Accept

Trust is now mutual. Board A can see Board B’s status, and Board B can see Board A’s status.

Trust Rules

  • Trust is bilateral - each pairing connects exactly two boards
  • Trust is not transitive - if Board A pairs with B and C, Boards B and C do not automatically trust each other
  • For B to see C, B must pair with C directly
  • A full-mesh fleet of N boards requires N*(N-1)/2 pairings (3 pairings for 3 boards, 6 for 4 boards)

This is intentional. Non-transitive trust means compromising one board does not compromise the entire fleet.

Fleet Dashboard

Once boards are paired, the fleet view shows all trusted boards:

Grid View (Default)

Board cards in a 4-across grid. Each card shows:

  • Board name and serial number
  • Hostname, in smaller text under the name (shown once the board has reported its hostname in a health poll; long hostnames are shortened with an ellipsis, and the full hostname is on the expanded card)
  • Board type and firmware version
  • Online/offline status
  • Total PoE power draw
  • Number of active ports
  • CPU temperature and memory usage

Table View

Toggle to a comparative table with columns for serial, name, type, CPU temp, total power, memory, and status. Useful for quickly scanning a large fleet.

Quick Expand

Click a board card to expand it inline, showing a 2x2 grid of its PoE ports with real-time status. Lets you check port details without leaving the fleet view.

An expanded card also shows an identity line with the board’s full hostname (once reported), the IP address this dashboard uses to reach it, and its serial number. The serial identifies the board even if its name or IP changes. The card for the board you are signed in to has no IP entry.

Filter

The Filter box at the top of the fleet view narrows the grid and the table as you type. It matches the board name, serial number, hostname, board type, and the words online or offline. Press / to jump to the box.

Drag-and-Drop Reorder

Drag board cards to arrange them in the order that makes sense for your deployment (e.g., by building, floor, or rack). The order is saved and persists across sessions.

Problematic Boards Float to Top

Boards with active alerts, PoE faults, config drift, or offline status automatically move to the top of the grid. This can be toggled on or off.

Fleet Status Bar

A summary bar at the top of the fleet view shows:

  • Total boards in the fleet
  • Number currently online
  • Total power draw across all boards
  • Total active PoE ports

Fleet-Wide Alerts

Alerts from all boards are aggregated. For example: “3 PoE faults across 2 boards” or “Board offline 5 minutes ago.”

Config Drift

Boards in a fleet should agree on a few security and monitoring settings. Each board compares these settings with every paired board it can reach and shows any difference on the Fleet view.

SettingWhat it controlsFixed from the Fleet view?
tls.hsts_max_age_secondsHow long browsers insist on HTTPSYes, but a value above 0 is refused while the board has the HTTP to HTTPS redirect off
tls.redirect_httpRedirect HTTP to HTTPSNo, needs a restart of the management service
tls.modeSelf-signed, ACME or uploaded certificateNo, each board has its own certificate
metrics.basic_authLogin on the /metrics endpoint turned on or offNo, the password stays on each board
metrics.basic_auth_userThe /metrics login user, when login is on for both boardsNo, change it on that board
metrics.basic_auth_passThe /metrics login password, when login is on for both boards (shown only as set or differs)No, the password stays on each board
fleet.enabledWhether fleet management is turned on for the boardNo, change it on that board

The comparison is always between the board you are signed in to and each peer. There is no fleet master value. Board name, branding, certificate files and network settings are per board and never compared. Passwords are never shown or sent between boards in readable form.

Reading the Panel

The header reads “Config drift: N issue(s) across M peer(s) (K finding(s))”. An issue is one setting; a finding is one setting on one board. “cannot verify N peer(s)” means those boards did not answer; they are listed by serial under “Unreachable peers:”. A board with fleet management turned off cannot answer, so it shows here rather than as drift. “Config drift check failed” means the check itself did not complete. Boards with drift also get a DRIFT badge on their card and in the table view.

Fixing Drift

  1. Click the panel header to expand it.
  2. For each row choose the correct value: This board’s value or Peer’s value. Choosing the peer’s value also updates any other reachable board that had this board’s old value.
  3. Click Fix drift for one row or Fix all for every fixable row.
  4. Check the list of changes (board, setting, from, to) and click Apply.

The check runs again right away and the panel shows what is left. For settings that cannot be fixed from the Fleet view, the row shows why and the steps to change it on that board. Each board whose setting changed records it in Recent Activity. The board you used also records each change it sent to another board, with the result.

Remote Operations

From the fleet view, you can perform operations on any paired board:

ActionDescription
RebootReboot an individual board (with confirmation dialog)
Enable all portsTurn on all PoE ports on a specific board
Disable all portsCut power to all PoE ports on a specific board
Reset all portsPower-cycle all PoE ports
Bulk fleet rebootReboot all boards (staggered timing to avoid power surges)

Removing a Paired Board

To unpair a board:

  1. Open the fleet view
  2. Find the board you want to remove
  3. Click the remove/unpair option
  4. Confirm

The trust relationship is removed from both boards. The board will still appear in the mDNS discovery list but will no longer share status data.

Network Requirements

  • Boards must be on the same network subnet for mDNS discovery
  • Port 5353 (UDP) must be open for mDNS multicast
  • HTTPS must be accessible between boards for status polling
  • Fleet polling occurs every 5 seconds via HTTPS with Ed25519 signature authentication

Last modified October 18, 2026