You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -112,7 +112,7 @@ complete and tested — provides:
112
112
|**Abstain-capable taxonomy**| Ten incident types plus an explicit *insufficient_evidence* outcome, so the system distinguishes "no incident" from "not enough evidence". |
113
113
|**Measured quality**| A labelled evaluation set with precision / recall / macro-F1 / confusion matrix / abstention rate, and a regression test that fails if macro-F1 drops below a committed floor. |
114
114
|**Documented HTTP API**| A FastAPI service (list / filter / detail / review / stats / CSV export) with auto-generated OpenAPI docs and optional API-key auth on writes. |
115
-
|**Review dashboard**| A Streamlit app (overview, incident explorer, review queue) that consumes the API — reviewers accept, override, or flag classifications. |
115
+
|**Review dashboard**| A React single-page app (overview, incident explorer, review queue) that consumes the API — reviewers accept, override, or flag classifications. |
116
116
|**Metrics & dashboards**| The API exposes Prometheus metrics; Prometheus scrapes them and a provisioned Grafana dashboard visualises incidents, classifications, abstention rate, and collection-run health. |
117
117
|**One-command stack**|`docker compose up` brings up db, API, dashboard, Prometheus, Grafana, and a Caddy reverse proxy (auto-HTTPS in production) on one network. |
118
118
|**Test suite**| Every component is covered by tests that run in under a second. |
@@ -260,21 +260,23 @@ Reads are public. If `AGENTWATCH_API_KEY` is set, writes (review) and CSV export
260
260
require an `X-API-Key` header — so a reviewer can run it locally with zero config,
261
261
while production can lock it down.
262
262
263
-
## The dashboard
263
+
## The web dashboard
264
264
265
-
The Streamlit dashboard consumes the API (it never touches the database directly):
265
+
The dashboard is a **React single-page app** (Vite + TypeScript + Tailwind, charts with
266
+
Recharts) in [`frontend/`](frontend/). It only ever talks to the HTTP API. Run it locally:
266
267
267
268
```bash
268
-
# In one terminal: run the API
269
-
agentwatch serve
270
-
# In another: run the dashboard (install the extra first)
271
-
pip install -e ".[dashboard]"
272
-
AGENTWATCH_API_URL=http://localhost:8000 streamlit run dashboard/app.py
269
+
cd frontend
270
+
npm install
271
+
VITE_API_URL=http://localhost:8000 npm run dev # dev server on http://localhost:5173
0 commit comments