swactor/crates/dashboard/README.md

47 lines
2.2 KiB
Markdown
Raw Normal View History

# dashboard
Datastream-only HTTP dashboard for visualizing swactor-derived telemetry in a browser. The dashboard consumes folded datastream records and serves live pages over HTTP/SSE.
## Features
| Feature | Default | Description |
|---------|---------|-------------|
| `distribution` | yes | `/distribution` page with SWIM membership, gossip directory routes, peer auth, and location cache data derived from datastream frames |
| Fleet view | yes | `/vastai` page showing nodes folded by `datastream_source::FleetView` |
## HTTP Dashboard
The dashboard is embedded by an application that owns a datastream sink. The
sink folds delivered frames through `datastream_source::FleetView`, then pushes
the resulting stats, activity lines, and cache-backed plugin JSON into the
dashboard handle.
Pages:
- `http://localhost:9090/` — live overview from the selected datastream node
- `http://localhost:9090/actors` — actor table reconstructed from actor telemetry records
- `http://localhost:9090/plugin/distribution` — SWIM membership, gossip directory routes, peer auth, and cache entries
- `http://localhost:9090/plugin/vastai` — fleet/node view fed by the shared fleet cache
The dashboard model is folded by `datastream_source::FleetView`. Producers
publish telemetry records to datastream channels; the dashboard sink folds those
records into cached JSON, pushes activity messages, and updates the HTTP/SSE
views.
## Public API
Embed the dashboard by constructing `DashboardConfig` and calling
`start_dashboard(config)`. The returned handle owns the HTTP server state and
supports externally pushed stats, activity messages, history access, plugin
registration, landing page overrides, extra routers, and shutdown.
Plugins are the extension boundary. New dashboard surfaces should register a
`DashboardPlugin` or use a cache-backed plugin such as
`fleet_cache_plugin(cache)` / `distribution_cache_plugin(cache)`, then feed it
from datastream-derived JSON caches.
## Pipeline app
`apps/pipeline-parallel-inference` enables the dashboard with `PP_DASHBOARD=1`.
Its orchestrator hosts the HTTP server, spawns the `datastream-sink` actor, and
feeds every dashboard view from `FleetView` updates.