Web UI¶
The MAS Lab web UI is a browser studio for working with manifests, launching
benchmarks, and inspecting run artifacts. It talks to mas-lab-controller
over HTTP — the same controller that backs mas-lab serve.
Use the UI when you prefer visual browsing over the CLI. Paper reproduction and
CI still use mas-lab benchmark run and task reproduce.
Related: Terminal UI (TUI) · Observability · Docker setup
Quick start (Docker — recommended)¶
From the repository root:
cd docker
cp .env.example .env # set OPENAI_API_KEY for live LLM runs
docker compose up --build
| Service | URL | Role |
|---|---|---|
| Web UI | http://localhost:8080 | Manifests, benchmarks, results |
| Controller API | http://localhost:8090 | REST backend (/api/health, /api/registry, …) |
Equivalent from repo root: task start (builds images if needed, starts detached).
What you can do in the UI¶
- Browse and open agent, MAS, and experiment manifests from the mounted workspace
- Validate manifests (same checks as
mas-ctl validate) - Submit benchmark jobs — equivalent to
mas-lab benchmark run experiment.yaml - Inspect recent runs, open
events.jsonl, and view pipeline outputs underresults/ - Edit library objects (datasets, pipelines, experiments) when developing new labs
Workspace and data mounts¶
Docker mounts two host folders into every backend/UI container:
| Container path | Host (default) | Holds |
|---|---|---|
/workspace |
Repository root (.. from docker/) |
labs/, tutorials |
/data |
docker/data/ |
Trace cache, benchmark outputs, run registry |
Configure in docker/.env:
MAS_WORKSPACE_MOUNT=/path/to/your/project
MAS_DATA_MOUNT=/path/to/persistent/data
OPENAI_API_KEY=sk-...
Project config.yaml on the workspace mount (copy from
examples/sample-workspace/config.yaml)
takes precedence over $XDG_CONFIG_HOME/mas/config.yaml. Without a project file, the Docker
image falls back to the baked sample. See user-config.md.
Local development (UI + controller on the host)¶
When hacking on the UI or controller packages:
# Terminal 1 — controller API
task install
mas-lab serve --host 127.0.0.1 --port 8090
# Terminal 2 — Vite dev server
cd ui
yarn install
export VITE_API_BASE_URL=http://localhost:8090
yarn dev
Open http://localhost:5173 (Vite prints the port). The UI requires a running controller — there is no offline schema fallback.
Developer details: ui/README.md in the source tree.
Controller API¶
Headless API only (no browser):
mas-lab serve --host 127.0.0.1 --port 8090
Detached daemon variant: mas-lab control start (default port 9000).
Traces and results¶
Each benchmark run writes traces/events.jsonl under the lab output tree (or
reuses a trace cache entry). In the UI, open a completed run to browse events
and pipeline CSVs/figures.
CLI equivalent:
mas-lab benchmark show last
mas-lab benchmark show last events-trace
See cli/observability.md for trace flags on mas-ctl chat.
When to use CLI vs UI¶
| Task | Prefer |
|---|---|
| First install, scripts, CI | CLI (mas-ctl, mas-lab) |
| Exploring manifests and past runs | Web UI |
| Paper reproduction | CLI (task reproduce) |
| Interactive terminal sessions | TUI |
Next steps¶
- Tutorial 0 — Docker install and API keys
- Tutorial 3 — experiments the UI can launch
- User guide — full install paths