holger-server-ui — crate card
Reverse-engineered (from source — verify, don't trust the name)
- One-line pitch: Operator/admin UI for holger over the
HolgerObjectcore API — a transport-agnostic view-model plus an optional egui (facett) presentation. - Does: Two layers.
data(default build, deps only ontraits) drives the coreHolgerObjectAPI (satisfied byLocalHolgerdirect calls orRemoteHolgergRPC) and turns each response into a plain view struct exposingstate_json()— so the UI is headlessly testable with no display/server ("see-what-the-user-sees as data").app(behind theguifeature) is the egui + facett presentation with one blocking core call per action. Alsodemo(gui, real crates.io packages into a dev store + a robot walk) and operator tool panes: #1 holger-ds bench, #2 migrate/suck (agent connectors), #3 warehouse-backed security scan (modgunn), #5 airgap populate. - Key deps:
traits(always); undergui:eframe/egui/facett/facett-helix,server-lib,bench-scenarios[served],agent-lib,world-connector,znippy-rust-repo,modgunn[scan,warehouse],image.holger-airgapalways. Robot tests usenornir-robotui+egui_kittest. - Shape: both — lib (data/app/demo) +
holger-server-uibin (required-features=["gui"]). Package and all four bins were renamed fromholger-ui*→holger-server-ui*on 2026-08-01, so the name says WHICH component the UI drives; the publishedholger-ui0.1.4 on crates.io is a dead end (0 reverse deps, left unyanked). ~5 source files. - Observed role in the workspace: The GUI front door for operators; aggregates the server + agent + bench + airgap + security tools into one pane. Default (non-gui) build is the fast headless test surface.
Fill in (one line each — only the human knows these)
- Primary consumer(s):
- Why it exists (vs the obvious alternative):
- Hard constraint (airgap / no-C-deps / no-FFI / pure-Rust / etc.):
- Release cadence & independence (rides a parent? own repo someday?):
- Status (production / prototype / experimental / stubbed):
- Must-NOT-change invariant:
- Biggest known gap or TODO:
- Anything a newcomer would get wrong about it: