Skip to content

Repository files navigation

VideoBooth

Real-time "superhero twin" booth for KXKM at IMA-Niort 2026 (Niort, 24 September). A visitor stands in front of a fixed camera; a 55" portrait screen shows a generated superhero copying their pose with a short, constant delay. One machine (RTX 4090), one camera (Logitech Brio 4K), a browser in kiosk mode, and a diffusion engine picked by measurement. Non-commercial demo.

Brio 4K ─USB─▶ kiosk Chromium (camera + display, --kiosk, portrait 55")
                  │ websocket / WebRTC                 ▲ MJPEG / WebRTC
                  ▼                                    │
        engine server on the same 4090:  StreamDiffusion (:7860)  or  Scope (:8000)
        depth map of the visitor → 1–2 step diffusion → video, ~10–20 fps, ~0.3–1 s behind
        technician: the engine's web UI from a laptop on the LAN — dials, presets, reset

Status (2026-09-04, end of day 1): machine ready (driver 595 open, Chromium kiosk with autologin), both engines installed and measured — B: 33 fps on the visitor screen, 27 ms flat; A: 7 fps in 12-frame bursts — technician panel live at :7870 (STOP/B/A, presets, live view). Camera (Brio 4K) arrives the week of 7 September; real-people A/B then. Details: ROADMAP.md, numbers: BENCHMARKS.md.

Start here

You are… Read
new on the project docs/GETTING-STARTED.md — access, day-1 checklist, how to work on the box
wondering how it works docs/ARCHITECTURE.md — the whole chain, ports, paths, constraints
running a show or rehearsal docs/OPERATIONS.md — show day, during, after, troubleshooting
changing the look docs/TUNING.md — dials, presets, config keys, the measure-after-every-change rule
installing from scratch INSTALL.md — root steps (Thomas) and user steps, in order
deciding / arguing CLAUDE.md the brief and its rules · ROADMAP.md decisions, deviations, risks · DECISION.md engine choice · BENCHMARKS.md every number

Technician panel

http://<box>:7870 from a laptop or tablet on the LAN (panel/, no login): live preview of the visitor screen, prompt and negative, presets, knobs of the running engine, show mode, engine start/stop and the kiosk target.

Quick commands (on the box, as kxkm, in /ai/VideoBooth)

setup/99_verify.sh                              # is the machine ready? PASS/FAIL list
tools/showmode.sh on|off|status                 # free the GPU for a show / give it back
tmux new -d -s booth-b engines/b-streamdiffusion/run.sh    # Engine B → http://<box>:7860
engines/a-scope/run.sh                          # Engine A → http://<box>:8000 (once installed)
systemctl --user status booth-kiosk             # the visitor screen; tools/cdp.py --screenshot /tmp/k.png
.engines/StreamDiffusion/.venv/bin/python tools/engine_b_probe.py --source lavfi --seconds 60 --label ""   # fps / jitter / latency

Repo map

CLAUDE.md  ROADMAP.md  INSTALL.md  BENCHMARKS.md  DECISION.md  WINDOWS.md   the documents
docs/            ARCHITECTURE · GETTING-STARTED · OPERATIONS · TUNING
setup/           00 audit · 01 driver fix (root) · 02 prereqs (root) · 10 engine B · 20 engine A · 99 verify · env.sh
tools/           showmode · camera_check · engine_b_probe · fps_probe + cdp (DevTools) · bench_browser · LATENCY.md
kiosk/           Chromium kiosk launcher + systemd user unit (portrait, camera auto-granted)
engines/         a-scope/ (notes, run.sh) · b-streamdiffusion/ (config yaml, run.sh, depth engine builder)
presets/         heroes.json — technician presets, safety negatives always on
booth.conf       (gitignored) per-machine overrides of setup/env.sh
.engines/ .hf/ .state/   (gitignored, on the box) upstream checkouts + venvs, model cache, logs + state

License: GPL-3.0. Engines keep their own licenses (Scope CC BY-NC-SA 4.0, StreamDiffusion Apache-2.0).

About

Real-time pose-driven 'superhero twin' video booth: RTX 4090, Scope / StreamDiffusion engines, portrait kiosk display

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages