Skip to content

Topology

flui topology reads the same map as the dashboard’s Topology page and tells the same story in the terminal: which clusters you have, which apps run on each, on which servers their replicas run, who calls whom, and what needs attention right now. You see only the clusters and apps you are allowed to read.

flui topology

In a terminal it opens a navigator. The first screen is the fleet: every cluster with its provider and region, servers, apps, problems and status, then a Needs attention list and the apps whose replicas run on more than one cluster. Open a cluster to see its apps grouped by project, with replicas, status and requests per second, the apps Flui runs for itself folded into one Flui platform entry, and the cluster’s servers. Open an app to see its routes from the Internet, who calls it, what it talks to and the servers its replicas run on. Open a server to see its role, type, memory and CPU in use and what runs on it.

KeyEffect
↑ ↓Move between rows.
EnterOpen the row under the cursor.
Esc, Backspace, ←Go back one level.
/Find a cluster, app or server by name.
oOpen the row under the cursor in the dashboard Topology, or the current screen when no row is selected.
q, Ctrl+CQuit.

The navigator stays live: when an app scales, changes status or moves, the screen redraws in place and the cursor stays on the row it was on. The marker at the top right says ● live; ○ connecting and ○ reconnecting mean the screen shows the last map read while the live connection is being made or restored.

When the output is not a terminal, or with --no-interactive, the command prints the fleet and exits:

$ flui topology --no-interactive
Fleet
3 clusters · 5 servers · 11 apps · 13 replicas · 12 platform apps
Clusters
CLUSTER WHERE SERVERS APPS PROBLEMS STATUS
production hetzner · fsn1 3 8 1 Healthy
staging scaleway · fr-par 1 3 — Healthy
flui-control hetzner · nbg1 1 0 — Healthy
Needs attention
● Worker production Restarted 3 times in the last hour · OOMKilled
Spread across clusters
Storefront production · staging
API production · staging
Postgres production · staging

flui topology cluster <name>

One cluster, printed: its apps by project, the Flui platform, and its servers. The header counts the apps the way the groups below list them, and says what the cluster’s Flui firewall lets in: Public for the ports anyone can reach, Limited for the ports open only to some address ranges.

$ flui topology cluster production
Fleet › production
production hetzner · fsn1 · workload Healthy
3 servers · 8 apps in 2 projects · 1 problem
Reached over the Flui network
Public: :80 HTTP, :443 HTTPS
Limited: :22 SSH (1 range)
Shop
APP TYPE REPLICAS STATUS REQ/S EXPOSURE
API Web app 2 Running — internal
Storefront Web app 2 Running 16 public
Worker Business app 1 Warning — cluster
Restarted 3 times in the last hour · OOMKilled
Postgres Database 1 Running — cluster

When everything fits in one line the firewall reads Public: :443 HTTPS · Limited: :22 SSH (1 range); a long list ends with +N more instead of a cut word.

flui topology app <name>

One app, printed. When the same name is on several clusters the command lists them and asks you to choose with --cluster:

$ flui topology app storefront --cluster production
Fleet › production › Storefront
Storefront Running production · public · Web app
Replicas 3 · manual Traffic in 14 req/s
Memory 448 MB, limit 896 MB CPU 150m, limit 300m
Stack Shop Project Shop
Reachable from the Internet
https://shop.example.com → :3000 14 req/s 0% errors
Talks to
API production :8080
Runs on
production-2 ×2 worker memory 52% · cpu 26%
production-3 ×1 worker memory 62% · cpu 17%

flui topology server <name>

One server, printed, with the apps running on it and how many of each app’s replicas it holds.

Open in the dashboard

--open opens what the command shows in the dashboard Topology, at the same place: the fleet, the cluster, the Flui platform of a cluster, the app with its neighbours, or the server in the infrastructure view. The command prints the address it opens:

$ flui topology cluster production --open
Opening https://dashboard.example.com/topology?level=cluster&cluster=<cluster-id>
CommandOpens
flui topology --open/topology
flui topology cluster <name> --open/topology?level=cluster&cluster=<cluster-id>
flui topology app <name> --open/topology?level=app&cluster=<cluster-id>&app=<app-id>&focus=app:<app-id>
flui topology server <name> --open/topology?view=infrastructure&focus=server:<server-id>

The page opens once, when the command starts, also with --watch. flui topology --open prints the fleet instead of starting the navigator. When the output is not a terminal, or no browser opens, the command prints the address so you can open it yourself. In the navigator the o key does the same for the row under the cursor.

The dashboard address comes from your Flui instance. An older instance does not send it: the command says so, and --dashboard-url <url> gives the address by hand. The flag also replaces the address the instance sends.

Flags

Names and ids are both accepted, in any letter case.

FlagEffect
--watchStay open and redraw on every change, with the last few changes listed under the view. Works on every form. Ctrl+C stops it.
--systemList the apps Flui runs for itself one by one instead of as one Flui platform entry.
--jsonPrint the matching part of the topology as JSON: the whole fleet, or the cluster, app or server with what it touches. Platform apps are included only with --system.
--cluster <name>On app and server: the cluster to look in when the name is on several.
--no-interactiveOn flui topology: print the fleet instead of opening the navigator.
--openAlso open this view in the dashboard Topology. Not with --json.
--dashboard-url <url>The dashboard address to link to, instead of the one the instance sends.
--api-url <url>Talk to this API instead of the one in the active profile.
--profile <name>Read the credential from this profile.

NO_COLOR turns colour off.

Agents connected over MCP read the same map with the topology_get tool, with the same focus on a cluster, an app or a server.