Files
club-3090/tools/serve-cockpit
noonghunna 235ab0bd68 ① Bring dogfood r2: clean labels · titled fields · selected-slug detail card
Three maintainer frictions from live round 2:

- label = topology/engine/model-quant ONLY — the serving-stem tail
  duplicated the path axes and read as a second slug (some registry rows
  carry a subpath in the file field: 'dual/piehsoft-q6k/mtp'). The stem
  (basename only) is appended SOLELY to disambiguate genuine collisions
  (two slugs sharing all three axes, e.g. fp8-mtp vs turbo)
- every input carries a TITLE (bare dropdowns read as anonymous fields):
  field = Vertical(title + widget); titles toggle WITH their widgets so
  the staged reveal stays intact
- NEW selected-slug detail card beside the HF-repo verdict: status · ctx
  · port · drafter/vision · the shipped bar (TPS/8pk + provenance +
  staleness dagger) · caveat note — follows the selection, hides on the
  custom-slug sentinel

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EfF565T9eSLaqGzidyJ1Pm
2026-07-05 17:28:59 +00:00
..

club-3090 serve cockpit (c3)

A lazydocker-style terminal UI for the club-3090 AI inference stack — the front door for discover → serve → operate → validate on a consumer NVIDIA rig. Wraps the same registry, launchers, and scripts you'd run by hand (switch.sh, launch.sh, gpu-mode, health.sh, the verify/bench suite) behind one keyboard-driven screen.

Status: working — read paths (catalog, estate, containers, health) are live; write paths (serve / scene-switch / downloads) are guarded by a confirm + a single-writer reconcile lease.

What's inside

Two modes, shown as a tab bar; the producer mode is hidden in the lean view.

  • 1 Run & Operate (always shown)
    • Catalog — the full registry of model variants; filter, inspect, and serve one ().
    • Orchestration — live GPU cards, the gpu-mode scenes (incl. ai-studio), and supporting services; switch scene / stop.
    • Containers — running/stopped services with engine + port; drill into Logs / Top / Config, start a stopped one.
    • Doctor — "is it serving correctly?" — health.sh live + verify / verify-full reads, basic/full reports, and the power-cap sweep.
  • 2 Bring & Validate (producer lane — hidden in lean view)
    • The add-a-model pipeline: ① Bring (fit-check an HF repo) → ② Serve (generate a compose + serve untested) → … → ⑤ Promote.

Launch shows both modes by default; c3 --lean (or [C] in-app) gives the consumer view (Run & Operate only).

How to run

The cockpit depends on an in-repo sibling package, club3090-tui-core (tools/tui-core/), which is not on PyPI — install both from the checkout.

With uv (recommended — one command; the local path is wired in pyproject.toml):

uv pip install -e tools/serve-cockpit
c3

With plain pip (install the core first, then the cockpit):

pip install -e tools/tui-core
pip install -e tools/serve-cockpit
c3

Either way the launch is c3 (or python -m club3090_cockpit). The app finds the repo root from its own location; override with C3_REPO_ROOT=/path/to/club-3090 if you installed it elsewhere.

First run — set your Model Dir + HF token: press S to open Settings, set your Model Dir (where weights download to) and your HuggingFace token (needed for gated / private repos), then Ctrl+S to save (HF_HOME is auto-derived under the model dir). Then hit r to browse the catalog.

Keeping current: the cockpit moves fast — after a git pull, re-run the install (uv pip install -e tools/serve-cockpit) to pick up new deps (e.g. PyYAML) and UI changes.

Keybindings

Key Action
1 / 2 Run & Operate · Bring & Validate
↑ ↓ ← → move within / between the tab bar and content
primary action for the focused row (serve / start / download / confirm)
k stop a service / cancel a download
f force-start (experimental — skips the fit gate)
r refresh the catalog (re-reads the registry)
S settings — set Model Dir + HF token (Ctrl+S saves)
Y copy the focused context to the clipboard
. toggle the left rail (full-width content)
C toggle lean view (hide / restore the Bring & Validate mode)
? help · q quit

Running tests

Fully headless — no TTY, GPU, Docker, or script calls (a conftest blocks any real spawn).

uv pip install -e "tools/serve-cockpit[dev]"   # or: pip install pytest pytest-asyncio
cd tools/serve-cockpit && pytest