Dev HUD & Debug Modes
You don't need to edit URLs. Press ` (backtick / tilde ~).
While your game is focused in a dev or standalone session, the backtick key opens the on-screen Dev HUD — a panel of clickable toggles for every debug and dev mode. Flip a switch instead of hand-typing a query string. The HUD is dev/standalone-only: it never appears in a published production session, so you can't accidentally ship it.
The old URL flags still work as a fallback (and they're what reviewers and automation use inside the launcher). Every flag below has a HUD equivalent — the HUD is just the friendly front end to the same switches.
What the Dev HUD gives you
Open it with ` — the panel starts closed, and the header reads
Dev HUD (~ to close). On your first standalone boot a one-time dismissible
pill appears in the corner that says exactly "press ~ for dev tools" (opening
the HUD, or clicking its ×, dismisses it for good).
The panel has exactly five rows, in this order. Each renders as
[<key>] <label>: <state> — click a row, or press its digit 1–5 while the
panel is open, and use ↑/↓ to move between rows:
| Key | Row label | Kind | What it does |
|---|---|---|---|
| 1 | Input source | reloads | Cycle the pose source camera → clip → keyboard → camera: camera (live), clip (a recorded video), keyboard (arrow keys + Enter drive a synthetic pointer). Develop the whole game with no camera. |
| 2 | Skip camera | reloads | Toggle skipping the camera step; mouse/touch/keyboard drive input. Shows on/off. |
| 3 | Debug overlay | live | Drive the host's existing F8 tracking-view cycle. Shows the current overlay mode. See Debug Overlay. |
| 4 | Performance | live/reloads | The performance overlay (FPS, inference latency, frame drops). Shows on/off. |
| 5 | Console | live/reloads | An on-screen log panel so you can read diagnostics without opening browser devtools. Shows on/off. |
A row marked live (• in the panel) toggles in place; a reloads row
(↻) sets a URL flag and reloads. Performance and Console are live when your
runner injects a live toggle, otherwise they set a flag and reload.
The HUD is discoverable on purpose. If you forget every flag on this page, you can still turn everything on and off by eye. Press ` and read the labels. (There is no row for FTUE/menu skipping — the panel is exactly the five rows above.)
F8 — the debug overlay cycle
F8 cycles the host's tracking-view overlay, in this order:
off -> preview -> preview-skeleton -> full -> off -> …
It works even when keyboard focus is inside your game iframe — the SDK forwards
the keypress to the host for you. preview is the camera crop, preview-skeleton
adds the pose wireframe, full adds perf metrics. The overlay is a host
surface: it works in every session with no game code. Full details, including
the manifest field that sets the starting mode, are in
Debug Overlay.
The kill switch: ?developerMode=0
An explicit ?developerMode=0 on the URL turns the entire dev surface
inert — no Dev HUD, no F8 cycle, no overlay, no debug DOM at all. It always
wins, over every other flag and over any manifest declaration. Use it for
demos, recordings, and kiosk installs where you want a guaranteed-clean screen.
Full URL-flag reference
Every switch, its accepted values, its effect, and the HUD control that does the
same thing. Append flags to the page URL as a query string, e.g.
…/?inputSource=keyboard&skipCamera=1.
| Flag | Values | Effect | HUD equivalent |
|---|---|---|---|
inputSource |
camera | clip | keyboard |
Choose the pose source: live camera, a recorded clip, or keyboard-simulated pointer. Default camera. |
Input source row |
skipCamera |
1 / 0 |
Skip the camera step and play with mouse / touch / keyboard. | Skip camera row |
showDebug |
1 / 0 |
Turn on the debug bootstrap (tracking-lab / debug scaffolding). | — (no HUD row; use the Debug overlay row / F8 for the tracking view) |
performance |
1 / 0 |
Show the performance overlay (FPS, inference latency, frame drops). | Performance row |
console |
1 / 0 |
Show the on-screen console/log panel. | Console row |
autogame |
<game-id> |
Auto-launch a specific game on load, e.g. ?autogame=myslug. Combine with skipCamera=1 for a one-URL boot. |
— (launch shortcut) |
catalog |
staging |
Reviewer-only. Read the staging catalog instead of production. Requires a reviewer session; a normal visitor is ignored and stays on production. | — |
developerMode |
0 |
Kill switch. Force the entire dev surface off; always wins. | — (there is no in-HUD way to disable the HUD) |
| (F8 key) | — | Cycle the debug overlay: off → preview → preview-skeleton → full. |
Debug overlay row |
Boolean flags accept 1/true for on and 0/false for off.
Hosted-runner-only flags
If you boot your game through a self-hosted runner (an opt-in the scaffold does not wire by default — see Vite Config & Build), two extra flags apply to that runner specifically:
| Flag | Values | Effect |
|---|---|---|
camSim |
1 |
Drive tracking from a bundled camera-fixture clip instead of a real webcam — real pose detection, no camera needed. |
calibration |
ceremony (default) | synthetic | game |
Choose how the get-ready calibration is produced: the real ceremony, a contract-shaped synthetic answer (badged), or defer to your game's own request. |
Which mode when
- Building gameplay, no camera handy → Dev HUD → input source: keyboard
(or
?inputSource=keyboard). Fastest loop. - Checking tracking feel → input source: camera or clip, plus F8 to watch the skeleton.
- Chasing a perf problem → Performance overlay on; watch inference latency and frame drops.
- Recording a clean demo →
?developerMode=0. Nothing debug-related renders.
Related pages
- Debug Overlay — the F8 tracking view in depth, and the
coordinate.debugOverlaymanifest field. - Vite Config & Build — how
npm run devworks, and the optionaldev:hostedscript you can add yourself to preview the game inside the host runner.