# Local Software-Only Runbook ## Voraussetzungen - Rust `stable` Toolchain mit `cargo`, `rustc`, `rustfmt` und `clippy` - dieses Repo ist lokal aktuell **kein echter Git-Clone**, sondern nur ein Arbeitsbaum ohne `.git` - keine Hardware ist fuer den software-only Betrieb noetig Beispiel fuer eine user-lokale Rust-Installation: ```bash curl -sSf https://sh.rustup.rs -o /tmp/rustup-init.sh sh /tmp/rustup-init.sh -y --profile minimal --default-toolchain stable . "$HOME/.cargo/env" rustup component add rustfmt clippy ``` ## Start ```bash . "$HOME/.cargo/env" cargo run -p infinity_host_api -- --config config/project.example.toml --bind 127.0.0.1:9001 --runtime-state data/runtime_state.json ``` ## Lokale URLs - Creative Web-UI: `http://127.0.0.1:9001/` - State API: `http://127.0.0.1:9001/api/v1/state` - Preview API: `http://127.0.0.1:9001/api/v1/preview` - Snapshot API: `http://127.0.0.1:9001/api/v1/snapshot` - WebSocket-Stream: `ws://127.0.0.1:9001/api/v1/stream` ## Minimale Smoke-Checks 1. Web-UI laedt unter `http://127.0.0.1:9001/`. 2. `GET /api/v1/state` antwortet mit `api_version: "v1"`. 3. `ws://127.0.0.1:9001/api/v1/stream` verbindet und liefert zuerst `snapshot`, dann `preview`. 4. In der Web-UI oder ueber `POST /api/v1/command` funktionieren diese Basisfluesse: - preset recall - preset save / overwrite - creative snapshot save / recall - blackout ## Runtime-State und Recovery - Runtime-Persistenz liegt standardmaessig unter `data/runtime_state.json`. - Beim Schreiben werden aktiver Scene-State, Runtime-Presets, Runtime-Gruppen, Creative Snapshots und globale Steuerwerte persistiert. - Fehlende Dateien sind okay. - Leere, defekte oder schema-inkompatible Persistenzdateien blockieren den Serverstart nicht mehr. - In diesen Recovery-Faellen startet der Host mit Default-State und erzeugt Warning-/Info-Events im Eventfeed statt abzubrechen.