Skip to content

Web Viewer

Hawk includes a web UI for browsing and analyzing evaluation results, served via CloudFront.

Opening the Viewer

hawk web                  # open current eval set in browser
hawk web EVAL_SET_ID      # open a specific eval set
hawk view-sample UUID     # open a specific sample

Features

The web viewer supports:

  • Browsing eval sets and scan runs — see all submitted evaluations
  • Filtering samples — by score range, completion-time range, and full-text search
  • Comparing results — across eval sets and models
  • Exporting to CSV — download filtered results
  • Shareable URLs — filter state is encoded in query params for easy sharing

Live eval-set status

The Status view gives an at-a-glance, drill-down picture of an entire eval set while it is still running — useful for spotting stuck pods, missing images (ImagePullBackOff), rate-limit storms, and slow sandbox calls.

Open it by clicking the status badge of an in-flight eval set in the jobs list (badges are clickable while a run is active), or navigate to /eval-set/<EVAL_SET_ID>/status. It updates live (polling every few seconds) and shows:

  • Overall status, runner pod health (CPU/memory, sandbox pod/GPU counts), and a segmented progress bar (completed / running / errored / limit / waiting).
  • Per-task progress bars with trouble badges (e.g. image pull failing).
  • Per-sample phase (waiting / init / running / scoring / completed / errored / limit), retries, limit hit, latest score, token usage, and the last event with both relative and UTC time plus how long it took.
  • A "Waiting for Kubernetes" list of samples whose sandbox pod has not been scheduled yet, with the reason (e.g. Unschedulable) and the scheduler message.

If you created the eval set, the view also offers Stop (graceful — score partial work) and Delete (tear down resources) actions; these are owner-only.

Access is scoped: you only see eval sets whose model groups you have access to (same as the rest of the viewer), and only the creator can stop or delete a run.

Live data is read directly from Kubernetes (pod status/metrics) and from inspect_ai's shared sample buffer in S3, so it is available before the eval set has been imported into the warehouse. It is served by GET /monitoring/jobs/{eval_set_id}/eval-set-status.

When viewing a sample transcript, the viewer's search panel lets you search within that transcript's messages and events.

Two modes are available:

  • Grep (always available): searches the warehouse message_pool and event tables directly — no S3 read. Supports literal, regex, and word-boundary matching. Results include anchored references back to matching messages or events.
  • LLM (subject to model access): runs an Inspect Scout LLM scanner against the transcript. You choose the model to search with (a model is required). The LLM call goes through Hawk's middleman proxy, authenticated with your own credentials — if you don't have access to the chosen model you will receive a 403.

Both modes require the same model-group read access as viewing the transcript itself.

Development

To run the viewer locally for development:

cd hawk/www
pnpm install
pnpm dev                  # defaults to staging API server

Using a local API server

VITE_API_BASE_URL=http://localhost:8080 pnpm dev

Using a different API server

VITE_API_BASE_URL=https://your-api-server.example.com pnpm dev