Prerequisites

  • Node 22 or newer and npm
  • uv with Python 3.11, for the Python services
  • The SpacetimeDB CLI 2.10.2 (curl -sSf https://install.spacetimedb.com | sh)
  • Unity 6000.0.66f2 with the Android modules, for the Quest app
  • ffmpeg (brew install ffmpeg), for motion replays and the vitals camera check
  • Git LFS: run git lfs install && git lfs pull after cloning

Ports

The landing site’s next dev also defaults to 3000. Run it with npm run dev -- -p 3100 if SpacetimeDB is up.

Start the stack

1

Database

Or skip this and use the hosted database on Maincloud.
2

Gateway

The first run prints a spacetime call ... add_service_identity command. Run it once to register the gateway.
3

Pre-op and Scalpal

Open http://localhost:8787/scalpal to talk to the coach in a browser.
4

Vitals

Demo mode by default, which uses no Presage quota. See patient vitals for live mode.
5

Body registration (mixed reality only)

6

Dashboard

Create a session, then open Synthetic headset and press Run demo script to fill every panel without a Quest.

Connect the headset

With the Quest plugged in over USB, scripts/quest/configure_session.py sets up the adb reverse routes so the headset can reach the Mac’s services. Open apps/quest in Unity, then open Assets/Scalpal/Quest/Scenes/NativeSession.unity. See Quest app.

Check everything

From the repo root:
Use services, unity, voice, registration or motion to check one part. The gate labels the physical playthrough as unverified, because no script can wear the headset for you.