> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vizra.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboard

> Score trends, per-sample drill-downs with judge reasoning, and run comparison — in your browser.

`vizra/evals-ui` renders everything the engine records. Since every run persists, the dashboard needs zero extra instrumentation — install it and your history is already there.

```bash Terminal theme={null}
composer require vizra/evals-ui
```

Visit `/evals`. That's the whole install: the stylesheet ships with the package (no publishing, no build step in your app), and it reads the tables `vizra/evals` already writes. Requires Livewire 3.7+ or 4.x.

## What you get

<CardGroup cols={2}>
  <Card title="Suites overview" icon="table-list">
    Every suite with its latest score, pass rate, trend sparkline, and baseline — the health check at a glance.
  </Card>

  <Card title="Run detail" icon="magnifying-glass-chart">
    Per-row results sorted worst-first with filters and search; expand any row to every sample's response, tool calls, tokens, cost — and each assertion's expected vs actual.
  </Card>

  <Card title="Judge reasoning" icon="gavel">
    Every judge score with its persisted reasoning, one click deep. Usually the fastest route to the prompt fix.
  </Card>

  <Card title="Compare view" icon="code-compare">
    Any run against the baseline (or any other run): score/pass-rate deltas, regressed and improved tables with before → after values.
  </Card>
</CardGroup>

Baselines are managed from the UI too — promote any completed run, or clear one, without touching the CLI.

## Access control

Horizon-style: open in the `local` environment, denied everywhere else until you grant access:

```php app/Providers/AppServiceProvider.php theme={null}
use Illuminate\Support\Facades\Gate;

Gate::define('viewEvalsDashboard', fn ($user) => $user->isAdmin());

// or take full control:
\Vizra\EvalsUi\EvalsUi::auth(fn ($request) => /* ... */);
```

## Triggering runs from the browser

The suite pages include a **Run evaluation** button for [class-based suites](/evals/class-based-evaluations) — it dispatches a queued job (unique per suite, so double-clicks can't start concurrent runs) and shows live progress. A queue worker must be running:

```bash Terminal theme={null}
php artisan queue:work
```

For local tinkering, `EVALS_UI_QUEUE_CONNECTION=sync` runs the job inline in the request — keep that to dry runs or small suites.

## Configuration

```bash Terminal theme={null}
php artisan vendor:publish --tag=evals-ui-config
```

Route path (default `evals`), middleware, queue connection, score-badge thresholds, poll interval, and stale-run detection (runs stuck "running" past a threshold get flagged with a mark-failed action).
