Five minutes to run the operator console — first standalone (seed data), then pointed at a live gateway.
pnpm install
pnpm --filter @ragplatform/admin-ui dev
# → http://localhost:3100With no gateway configured, every page renders from local seed data (Corpora and Webhooks show a Demo data badge). Click through the sidebar:
- Dashboard — stats, recent activity, connector health.
- Corpora — table → row opens a detail sheet; "New corpus" dialog.
- Connectors — card grid → detail sheet with sync history; "Add connector" wizard.
- Glossary — two-pane synonym editor.
- Webhooks — create a subscription → one-time signing secret reveal; "Send test" shows the signed headers + delivery attempts.
- Audit Log — filter by action/outcome/principal/text; row → metadata drawer.
- API Keys / Tenants — Preview (backends land in Phase 6).
- Config Viewer — read-only
rag.yamlwith section nav + syntax highlight.
Use the top-bar tenant switcher (acme / globex / initech) to re-scope every page, the theme toggle for dark mode, and the State control to preview a table's loading / empty / error renders.
Start a gateway:
uv run uvicorn rag_gateway.app:app --port 8000Run the console against it:
NEXT_PUBLIC_GATEWAY_URL=http://localhost:8000 pnpm --filter @ragplatform/admin-ui devNow Corpora lists the gateway's real corpora and Webhooks reads/writes
real subscriptions (create persists; "Send test" hits the gateway's /test
endpoint). The other pages remain seed data until their backends land.
pnpm --filter @ragplatform/admin-ui typecheck
pnpm --filter @ragplatform/admin-ui lint
pnpm --filter @ragplatform/admin-ui test
pnpm --filter @ragplatform/admin-ui build- reference/admin-ui.md — full page + config reference.
- architecture/admin-ui.md — design + live-vs-seed + verification.
- ADR-0019 — stack + hybrid decision.