Part of the Rust + Datastar webui rewrite (replaces the FastAPI + React 19/Vite/d3/plotly stack — decision 2026-08-05: full Datastar, server-rendered SVG, no d3/React islands, and the backend is Rust, not FastAPI).
Scope
- New crate (suggest
webui-rs/ at repo root, or a cargo workspace if we expect more Rust) using:
- Serve the app shell: one HTML page, Datastar script inlined/vendored (no CDN dependency, no node_modules, no build step)
- Config parity with
genesis/webui/backend_server.py: ClickHouse URL from the same env var(s), same defaults; /healthz reports whether the run store opened (mirrors the current health field, minus the ClickHouse server dependency)
cargo run serves on the same port the FastAPI backend uses today so docs/muscle memory keep working
Non-goals here
Data endpoints, SSE push, SVG rendering — issues 2–5. This is just the skeleton that compiles, connects, and serves the shell.
Part of the Rust + Datastar webui rewrite (replaces the FastAPI + React 19/Vite/d3/plotly stack — decision 2026-08-05: full Datastar, server-rendered SVG, no d3/React islands, and the backend is Rust, not FastAPI).
Scope
webui-rs/at repo root, or a cargo workspace if we expect more Rust) using:axum+datastar(official SDK, has axum integration: SSE stream wrappers + signals extractor)tursocrate, in-process) per webui-rs 7: Adopt Turso embedded as the local run store (Python writer ↔ Rust reader on one SQLite-format file) #32 — the webui reads the run file directly, no DB server. (Original plan was theclickhousecrate mirroring the FastAPI backend; superseded by webui-rs 7: Adopt Turso embedded as the local run store (Python writer ↔ Rust reader on one SQLite-format file) #32, which demotes ClickHouse to an optional sink.)genesis/webui/backend_server.py: ClickHouse URL from the same env var(s), same defaults;/healthzreports whether the run store opened (mirrors the current health field, minus the ClickHouse server dependency)cargo runserves on the same port the FastAPI backend uses today so docs/muscle memory keep workingNon-goals here
Data endpoints, SSE push, SVG rendering — issues 2–5. This is just the skeleton that compiles, connects, and serves the shell.