The web UI — a guided tour¶
This guide walks through every page of the SilentSwarm web app, with a
screenshot and an explanation of what each control does. It reflects the app as
served by the leader (the control plane) at your leader URL — e.g.
http://localhost:3000 for a local Docker run.
Screenshots come from a fixture cluster built by
scripts/screenshot_docs.py: one admin account, a Lab Cluster pool with four machines (three active, one standby), a Qwen2.5‑3B bucket, and a compressed model deployed across two stages. Your own data will differ, and a brand‑new install shows empty states instead. The UI is dark‑themed by default; a light theme is available from the account chip.
The two UIs¶
SilentSwarm has two operational surfaces, both reachable from the sidebar:
- Training console (
/ops/join-v2) — add machines to the swarm, launch and monitor training jobs, and watch the live swarm graph. - Inference page (
/ops/inference) — load a trained model and chat with it, or copy an OpenAI‑compatible API snippet.
Everything else (dashboard, buckets, pools, admin) organizes the data and access around those two.
The sidebar¶
Every signed‑in page shares one left sidebar, and every destination is a top‑level link — nothing is hidden behind a dropdown:
| Group | Links |
|---|---|
| — | Pool switcher (the pill under the logo): scopes the whole UI — training, inference, buckets — to one pool. |
| Workspace | Dashboard, Buckets, Training, Inference. |
| Administration | All pools, Users, Audit log. Visible to admins only. |
| Account | Profile & API tokens, Docs. |
| footer | Serving status, then the account menu (profile, log out). |
The sidebar is rendered by the server, already personalised — the account chip, the active page, the admin links and the pool chip all arrive with the page rather than being filled in by JavaScript afterwards, so a navigation never rebuilds it. The active pool is remembered in a cookie so the next page renders the same chip. Below 1024 px the sidebar slides in over the content from a button in the top‑left; picking a link closes it.
Every page at a glance¶
| Page | Route | Who | Guide |
|---|---|---|---|
| Landing | / |
Everyone | Accounts & sign‑in |
| Landing (German) | /de |
Everyone | Accounts & sign‑in |
| Register | /register |
Everyone | Accounts & sign‑in |
| Log in | /login |
Everyone | Accounts & sign‑in |
| Dashboard | /dashboard |
Signed‑in | Dashboard |
| Training console | /ops/join-v2 |
Signed‑in | Training console |
| Inference | /ops/inference |
Signed‑in | Inference |
| Buckets | /buckets |
Signed‑in | Buckets |
| Bucket detail | /buckets/{id} |
Signed‑in | Buckets |
| Pool detail | /pools/{id} |
Members | Pools |
| Pools (admin) | /admin/pools |
Admin | Pools |
| Users (admin) | /admin/users |
Admin | Administration |
| Audit log (admin) | /admin/audit |
Admin | Administration |
| Profile | /profile |
Signed‑in | Profile |
