HOWTO steps 5–6, built and run on Ubuntu 24.04 x86_64: `tauri build --config
deployment/src-tauri/rudder.conf.json` produced Rudder_0.1.0_amd64.deb (8 MB); the app launched, the engine
was ready in 8 s, the window's page connected, and it transcribed speech. Closing the window stopped the
engine and its speech server; so did killing the app.
- deployment/src-tauri/rudder.conf.json: overlay for the Rudder app (name, id, externalBin sidecar, Rudder's
built page as a resource, no config window). tauri.conf.json (the Doxa Maps app) is unchanged.
- src/main.rs: only when that resource is present, start the engine next to the app's executable
(std::process, no shell plugin), on 5293/5294 — fixed, because the page's saved draft is per origin —
falling back to free ports; open the window once it answers; stop it on exit.
- engine: RUDDER_WEB serves the web tree from the engine's own origin, so the window opens
http://127.0.0.1:5293/rudder-voice/rudder-voice/ and /api/rudder is same-origin, exactly as under the dev
server — no plugin change, no rebuild of public/. RUDDER_EXIT_WITH_PARENT stops the engine (and its ~1 GB
speech server) if the app dies. RUDDER_PRIVATE_LABELS shows microphones by kind, not name (screenshots).
- HOWTO: the proven Linux path and what was built; step 7 (first-run model download) is still not built.