An open home game console for the games at VibeCoded.Games, new body-controlled games, and an optional rights-respecting retro arcade.
The target experience is a living-room appliance: turn it on, stand in front of a wide-angle camera, select a game with a controller or remote, and play through body movement. Camera processing is intended to stay on the console by default.
This repository now contains the first reversible desk prototype alongside the research workspace: a Svelte 5 boot-to-launcher experience, Motion hub, cooperative web bridge, skeletal replay, body-control lab, and initial Rust native host. Raspberry Pi 5 8GB plus AI HAT+ 26 TOPS is the selected lower-cost reference candidate, while ordinary x86-64 Linux/PC hardware is the premium reference class. Both remain subject to reproducible room, latency, thermal, storage, and multi-player qualification. The preordered 2026 Steam Machine is an optional compatibility target, not a requirement of the core console.
Prerequisites: Node.js 22 or newer, pnpm 10.30.3 (directly or through Corepack), and Chrome for the end-to-end camera test. Native-host development also uses the exact Rust toolchain declared in rust-toolchain.toml.
pnpm install
pnpm prepare:assets
pnpm prepare:catalog
pnpm prepare:schemas
pnpm devOpen the printed local URL. The boot sequence resolves into the launcher; Motion opens the existing synthetic skeletal replay and camera lab. Select Enable Pose Simulator for deterministic camera-free keyboard/controller fixtures, or Start Camera to run the pinned MediaPipe model locally. Camera pixels are not displayed or written. Export Skeleton Trace is the only diagnostic export in this prototype.
The camera is asked for the low-power 640x480 at 30 FPS mode by default, because browser pose inference on the Raspberry Pi 5 candidate runs on the CPU. Append ?capture=balanced (1280x720 at 30) or ?capture=target (1920x1080 at 60, the camera contract mode) to request a larger one. Every dimension is requested as ideal, and the running status line reports the requested mode alongside the mode the camera actually reported.
To serve a built console instead of the dev server, use pnpm serve. It applies the same cross-origin isolation, CSP, and camera permission policy as the dev server; a plain static file server returns the same bytes without them and silently breaks threaded inference and the camera. pnpm verify:console-headers checks a running server and fails when the boundary is absent.
For a first session on delivered Raspberry Pi hardware, follow the day-one bring-up guide and its scripts/pi/bootstrap.sh.
Useful verification commands:
pnpm typecheck
pnpm test
pnpm build
pnpm test:e2e
pnpm serve
pnpm verify:console-headers
pnpm validate:benchmarks
pnpm validate:manifests
pnpm validate:schemas
pnpm supervise:game catalog/determined.vcg-game.json --dry-run
pnpm native:verify
cargo run -p vcg-host -- doctor
cargo run -p vcg-host -- launcher --dry-run --browser /path/to/chromium --profile-dir /absolute/path/to/profile --url http://127.0.0.1:5173/
cargo run -p vcg-host -- watchdog --dry-run --heartbeat-file /tmp/vcg-game.heartbeat -- /path/to/game
cargo run -p vcg-host -- helpFor an x86-64 Windows compatibility workstation, follow the Windows qualification guide. Its bootstrap script verifies prerequisites and runs the same repository checks without treating Windows or WSL as Linux-console qualification.
The browser Gamepad API and Chrome app-mode supervisor are desk spikes, not proof of the Rust/SDL3 input boundary, compositor-level Home/Back, origin containment, or target-Linux behavior. The Rust host now owns direct child lifecycle, heartbeat timeouts, bounded restart, an explicit resource-fault signal boundary, signed installed-package resolution, strict persistent opaque profile intake, idempotent game/profile launch intent, cancellation, contained RetroArch planning, and a signed native-executable adapter with artifact SHA-256 enforcement and per-profile storage. The native adapter is process-only: actual packages, RetroArch/2048 startup, OS sandboxing, environment/device/network filtering, descendant ownership, window readiness, Linux GPU/OOM detectors, compositor containment, a qualified profile writer/lifecycle, and target-hardware behavior remain unqualified.
- System research and proposed architecture
- Prioritized investigation backlog
- Decision log
- Open-question register
- VibeCoded game compatibility snapshot
- Canonical game manifest v1 contract
- Deny-by-default game permission model
- Canonical launcher catalog policy
- Game trust tiers and admission lifecycle
- Raspberry Pi day-one bring-up guide
- Raspberry Pi 5 and AI HAT feasibility brief
- Hardware purchase ledger
- Quote-date reuse, Raspberry Pi, and premium hardware BOMs
- Low-power x86 mini-PC comparator
- Camera purchase derisk and return-window plan
- 2026 Steam Machine feasibility brief
- Latest autonomous research tranche
- First implementation record
- First living-room prototype success criteria
- Player personas and evidence matrix
- Household active-play safety checklist
- Online and offline service matrix
- Repository security threat model
- Browser document policy and hostile-fixture boundary
- Automatic body-profile matching threat model
- Device-only player-data exclusion verifier
- Console-bound profile-vault qualification
- Device-only profile portrait capture
- Credential-free local profile management
- Player and play-zone calibration rehearsal
- Release compliance and CycloneDX SBOM
- Console-managed game save lifecycle
- Unassigned Progress console UX
- Console family, admin, and developer operating modes
- Console accessibility preferences
- Power and recovery state machine
- Local diagnostics and consented export
- Atomic A/B system-update state
- System-update journal protected-state adapter
- Signed system-image manifest
- Verifiable Pi recovery-image bundle
- Update trust root and delegated roles
- Crash-recoverable accepted update-root store
- Storage layout and capacity boundary
- Motion service and bridge security review
- Motion web bridge protocol and boundary
- Motion local-transport benchmark
- Motion standardized action semantics
- Motion SDK web authoring guide
- Camera-free Motion pose simulator
- Optional Motion capability query
- Player control availability and missing-landmark behavior
- Casual local obstacle leaderboard
- Tracker health and degraded-control contract
- Household motion benchmark protocol
- RTMO x86 adapter and CPU spike
- Appearance-free identity tracker comparison
- Motion smoothing comparison
- Motion rule baselines
- Motion laterality evidence
- Motion confidence-degradation evidence
- RGB versus depth floor-contact campaign
- Rule versus temporal-classifier comparison plan
- Skeleton-trace debugging evidence
- Player session and recovery state machine
- Player-session household-interference campaign
- Controller input prototype contract
- Native child watchdog contract
- Native launcher-host API contract
- Native package launch lifecycle
- Persistent launch-profile registry
- Native package runtime adapter
- Signed installed-package catalog contract
- Signed package generation-store contract
- Package-generation protected-state adapter
- RetroArch integration contract
- Contentless RetroArch start-policy observation
- Windows compatibility workstation
- Windows x86-64 qualification result (2026-07-24)
- Deferred owner questions from autonomous work
- Deferred owner questions from the RetroArch tranche
- Deferred owner questions from the native-host API tranche
- Deferred owner questions from the release-compliance tranche
- Deferred owner questions from the prototype-gates tranche
- Deferred owner questions from the installed-catalog tranche
- Deferred owner questions from the native-launch tranche
- Deferred owner questions from the profile-registry tranche
- Deferred owner questions from the console-mode tranche
- Deferred owner questions from the accessibility tranche
- Deferred owner questions from the local-diagnostics tranche
- Deferred owner questions from the body-profile matching tranche
- Deferred owner questions from the device-only exclusion tranche
- Deferred owner questions from the profile-vault tranche
- Deferred owner questions from the profile-portrait tranche
- Deferred owner questions from the profile-management tranche
- Deferred owner questions from the calibration tranche
- Deferred owner questions from the motion-smoothing tranche
- Deferred owner question from the motion-rule tranche
- Deferred owner question from the motion-laterality tranche
- Deferred owner question from the confidence-degradation tranche
- Deferred owner question from the RGB/depth floor-contact tranche
- Deferred owner question from the rule/temporal-classifier tranche
- Deferred owner question from the skeleton-trace debugging tranche
- Deferred owner questions from the player-session interference tranche
- Deferred owner questions from the quote-date BOM tranche
- Deferred owner questions from the power-recovery tranche
- Deferred owner questions from the recovery-image tranche
- Deferred owner questions from the Unassigned Progress tranche
- Deferred owner questions from the native-runtime tranche
- Deferred owner questions from the package-generation protection tranche
- Deferred owner question from the launcher-catalog tranche
- Deferred owner questions from the package-watchdog tranche
- Deferred owner questions from the system-update tranche
- Deferred owner questions from system-update journal protection
- Deferred owner questions from the update-trust tranche
- Deferred owner questions from the storage-layout tranche
- Source ledger
- Third-party notices
- Minimal, sleek television UI using a freely redistributable OCR-A typeface.
- Back and Home actions remain easy to reach through menus, loading states, and games.
- Supported controllers work automatically, including reconnect and player assignment.
- Consistent branded loading screens distinguish active progress, slow work, failures, and recovery.
- Every experience has a controller or remote escape path independent of body tracking.
wide RGB camera
|
capture, calibration, privacy controls
|
pluggable pose tracker
|
versioned VCG Motion API
|
gesture and action recognizers
|
launcher + web bridge + native/Godot SDK
|
VibeCoded games | body games | optional retro frontend
The first useful milestone is not a finished enclosure. It is a wired living-room prototype that launches a small representative game set and sustains responsive one-player tracking in the real target room. Four-player tracking, appliance packaging, offline bundles, and retro support follow behind measured gates.