Lab control plane: Mac Studio · Spark · EVO+4080
Open WebUI + status board on Mac Studio for Spark and EVO+4080. Bundled with the Flash-Next 4080 spill quality×cost result (1083s vs 5321s).
Bottom line. Inference stays on Spark / EVO+4080. Dashboards live on Mac Studio (M2 Max): Open WebUI for chat, a status board for health/model/latency. The public site gets architecture + the Flash-Next+4080 race — no LAN proxy from Cloudflare.
Layout
| Role | Box | Address |
|---|---|---|
| Control · Open WebUI | Mac Studio | http://127.0.0.1:3080 (LAN only) |
| Control · Status | Mac Studio | http://127.0.0.1:3090 (LAN only) |
| Infer · Flash-Next NVFP4 | DGX Spark | 192.168.1.200:30000 · SGLang |
| Infer · Flash-Next + 4080 spill | EVO-X3 | 192.168.1.50:8080 · Vulkan1+0 -ts 56,8 |
| Public benches | Cloudflare Pages | tech.dubuworld.com |
We do not load Flash-Next (~88G) or Spark’s GLM EXL3 pack on Studio’s 96GB. Studio is the cockpit.
1 · Open WebUI
Docker Compose on Studio, two OpenAI-compatible backends:
- Spark
/v1→qwen38-flash-next - EVO
/v1→ Flash-Next ROCmFP4 GGUF (4080 spill)
cd lab-control
docker compose up -d
# → http://127.0.0.1:3080
2 · Status board
Polls both /v1/models every 15s. Shows UP/DOWN, latency, model id, plus a frozen quality×cost snapshot.
./lab-control/serve-status.sh
# → http://127.0.0.1:3090
3 · Flash-Next + RTX 4080 spill
Same Playwright render_ok protocol. Full GIF/HTML: 4080 spill post.
| Spark | EVO + 4080 | |
|---|---|---|
| wall_sum | 1083s | 5321s |
| stages | 3/3 | 2/3 (angry 12 fail) |
| arch3d first pass | 357s | 267s |
| decode | ~37 tok/s | ~21–26 tok/s |
Read: 4080 spill makes Flash-Next runnable on EVO. Under the quality gate Spark is ~5× cheaper; angry eats most of EVO’s wall.
Why dashboards only on Studio?
- Public edge cannot reach private LAN.
- One cockpit for chat, status, and harness control.
- Weights stay on Spark UMA / EVO GTT+4080.
Code: testbench/dgx/lab-control/ · JSON: pipeline-flashnext-spark-vs-4080-v2/