project README
Browse files
README.md
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
# XROS Shell β a spatial OS for the Meta Quest 3
|
| 2 |
+
|
| 3 |
+
A working prototype of a **spatial operating system shell** combining three
|
| 4 |
+
elements, inspired by the DiOS paper (*An Extended Reality Operating System for
|
| 5 |
+
the Metaverse*, arXiv:2201.03256):
|
| 6 |
+
|
| 7 |
+
1. **Spatial computing** β panels anchored in your real room (passthrough),
|
| 8 |
+
driven by a shared world model rather than per-app state.
|
| 9 |
+
2. **A terminal** β a command line you use *inside* VR, as the primary interface.
|
| 10 |
+
3. **Generative UI** β describe what you want in natural language and the
|
| 11 |
+
system generates a panel (currently a rule-based stub; an LLM can be wired
|
| 12 |
+
in later).
|
| 13 |
+
|
| 14 |
+
## Architecture
|
| 15 |
+
|
| 16 |
+
```
|
| 17 |
+
Quest 3 (Unity) Your computer (Python)
|
| 18 |
+
βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
|
| 19 |
+
β WorldPanelManager ββββspawn/moveββ€ xros_server.py β
|
| 20 |
+
β (spatial panels) β /remove β ββ WorldState β
|
| 21 |
+
β SpatialShellTerminal βββcommandββββββΊβ ββ SpatialShell β
|
| 22 |
+
β (terminal panel) ββββoutputβββββββ (spawn/move/ls/gen)β
|
| 23 |
+
β XrosClient (WebSocket) β β β
|
| 24 |
+
βββββββββββββββββββββββββββ ββββββββββββββββββββββββββββ
|
| 25 |
+
```
|
| 26 |
+
|
| 27 |
+
The backend is the "OS brain": a shared world-state store plus a spatial shell
|
| 28 |
+
(command interpreter). The Quest app is a thin client that renders the world
|
| 29 |
+
and hosts the terminal.
|
| 30 |
+
|
| 31 |
+
## Backend (Python)
|
| 32 |
+
|
| 33 |
+
| File | Role |
|
| 34 |
+
|---|---|
|
| 35 |
+
| `xros_world.py` | World-state store: scene graph + object registry + event bus |
|
| 36 |
+
| `xros_shell.py` | Spatial shell: command interpreter (`spawn`, `move`, `ls`, `gen`, `clear`) |
|
| 37 |
+
| `xros_server.py` | WebSocket server exposing the world-state + shell API |
|
| 38 |
+
| `xros_client.py` | Python client library + demo |
|
| 39 |
+
| `test_xros.py` | End-to-end tests (unit + integration) |
|
| 40 |
+
|
| 41 |
+
Run it:
|
| 42 |
+
|
| 43 |
+
```bash
|
| 44 |
+
pip install -r requirements.txt
|
| 45 |
+
python xros_server.py --host 0.0.0.0 --port 8765 # serve on your LAN
|
| 46 |
+
python test_xros.py # verify it works
|
| 47 |
+
```
|
| 48 |
+
|
| 49 |
+
Shell commands: `help`, `ls`, `spawn <type> [x y z] [--title T] [--color C]`,
|
| 50 |
+
`move <id> x y z`, `rm <id>`, `clear`, `gen <description>`.
|
| 51 |
+
|
| 52 |
+
## Frontend (Unity, Quest 3)
|
| 53 |
+
|
| 54 |
+
| File | Role |
|
| 55 |
+
|---|---|
|
| 56 |
+
| `XrosClient.cs` | WebSocket client (Newtonsoft.Json, no other packages) |
|
| 57 |
+
| `SpatialShellTerminal.cs` | Terminal panel: command input + output log |
|
| 58 |
+
| `WorldPanelManager.cs` | Renders world events as spatial panels |
|
| 59 |
+
| `UNITY_SETUP.md` | Step-by-step Unity + Meta XR SDK setup and build guide |
|
| 60 |
+
|
| 61 |
+
See **UNITY_SETUP.md** for the full assembly instructions (project setup, Meta
|
| 62 |
+
XR SDK, passthrough, hand tracking, and building to the Quest 3).
|
| 63 |
+
|
| 64 |
+
## Roadmap
|
| 65 |
+
|
| 66 |
+
- **Phase 1 (done):** shared world-state service + spatial shell + terminal.
|
| 67 |
+
- **Phase 2:** CV as a system service (shared scene understanding).
|
| 68 |
+
- **Phase 3:** agentic interface layer (AIOS-style scheduling/context).
|
| 69 |
+
- **Phase 4:** spatial developer experience (Code Cubes / structured editing).
|
| 70 |
+
- **Phase 5:** privacy/security at the OS layer (capability-based access).
|