+
+From lightsync/audio/engine.py:
+```python
+class MPVEngine:
+ def get_state(self) -> dict[str, Any]:
+ # Returns: {"position": float, "paused": bool, "duration": float|None, "loaded": bool, "file": str|None}
+```
+
+
+WebSocket tick message format:
+```json
+{"type": "tick", "position": 42.1, "paused": false, "duration": 180.5, "loaded": true, "file": "/path/to/song.mp3"}
+```
+
+WebSocket commands accepted:
+```json
+{"type": "play"}
+{"type": "pause"}
+{"type": "seek", "position": 42.0}
+{"type": "load", "path": "/path/to/file.mp3"}
+```
+
+REST endpoints:
+```
+POST /api/audio/load — body: {"path": "..."}
+GET /api/audio/state — returns engine state dict
+```
+
+From lightsync/api/audio.py:
+```python
+router = APIRouter()
+# Already has POST /load and GET /state
+```
+
+
+From lightsync/frontend/index.html:
+- `` — currently shows placeholder text
+- `