Skip to content

v0.0.9

Choose a tag to compare

@github-actions github-actions released this 12 Jul 11:38
· 202 commits to main since this release

Diagrid Dev Dashboard

A local dashboard for Dapr developers that offers a live view of everything Dapr running on your machine, plus guided builders for authoring Dapr component and resiliency YAML. This is a big follow-up to v0.0.8 that takes the dashboard beyond your machine: it now ships as a container image and can run inside a .NET Aspire AppHost, discovering your apps from an environment-variable contract instead of scanning the host — the foundation for the upcoming Aspire hosting integration.

What's new

🐳 Run it as a container (.NET Aspire mode)

  • First release of the official container image: ghcr.io/diagridio/dev-dashboard — multi-arch (amd64 + arm64), distroless, with DEVDASHBOARD_MODE=aspire baked in, serving on port 8080.
  • In aspire mode the dashboard doesn't scan the host at all: the orchestrator tells it what exists via indexed env vars — DEVDASHBOARD_APP_COUNT plus DEVDASHBOARD_APP_<i>_ID / _DAPR_HTTP (and optional _NAMESPACE / _LABEL) per app. Health, metadata, and workflow actions all reach each daprd through its injected base URL.
  • Validation is fail-fast and loud: a malformed contract exits at startup naming every offending variable (duplicate app-ids rejected, app count capped), instead of showing a quietly empty dashboard.
  • Workflows light up by mounting a state-store component YAML and pointing DEVDASHBOARD_STATESTORE_FILE at it.
  • Try it by hand:
docker run --rm -p 8080:8080 \
  -e DEVDASHBOARD_APP_COUNT=1 \
  -e DEVDASHBOARD_APP_0_ID=myapp \
  -e DEVDASHBOARD_APP_0_DAPR_HTTP=http://host.docker.internal:3500 \
  ghcr.io/diagridio/dev-dashboard:latest

🧭 A single mode switch

  • New --mode flag / DEVDASHBOARD_MODE env var. Unset (the default) keeps today's behavior — the complete scan across dapr run processes and Docker Compose containers — and now also merges in the env contract when present (contract entries win on app-id collisions). aspire restricts discovery to the contract alone; dapr and compose are reserved for future single-source filtering.

🎛️ Capability-aware UI

  • In aspire mode the features that don't apply in a container — app lifecycle (start/stop/restart), Control Plane, and log tailing — are not just hidden but unregistered on the server, and the UI reads injected capability flags so there are no dead buttons or dead-end links.

🔐 Container-grade request security

  • Serving beyond loopback gets its own guard: mutating requests are checked same-origin (with correct default-port and case handling), and a new DEVDASHBOARD_ALLOWED_HOSTS allowlist defends against DNS-rebinding attacks. The classic loopback protection for host mode is unchanged.

🗂️ Namespaces & labels from the orchestrator

  • Per-app Dapr namespaces from the contract are honored for app-scoped workflow operations (instance details, history, app-filtered lists, force delete).
  • Aspire resource labels now show in the Applications list and app detail header when they differ from the app id.

📦 Release pipeline

  • Every tagged release now publishes the container image in lockstep with the binaries — same version, same commit. Prerelease tags (e.g. v0.1.0-rc.1) publish their own image tag but never move :latest, and CI builds the image on every PR to catch breakage early.

🧹 Housekeeping

  • Datadog RUM telemetry is now tagged with the build version, so sessions can be correlated with releases.
  • IPv6 bind addresses (--bind ::) are handled correctly, and binding beyond loopback without aspire mode now warns that remote clients will be rejected.

Install & run

One-liner (macOS / Linux):

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

Windows (PowerShell):

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

With Go (≥ 1.26):

go install github.com/diagridio/dev-dashboard@v0.0.9

Container:

docker pull ghcr.io/diagridio/dev-dashboard:0.0.9

Run:

dev-dashboard          # serves http://localhost:9090 and opens your browser

Single self-contained binary — the React frontend is embedded via go:embed, so there are no runtime dependencies. Prebuilt archives for macOS and Linux (amd64 + arm64) and Windows (amd64) are attached below, and the multi-arch container image is on GHCR.