# Diagrid Dapr Dev Dashboard

The Dapr Dev Dashboard is a companion for local Dapr development.
It gives you a live view of everything Dapr running on your machine, plus guided builders for authoring Dapr component files and resiliency policies.

![Applications overview in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-applications-dark.png)

The dashboard is a single binary that runs on your host.
It discovers the apps you start with `dapr run` / `dapr run -f`, Docker Compose, TestContainers or Aspire and reads workflow data directly from your local Dapr state store.

## Prerequisites

- [Dapr](https://docs.dapr.io/getting-started/install-dapr-cli/) installed and initialized with `dapr init`.
- One or more Dapr apps running locally, for example a [Dapr Workflow quickstart](https://github.com/dapr/quickstarts/tree/master/workflows).

## Install the dashboard

Download and install the dashboard via the terminal:

**macOS / Linux**

Installs to `~/.local/bin`:

```bash
curl -sSL https://raw.githubusercontent.com/diagridio/dev-dashboard/main/scripts/install.sh | sh
```

**Windows**

Installs to `%LOCALAPPDATA%\Programs\dev-dashboard`:

```powershell
iwr -useb https://raw.githubusercontent.com/diagridio/dev-dashboard/main/scripts/install.ps1 | iex
```

If the install directory is not on your `PATH`, the script prints the line to add.

Verify the installation:

```bash
diagrid-dev-dashboard --version
```

## Run the dashboard

Start the dashboard with:

```bash
diagrid-dev-dashboard
```

This opens the dashboard at [http://localhost:9090](http://localhost:9090) in your browser automatically.

To start on a custom port, use the `--port` flag:

```bash
diagrid-dev-dashboard --port 8080
```

No further configuration is needed: any app started with `dapr run` / `dapr run -f`, Docker Compose, TestContainers, or Aspire, shows up within one refresh cycle.

## Using the dashboard

Start your Dapr application as you normally would. If you want to inspect workflow state, trigger a workflow instance. The dashboard only shows state that already exists, so an idle store shows an empty list.

### Applications overview

The **Apps** page shows a live table of every Dapr app running on your machine: ID, health, runtime and language, app / HTTP / gRPC ports, PIDs, and age.

![Applications overview in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-applications-dark.png)

### Application detail

Click an app to drill into its detail page for its ports, PIDs, launch command, resource and configuration paths, runtime metadata, enabled features, and the components it loaded. Active actor types and pub/sub subscriptions are also aggregated across apps, each linking back to the owning application.

![Application detail in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-application-detail-dark.png)

### Workflows

The **Workflows** page lists workflow executions across all apps, with status filters and search. Instances are read directly from your local Dapr state store.

![Workflow executions in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-workflow-overview-dark.png)

### Workflow detail

Open a workflow instance to watch its live event history, input, output, custom status, and a continuously ticking wall-clock while it runs. You can terminate or purge instances individually or in bulk, with an explicit force-delete fallback for stuck or orphaned state.

![Workflow execution detail in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-workflow-detail-dark.png)

### Components and configurations

The **Components** page provides read-only YAML viewers for the Dapr components and configurations loaded from `~/.dapr` and your apps' resource paths, enriched with which apps loaded each one. A connections panel lets you add, edit, and disconnect the workflow state stores the dashboard reads from.

![Components in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-components-dark.png)

### Log streaming

The dashboard tails each app's Dapr sidecar and application logs live, with level coloring, keyword highlighting, and a follow toggle.

![Log streaming in the Dapr Dev Dashboard](https://docs.diagrid.io/img/dashboard/dev-dashboard-logs-dark.png)

## Resiliency Builder

The *Resiliency Builder* helps you create Dapr resiliency policies, such as retries, timeouts, and circuit breakers, directly from the dashboard.
Use the Resiliency Builder wizard to configure the policies, hand-edit the result if needed, and copy the generated YAML or download the file to disk.

## Component Builder

The *Component Builder* lets you configure Dapr components visually, without hand-editing YAML.
Use the Component Builder wizard to pick a type from the full Dapr catalog, fill in its metadata fields, choose an authentication profile, then copy the generated YAML or download the file to disk.

## Update the dashboard

On startup the dashboard checks GitHub for a newer release and shows an **Update available** indicator in the UI when one exists.

Update to the latest release:

```bash
diagrid-dev-dashboard update
```

To install a specific version (which can also downgrade or reinstall):

```bash
diagrid-dev-dashboard update 1.2.0
```

The `update` command downloads the release archive for your platform, verifies its checksum, and atomically replaces the running binary. Restart any running dashboard to use the new version.

## Limitations

1. The dashboard reads workflows directly from the following local state stores only:
   - Redis
   - PostgreSQL
   - SQLite
   - MongoDB
2. This dashboard is intended for local development only. It is not designed for Kubernetes, production, or any shared or hosted environment. If you need workflow insights for other environments, use [Catalyst](https://docs.diagrid.io/operate).

## Troubleshooting

- If the dashboard doesn't behave as expected, run it with `--verbose` to print diagnostic logs to stderr:

  ```bash
  diagrid-dev-dashboard --verbose
  ```

- If the **Workflows** page is empty, confirm your app has actually persisted a workflow instance (an idle store shows an empty list). The dashboard auto-detects state stores from `~/.dapr/components` and the resource paths of running apps. If detection is ambiguous, pick a store with the selector on the Workflows page, or point to one explicitly:

  ```bash
  diagrid-dev-dashboard --statestore ~/.dapr/components/statestore.yaml
  ```

- Workflow keys are namespaced. The dashboard defaults to the `default` namespace; for another namespace, pass `--namespace <ns>`.

## Feedback & Issues

We love to hear about your experience using the Dapr Dev Dashboard! Please join our [Diagrid Discord server](https://diagrid.ws/diagrid-discord) and share your feedback.
If you are running into issues or have feature requests please use [GitHub issues](https://github.com/diagridio/dev-dashboard/issues).
