# Internal web UI — local development (#426) Read-only MVP skeleton for the MCP Control Plane operator console. Gitea, MCP capability gates, and `skills/llm-project-workflow/` remain the source of truth; this UI only provides route stubs and layout. ## Prerequisites - Python 3.11+ with project dependencies installed (`pip install -r requirements.txt`) - No secrets in repo, config, or client bundle ## Start the server From the repository root (or an issue worktree): ```bash ./scripts/run-webui ``` Or directly: ```bash python3 -m webui ``` Optional environment variables: | Variable | Default | Purpose | |----------|---------|---------| | `WEBUI_HOST` | `127.0.0.1` | Bind address (keep local for MVP) | | `WEBUI_PORT` | `8765` | Listen port | ## Routes (MVP) | Path | Description | |------|-------------| | `/` | Home / operator overview | | `/health` | JSON liveness (`status`, `service`, `mode`, `timestamp`) | | `/projects` | Stub — registry (#427) | | `/prompts` | Stub — prompt library (#428) | | `/runtime` | Stub — MCP runtime health (#430) | | `/audit` | Stub — report audit paste (#431) | | `/worktrees` | Stub — hygiene dashboard (#432) | | `/leases` | Stub — lease visibility (#433) | All routes are GET-only. POST/PUT/PATCH/DELETE return `405` with `read-only-mvp`. ## Tests ```bash pytest tests/test_webui_skeleton.py -q ```