For environment setup and baseline run commands, use RUNBOOK.md.
For presenter-facing scripted walkthrough, use docs/DEMO_CHECKLIST.md.
For admin auth configuration, prefer ADMIN_UI_PASSWORD_HASH_B64 in Docker Compose and keep direct bcrypt hashes single-quoted in .env when ADMIN_UI_PASSWORD_HASH is used.
SentinelID desktop packaging bundles the edge runtime into the Tauri application so production builds do not depend on Poetry or source-tree edge startup.
Bundling creates the following under apps/desktop/resources/edge/:
pyvenv_active/: Python virtual environment with edge dependencies plusuvicorn.run_edge.sh: launcher used by the Tauri runtime in production mode.app/sentinelid_edge/: bundled source fallback forPYTHONPATHstartup safety.
From repo root:
make bundle-edge
make build-desktopValidation:
make smoke-bundling
make smoke-desktopWarning budget triage:
DESKTOP_WARNING_BUDGET=250 make check-desktop-warning-budgetThe parser writes output/ci/desktop_warning_budget.json during make release-check and surfaces the top warning sources when the budget is exceeded.
Demo runtime helpers:
make demo-up
make demo-desktop
make demo-verify
make demo-downDistribution smoke verifies the bundled edge runtime directly (without Poetry):
make smoke-bundlingWhat it validates:
- bundled runner exists and is executable
- bundled
pyvenv_activecontains required runtime packages - edge starts on a dynamic loopback port using bundled runtime
/healthand/api/v1/healthreturn success- protected endpoint rejects unauthenticated access with
401
make dev-desktopstarts Tauri dev mode.- Tauri runs edge from source (
apps/edge) viapython -m uvicorn.
- Tauri resolves
resources/edge/run_edge.sh. - Launcher activates bundled
pyvenv_active(or legacypyvenv) and starts edge. - Desktop assigns a loopback host, runtime port, and bearer token.
- Python 3.11+
- Node.js and Rust toolchain for Tauri
- Edge dependencies resolvable from
apps/edge/pyproject.toml/poetry.lock
rm -rf apps/desktop/resources/edge/pyvenv_active apps/desktop/resources/edge/pyvenv
make bundle-edgeapps/desktop/resources/edge/pyvenv_active/bin/python -m uvicorn --version
make bundle-edgemake clean
make bundle-edge
make build-desktopFor local-only testing, remove quarantine attributes before launching:
xattr -dr com.apple.quarantine apps/desktop/src-tauri/target/release/bundlechmod +x apps/desktop/resources/edge/run_edge.shThe desktop launcher uses a dynamic free port, but direct local tests can still conflict. Re-run the smoke script or set a different EDGE_PORT.
- Recovery guide:
docs/RECOVERY.md - Key management:
docs/KEY_MANAGEMENT.md