v0.0.9
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, withDEVDASHBOARD_MODE=aspirebaked in, serving on port8080. - In aspire mode the dashboard doesn't scan the host at all: the orchestrator tells it what exists via indexed env vars —
DEVDASHBOARD_APP_COUNTplusDEVDASHBOARD_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_FILEat 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
--modeflag /DEVDASHBOARD_MODEenv var. Unset (the default) keeps today's behavior — the complete scan acrossdapr runprocesses and Docker Compose containers — and now also merges in the env contract when present (contract entries win on app-id collisions).aspirerestricts discovery to the contract alone;daprandcomposeare 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_HOSTSallowlist 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 | shWindows (PowerShell):
iwr -useb https://raw.githubusercontent.com/diagridio/dev-dashboard/main/scripts/install.ps1 | iexWith Go (≥ 1.26):
go install github.com/diagridio/dev-dashboard@v0.0.9Container:
docker pull ghcr.io/diagridio/dev-dashboard:0.0.9Run:
dev-dashboard # serves http://localhost:9090 and opens your browserSingle 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.