aspire describe and other CLI commands filter out resources marked hidden in the AppHost (proxies, helper containers, migrations). The default output is correct for normal app inspection. Add --include-hidden when:
Debugging proxies, sidecar/helper containers, or migration jobs.
An expected resource is "missing" from aspire resources / aspire describe.
Triaging connectivity or wiring issues that may involve infrastructure resources.
Tips for Agents
# ✅ Use --format Json for machine parsing (supported: describe, start)
aspire describe --format Json
# ✅ When a resource you expect is missing, retry with --include-hidden
aspire describe --include-hidden --format Json
# ✅ Get endpoints from describe, not guessing ports
ENDPOINT=$(aspire describe apiservice --format Json | jq -r '.endpoints[0].url')
# ✅ Use --apphost <path> when multiple AppHosts exist
aspire describe --apphost ./src/MyApp.AppHost/
Version-Specific Diagnostics
Symptom
13.5.3 guidance
Resource missing from aspire describe
Re-run aspire describe --include-hidden; do not use removed aspire ps --include-hidden.
DevTunnel is healthy but has no public URL on 13.5.0-13.5.2
Upgrade the CLI/SDK to 13.5.3 before changing endpoint configuration; 13.5.3 restores the URL.
Dashboard Graph crashes for a resource such as Azure Blob
Upgrade to 13.5.3; multi-path resource icons are fixed there.
Resolved in 13.3: The standalone-dashboard workaround for #16236 is obsolete — use aspire dashboard run (see below).
Standalone Dashboard (aspire dashboard run)
aspire dashboard run launches the Aspire Dashboard without an AppHost, so any OTLP-emitting application (Aspire or not) can stream telemetry into it.
⚠️ Foreground / blocking.aspire dashboard run does not return until you stop it (Ctrl-C). Agents must treat it as a long-running background process — start it with the bash tool's mode="async", capture the dashboard URL and token from initial output, and leave it running. Do not invoke it as a one-shot synchronous command, and do not wait for it to "finish".
Connect the Aspire CLI to a standalone dashboard
aspire otel logs and aspire otel traces accept --dashboard-url. The simplest form passes the full login URL printed by aspire dashboard run — the CLI normalizes it automatically:
For dashboards configured with API-key authentication (e.g., the standalone container image with a separate API key), pass --api-key alongside the base --dashboard-url:
The container-image standalone dashboard still works for environments where the CLI isn't available.
Browser Logs (Aspire.Hosting.Browsers)
When a frontend has already opted into WithBrowserLogs(), Aspire creates a child resource named
<frontend>-browser-logs. Browser console messages, errors, exceptions, and network diagnostics
are sent to that child resource's console log stream, not to the frontend's OpenTelemetry logs.
Begin with normal aspire describe or aspire resources output to find
<frontend>-browser-logs; aspire ps no longer lists resources. It is a normal child
resource, so retry with aspire describe --include-hidden only if unavailable.
Correlate it to the frontend through its parent relationship and Source property.
Do not use aspire otel logs <frontend> for browser output; it does not return that child
resource's browser diagnostics.
Need
Action
Inspect existing browser diagnostics
Discover <frontend>-browser-logs, start open-tracked-browser, then run aspire logs <frontend>-browser-logs
Confirm the browser resource belongs to a frontend
Check the child resource's parent relationship and Source property
Confirm a frontend has browser logging enabled
Check the AppHost for .WithBrowserLogs() on the resource
Add WithBrowserLogs() to a resource
→ aspireify skill (AppHost authoring) — do not edit the AppHost from this skill
Dashboard UX Features
Agents inspecting a running dashboard should know:
Notification center (bell icon, top-right) — surfaces results of resource commands and lifecycle events. Inline command responses appear here instead of being scraped from the logs panel.
Rebuild command — available on container and project resources; rebuilds the image and restarts the resource without restarting the whole AppHost. Result lands in the notification center.
Structured command results — custom resource commands return ExecuteCommandResult with a Message payload that the dashboard renders inline; HTTP commands set HttpCommandResultMode.Auto | Json | Text | None to control how the response body is shown.
13.5 filtering — filter telemetry by timestamp, use == / != for exact numeric
values, and search console-log text while streams continue updating.
Terminal view — resources configured with experimental WithTerminal() open as
interactive sessions in the dashboard.
No dashboard AI Assistant — it was removed in 13.5. Use aspire agent init and the
AppHost/CLI agent integration instead.
VS Code launch is opt-in — the Aspire extension no longer opens the dashboard
automatically. Use its in-editor dashboard or configure dashboardBrowser /
launch.json.
Authoring custom commands or WithBrowserLogs() calls is AppHost work — route to aspireify. This skill is for observing what those features surface in the dashboard.
Why Aspire CLI Can't Do Remote Diagnostics
The Aspire CLI talks to a running AppHost through a local backchannel socket at ~/.aspire/backchannels/. This is by design — there is no remote backchannel. For deployed apps, route to platform-specific tools (azure-diagnostics, kubectl, docker).
Exception: if a Dashboard is reachable (deployed alongside the app, or running standalone), aspire otel logs and aspire otel traces can query it via --dashboard-url (login URL form) and optional --api-key (see the Standalone Dashboard section above). This does not apply to aspire logs or aspire describe.