---
title: Dashboard, saved queries, and filters
description: Capture a repository, filter and rank its open work, open an exact dashboard view, replay past decisions, and keep scoring defaults.
url: "https://issue-graph.dev/docs/dashboard"
docs_index: /llms.txt
lastUpdated: "2026-09-27T00:00:00.000Z"
navTitle: "Dashboard and saved queries"
canonical_url: "https://issue-graph.dev/docs/dashboard"
---

# Dashboard, saved queries, and filters

> For an index of all documentation, see [/llms.txt](/llms.txt).

## Capture a repository

Collect a GitHub graph with `open`, then query the dashboard model it saves:

```bash
issue-graph open vercel-labs/agent-browser --no-open
issue-graph query github:vercel-labs/agent-browser --json --no-open
```

`open` reads GitHub within the crawl budget. In an interactive terminal, it can offer an installed agent for clustering. Add `--agent none` to skip that prompt.

`query` reads the saved model without provider requests or authentication, so it never refreshes the data or fetches missing nodes. If no saved model exists, `query` returns an error. Run `open` first, or import a normalized dashboard model with `--input model.json`. `--input` expects a dashboard model, not the graph JSON that `graph -o graph.json` writes. Leave `--no-save` off the collection command if you want to query its model later.

Run `issue-graph dashboard` to browse the latest saved models with a project selector, or `issue-graph runs` to list them.

## Choose a view

| View    | Use it to                                                      |
| ------- | -------------------------------------------------------------- |
| Explore | Read clusters and inspect an item with its linked context      |
| Impact  | Inspect relationships and affected items in the captured graph |
| Swarm   | Compare items grouped by cluster, state, kind, or all together |
| Rank    | Order open items by discussion Heat and adjust scoring weights |

The compact Filters menu applies across views. It filters by state, item kind, clusters, Heat, and search, plus solution and review filters where the provider supports them. Context items can stay visible when they don't match a filter.

For GitHub, the project selector shows a separately fetched total of open issues and PRs when available. Other providers supply their own count and coverage. In query output, `counts.captured`, `matched`, `visible`, and `ranked` describe the saved graph and the current view. Inspect `coverage` before you interpret them.

## Prioritize with filters

```bash
issue-graph query github:vercel-labs/agent-browser --state open --kind Issue --heat-min 50 --view rank --json --no-open
issue-graph query github:vercel-labs/agent-browser --kind PullRequest --review pending --heat-top 25 --view rank --json --no-open
```

Different filters intersect. Repeated `--cluster` values select the union of those clusters. Take cluster indices from `groups[].index` in a query result, because indices belong to that capture.

Heat combines comments, participants, reactions, inbound references, and age. Use it to decide what to inspect first. It does not measure severity or merge readiness. `--heat-min` is inclusive and can't be combined with `--heat-top`. `--heat-top 10` and `--heat-top 25` compute their threshold from the open captured items of the selected kind in the project, before the other filters apply, and ties can include more than the requested percentage. Heat filters exclude items without an open Heat score.

`--solution with` finds issues that have an observed closing link from an open or merged PR. `--solution without` means the capture didn't observe that link, so a fix may still exist.

## Open the exact result

Every query returns `viewUrl`, `captureId`, `historyId`, the effective `query.weights`, capabilities, coverage, and results. Add `--open` to open the exact view and keep the JSON output:

```bash
issue-graph query github:vercel-labs/agent-browser --state open --kind Issue --heat-min 50 --view rank --json --open
```

`viewUrl` identifies the project, view, filters, weights, and selection, so share it unchanged, including its query string and hash. It's a local file URL, not a hosted page. `opened: true` means the CLI asked the OS to open the URL. It doesn't confirm that the page loaded.

The Next.js dashboard is a static export with embedded data and needs no Next.js server. When you move it, keep the HTML file, the sibling `_next/` directory, and `font-LICENSE.txt` together. Anyone with the export can read the full embedded capture, including items your filters hide.

## Explore and replay a capture

Replace `CAPTURE_ID`, `HISTORY_ID`, and `ITEM_KEY` with values from a query result, and take cluster indices and item keys from that same capture:

```bash
issue-graph query --capture CAPTURE_ID --cluster 0 --cluster 2 --view swarm --group cluster --metric heat --json --no-open
issue-graph query --capture CAPTURE_ID --view explore --select ITEM_KEY --json --no-open
issue-graph query --history HISTORY_ID --json --open
```

`--capture` reuses the full immutable model with the current defaults and only the filters in this command. It doesn't inherit filters from the previous query. `--history` restores the frozen parameters and saved view, even after the defaults or the latest model change, and it rejects scope, input, filter, and weight overrides. To change a historical view, start a new query with its `captureId`.

Explore can select a contextual item outside the filter matches. An Impact selection must be inside its results. `--focus-cluster N` focuses an Explore cluster, while `--cluster N` filters membership. Swarm `--group` and `--metric` require `--view swarm`.

## Keep defaults separate from exploration

Inspect the effective weights before you change them:

```bash
issue-graph config show --provider github --scope vercel-labs/agent-browser --json
issue-graph query github:vercel-labs/agent-browser --weights comments=4,reactions=3 --view rank --json --no-open
```

Query `--weights` overrides and dashboard sliders apply only to that query or page and leave persistent defaults unchanged. Reset weights restores the weights the page opened with. To persist a preference, use `config set`:

```bash
issue-graph config set --weights comments=3,age=1 --json
issue-graph config set --provider github --weights reactions=4 --json
issue-graph config set --provider github --scope vercel-labs/agent-browser --weights reactions=5 --json
```

Precedence runs built-in, global, provider, project, then command. Partial updates keep the weights you don't specify. The five weights are `comments`, `participants`, `reactions`, `inboundRefs`, and `age`, and each accepts a finite value from 0 to 10. The built-in values are 3, 2, 2, 2, and 1 respectively. Before weighting, the age signal is `min(12, daysOpen / 30)`. The total is rounded to one decimal.

## Provider and project scope

A query identifies its model as `provider:scope`. A bare `owner/repo` selects GitHub. You can omit the scope only when exactly one saved model exists. Query doesn't infer its scope from the current checkout.

For another provider's normalized model, use the `provider` and `scope` fields it returns. Pass them separately to `config show` or `config set`, where `--scope` requires `--provider`. A Linear project model can use `linear:WORKSPACE_ID:project:PROJECT_ID`, which keeps projects and workspaces distinct.

Read `capabilities` before you choose filters, views, or metrics. Unsupported choices fail with an error. The shared query surface can read normalized Linear or Jira models, but it doesn't collect live Linear or Jira data.

## Local storage

State lives under `~/.issue-graph/` by default. Set `ISSUE_GRAPH_HOME` to change that root. Weights live in `config.json`, immutable models in `captures/`, and query receipts with their static views in `history/`. Queries write these files locally and never change anything in a provider.

Reloading a saved page doesn't refresh its data. Captures stay until you remove them locally. Read [Permissions and privacy](/docs/security) before you store or share private results, and see [Command reference](/docs/reference) for every query flag.

## Manage saved models

```bash
issue-graph runs list --format json
issue-graph dashboard --no-open -o dashboard.html
issue-graph runs rm owner/repo
```

`runs` lists the latest dashboard model for each repository, and `dashboard` combines those models in one export. `runs rm` removes only the selected model from that list. It leaves graph snapshots, query captures, history, and existing exports in place. Run `open` again to collect a fresh model.

---

For a semantic overview of all documentation, see [/sitemap.md](/sitemap.md)

For an index of all available documentation, see [/llms.txt](/llms.txt)