Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Aspire provides two complementary sets of certificate APIs:
1. **HTTPS endpoint APIs**: Configure the certificates that resources use for their own HTTPS endpoints (server authentication)
2. **Certificate trust APIs**: Configure which certificates resources trust when making outbound HTTPS connections (client authentication)

Both sets of APIs work together to enable secure HTTPS communication during local development. For example, a Vite frontend might use `WithHttpsDeveloperCertificate` to serve HTTPS traffic, while also using `WithDeveloperCertificateTrust` to trust the dashboard's OTLP endpoint certificate.
Both sets of APIs work together to enable secure HTTPS communication during local development. For example, a Vite frontend might use `WithHttpsDeveloperCertificate` to serve HTTPS traffic, while also using `WithDeveloperCertificateTrust` to trust the dashboard's <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> endpoint certificate.

<Aside type="caution">
Certificate customization only applies at run time. Custom certificates aren't
Expand Down Expand Up @@ -371,7 +371,7 @@ Aspire supports the following certificate trust scopes:

Attempts to append the configured certificates to the default trusted certificates for a given resource. This mode is useful when you want to add trust for additional certificates while maintaining trust for the system's default certificates.

This is the default scope for most resources. For Python resources, only OTEL trust configuration will be applied in this mode.
This is the default scope for most resources. For Python resources, only <abbr title="OpenTelemetry" data-tooltip-placement="top">OTEL</abbr> trust configuration will be applied in this mode.

<Tabs syncKey='aspire-lang'>
<TabItem id='csharp' label='C#'>
Expand Down
4 changes: 2 additions & 2 deletions src/frontend/src/content/docs/app-host/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -116,10 +116,10 @@ By default, the dashboard is automatically started by the AppHost. The dashboard
| ------------------------------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `ASPNETCORE_URLS` | `null` | Dashboard address. Must be `https` unless `ASPIRE_ALLOW_UNSECURED_TRANSPORT` or `DistributedApplicationOptions.AllowUnsecuredTransport` is true. Automatically generated with _launchSettings.json_ to have a random port on localhost. The value in launch settings is set on the `applicationUrls` property. |
| `ASPNETCORE_ENVIRONMENT` | `Production` | Configures the environment the dashboard runs as. For more information, see [Use multiple environments in ASP.NET Core](https://learn.microsoft.com/aspnet/core/fundamentals/environments). |
| `ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL` | `http://localhost:18889` if no gRPC endpoint is configured. | Configures the dashboard OTLP gRPC address. Used by the dashboard to receive telemetry over OTLP. Set on resources as the `OTEL_EXPORTER_OTLP_ENDPOINT` env var. The `OTEL_EXPORTER_OTLP_PROTOCOL` env var is `grpc`. Automatically generated with _launchSettings.json_ to have a random port on localhost. |
| `ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL` | `http://localhost:18889` if no gRPC endpoint is configured. | Configures the dashboard <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> gRPC address. Used by the dashboard to receive telemetry over OTLP. Set on resources as the `OTEL_EXPORTER_OTLP_ENDPOINT` env var. The `OTEL_EXPORTER_OTLP_PROTOCOL` env var is `grpc`. Automatically generated with _launchSettings.json_ to have a random port on localhost. |
| `ASPIRE_DASHBOARD_OTLP_HTTP_ENDPOINT_URL` | `null` | Configures the dashboard OTLP HTTP address. Used by the dashboard to receive telemetry over OTLP. If only `ASPIRE_DASHBOARD_OTLP_HTTP_ENDPOINT_URL` is configured then it is set on resources as the `OTEL_EXPORTER_OTLP_ENDPOINT` env var. The `OTEL_EXPORTER_OTLP_PROTOCOL` env var is `http/protobuf`. |
| `ASPIRE_DASHBOARD_CORS_ALLOWED_ORIGINS` | `null` | Overrides the CORS allowed origins configured in the dashboard. This setting replaces the default behavior of calculating allowed origins based on resource endpoints. |
| `ASPIRE_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS`| `false` | Configures the dashboard to not use authentication and accept anonymous access. Sets frontend, OTLP, MCP, and API auth modes to `Unsecured`. |
| `ASPIRE_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS`| `false` | Configures the dashboard to not use authentication and accept anonymous access. Sets frontend, OTLP, <abbr title="Model Context Protocol" data-tooltip-placement="top">MCP</abbr>, and API auth modes to `Unsecured`. |
| `ASPIRE_DASHBOARD_FRONTEND_BROWSERTOKEN` | Automatically generated 128-bit entropy token. | Configures the frontend browser token. This is the value that must be entered to access the dashboard when the auth mode is BrowserToken. If no browser token is specified then a new token is generated each time the AppHost is launched. |
| `ASPIRE_DASHBOARD_TELEMETRY_OPTOUT` | `false` | Configures the dashboard to never send [usage telemetry](/dashboard/microsoft-collected-dashboard-telemetry/). |
| `ASPIRE_DASHBOARD_AI_DISABLED` | `false` | [GitHub Copilot in the dashboard](/dashboard/copilot/) is available when the AppHost is launched by a supported IDE. When set to `true` Copilot is disabled in the dashboard and no Copilot UI is visible. |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ The following scenarios illustrate how Aspire models parent-child relationships:

In Aspire, configuration, connectivity details, and dependencies between distributed resources are modeled using **structured values**. These values capture relationships explicitly—not just as simple strings—making the application graph **portable, inspectable, and evolvable**.

Aspire represents these relationships through a **heterogeneous Directed Acyclic Graph (DAG)**. This graph tracks not only dependency ordering but also how **structured values** are passed between resources at multiple abstraction levels: configuration, connection, and runtime behavior.
Aspire represents these relationships through a **heterogeneous Directed Acyclic Graph (<abbr title="Directed Acyclic Graph" data-tooltip-placement="top">DAG</abbr>)**. This graph tracks not only dependency ordering but also how **structured values** are passed between resources at multiple abstraction levels: configuration, connection, and runtime behavior.

```csharp title="C# — AppHost.cs"
var builder = DistributedApplication.CreateBuilder(args);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import LearnMore from '@components/LearnMore.astro';

Aspire's AppHost represents a collection of resources, known as the "resource model". This model allows developers to define and manage the various components and services that make up their applications, providing a unified way to interact with these resources throughout the development lifecycle.

The resource model is a **directed acyclic graph (DAG)**, where resources are nodes and dependencies are edges. This structure allows Aspire to manage complex relationships between resources, ensuring that they can be started, stopped, and monitored in a predictable manner.
The resource model is a **directed acyclic graph (<abbr title="Directed Acyclic Graph" data-tooltip-placement="top">DAG</abbr>)**, where resources are nodes and dependencies are edges. This structure allows Aspire to manage complex relationships between resources, ensuring that they can be started, stopped, and monitored in a predictable manner.

## Basic example

Expand Down
4 changes: 2 additions & 2 deletions src/frontend/src/content/docs/dashboard/configuration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { Aside } from '@astrojs/starlight/components';
import OsAwareTabs from '@components/OsAwareTabs.astro';
import LearnMore from '@components/LearnMore.astro';

The dashboard is configured when it starts up. Configuration includes frontend and OpenTelemetry Protocol (OTLP) addresses, the resource service endpoint, authentication, telemetry limits, and more.
The dashboard is configured when it starts up. Configuration includes frontend and OpenTelemetry Protocol (<abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr>) addresses, the resource service endpoint, authentication, telemetry limits, and more.

<Aside type="caution">
The dashboard displays information about resources, including their configuration, console logs and in-depth telemetry.
Expand Down Expand Up @@ -106,7 +106,7 @@ Alternatively, these same values could be configured using a JSON configuration
| `ASPNETCORE_URLS`<br/>Default: `http://localhost:18888` | One or more HTTP endpoints through which the dashboard frontend is served. The frontend endpoint is used to view the dashboard in a browser. When the dashboard is launched by the Aspire AppHost this address is secured with HTTPS. Securing the dashboard with HTTPS is recommended. |
| `ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL`<br/>Default: `http://localhost:18889` | The [OTLP/gRPC](https://opentelemetry.io/docs/specs/otlp/#otlpgrpc) endpoint. This endpoint hosts an OTLP service and receives telemetry using gRPC. When the dashboard is launched by the Aspire AppHost this address is secured with HTTPS. Securing the dashboard with HTTPS is recommended. |
| `ASPIRE_DASHBOARD_OTLP_HTTP_ENDPOINT_URL`<br/>Default: `http://localhost:18890` | The [OTLP/HTTP](https://opentelemetry.io/docs/specs/otlp/#otlphttp) endpoint. This endpoint hosts an OTLP service and receives telemetry using Protobuf over HTTP. When the dashboard is launched by the Aspire AppHost the OTLP/HTTP endpoint isn't configured by default. To configure an OTLP/HTTP endpoint with the AppHost, set an `ASPIRE_DASHBOARD_OTLP_HTTP_ENDPOINT_URL` env var value in _launchSettings.json_. Securing the dashboard with HTTPS is recommended. |
| `ASPIRE_DASHBOARD_MCP_ENDPOINT_URL`<br/>Default: `http://localhost:18891` | The [Aspire MCP](/dashboard/mcp-server/) endpoint. When this value isn't specified then the MCP server is hosted with an `ASPNETCORE_URLS` endpoint. The MCP server can be disabled by configuring `Dashboard:Mcp:Disabled` to `true`. When the dashboard is launched by the Aspire AppHost this address is secured with HTTPS. Securing the dashboard with HTTPS is recommended. |
| `ASPIRE_DASHBOARD_MCP_ENDPOINT_URL`<br/>Default: `http://localhost:18891` | The [Aspire MCP](/dashboard/mcp-server/) endpoint. When this value isn't specified then the <abbr title="Model Context Protocol" data-tooltip-placement="top">MCP</abbr> server is hosted with an `ASPNETCORE_URLS` endpoint. The MCP server can be disabled by configuring `Dashboard:Mcp:Disabled` to `true`. When the dashboard is launched by the Aspire AppHost this address is secured with HTTPS. Securing the dashboard with HTTPS is recommended. |
| `ASPIRE_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS`<br/>Default: `false` | Configures the dashboard to not use authentication and accepts anonymous access. This setting is a shortcut to configuring `Dashboard:Frontend:AuthMode`, `Dashboard:Otlp:AuthMode`, `Dashboard:Mcp:AuthMode` and `Dashboard:Api:AuthMode` to `Unsecured`. |
| `ASPIRE_DASHBOARD_CONFIG_FILE_PATH`<br/>Default: `null` | The path for a JSON configuration file. If the dashboard is being run in a Docker container, then this is the path to the configuration file in a mounted volume. This value is optional. |
| `ASPIRE_DASHBOARD_FILE_CONFIG_DIRECTORY`<br/>Default: `null` | The directory where the dashboard looks for key-per-file configuration. This value is optional. |
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/content/docs/dashboard/copilot.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import structuredLogsExplainError from '@assets/dashboard/copilot/structuredlogs
import traceDetailsExplainTrace from '@assets/dashboard/copilot/tracedetails-explaintrace.png';

<Aside type="tip" title="New in Aspire 13.1">
Starting with Aspire 13.1, you can configure the MCP server automatically using the `aspire agent init` command. See [AI coding agents](/get-started/ai-coding-agents/) for the recommended approach.
Starting with Aspire 13.1, you can configure the <abbr title="Model Context Protocol" data-tooltip-placement="top">MCP</abbr> server automatically using the `aspire agent init` command. See [AI coding agents](/get-started/ai-coding-agents/) for the recommended approach.
</Aside>

Introducing GitHub Copilot in the Aspire dashboard! GitHub Copilot is your new AI debugging assistant.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ This article discusses how to enable browser telemetry in the Aspire dashboard.

Browser telemetry requires the dashboard to enable these features:

- OTLP HTTP endpoint. This endpoint is used by the dashboard to receive telemetry from browser apps.
- <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> HTTP endpoint. This endpoint is used by the dashboard to receive telemetry from browser apps.
- Cross-origin resource sharing (CORS). CORS allows browser apps to make requests to the dashboard.

### OTLP configuration

The Aspire dashboard receives telemetry through OTLP endpoints. [HTTP OTLP endpoints](https://opentelemetry.io/docs/specs/otlp/#otlphttp) and gRPC OTLP endpoints are supported by the dashboard. Browser apps must use HTTP OLTP to send telemetry to the dashboard because browser apps don't support gRPC.
The Aspire dashboard receives telemetry through OTLP endpoints. [HTTP OTLP endpoints](https://opentelemetry.io/docs/specs/otlp/#otlphttp) and gRPC OTLP endpoints are supported by the dashboard. Browser apps must use HTTP OTLP to send telemetry to the dashboard because browser apps don't support gRPC.

To configure the gPRC or HTTP endpoints, specify the following environment variables:

Expand Down Expand Up @@ -304,7 +304,7 @@ The preceding JavaScript code defines an `initializeTelemetry` function that exp
The bundling and minification of the JavaScript code is beyond the scope of this article.
</Aside>

For the complete working example of how to configure the JavaScript OTEL SDK to send telemetry to the dashboard, see the [browser telemetry sample](https://github.com/microsoft/aspire/tree/main/playground/BrowserTelemetry).
For the complete working example of how to configure the JavaScript <abbr title="OpenTelemetry" data-tooltip-placement="top">OTEL</abbr> SDK to send telemetry to the dashboard, see the [browser telemetry sample](https://github.com/microsoft/aspire/tree/main/playground/BrowserTelemetry).

## See also

Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/content/docs/dashboard/explore.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -547,7 +547,7 @@ Select the resources and data types you want to export, then select **Export sel

- **Resources**: JSON files with resource details.
- **Console logs**: Text files with console output.
- **Structured logs**: OTLP JSON files with structured log entries.
- **Structured logs**: <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> JSON files with structured log entries.
- **Traces**: OTLP JSON files with distributed trace spans.
- **Metrics**: OTLP JSON files with metric data points.

Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/content/docs/dashboard/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ import mcpDialogImage from '@assets/dashboard/mcp-server/mcp-dialog.png';

## Built on OpenTelemetry

The Aspire Dashboard is your command center during development. Powered by [OpenTelemetry](https://opentelemetry.io/) — the industry-standard observability framework — it automatically collects traces, metrics, and structured logs from every resource in your AppHost using OTLP (OpenTelemetry Protocol) and surfaces them through a rich, interactive UI. No vendor lock-in, no proprietary agents — just open standards.
The Aspire Dashboard is your command center during development. Powered by [OpenTelemetry](https://opentelemetry.io/) — the industry-standard observability framework — it automatically collects traces, metrics, and structured logs from every resource in your AppHost using <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> (OpenTelemetry Protocol) and surfaces them through a rich, interactive UI. No vendor lock-in, no proprietary agents — just open standards.

<ImageShowcase
title="Resources at your fingertips"
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/content/docs/dashboard/mcp-server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Aside, Steps } from '@astrojs/starlight/components';
import mcpDialogImage from '@assets/dashboard/mcp-server/mcp-dialog.png';

<Aside type="tip" title="New in Aspire 13.1">
Starting with Aspire 13.1, you can configure the MCP server automatically using the `aspire agent init` command. See [AI coding agents](/get-started/ai-coding-agents/) for the recommended approach.
Starting with Aspire 13.1, you can configure the <abbr title="Model Context Protocol" data-tooltip-placement="top">MCP</abbr> server automatically using the `aspire agent init` command. See [AI coding agents](/get-started/ai-coding-agents/) for the recommended approach.
</Aside>

This page describes manual MCP configuration for Aspire versions 9.0 through 13.0, or for situations where you need more control over the configuration.
Expand Down
2 changes: 1 addition & 1 deletion src/frontend/src/content/docs/dashboard/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ For more information, see the [Standalone Aspire dashboard](/dashboard/standalon

## Configuration

The dashboard is configured when it starts up. Configuration includes frontend and OTLP addresses, the resource service endpoint, authentication, telemetry limits and more.
The dashboard is configured when it starts up. Configuration includes frontend and <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> addresses, the resource service endpoint, authentication, telemetry limits and more.

For more information, see [Aspire dashboard configuration](/dashboard/configuration/).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ The dashboard is shipped as a Docker image and can be used without the rest of A
- Browser frontend authenticated with a browser token.
- Incoming telemetry is unsecured. Warnings are displayed in the console and dashboard UI.

The telemetry endpoint accepts incoming OTLP data without authentication. When the endpoint is unsecured, the dashboard is open to receiving telemetry from untrusted apps.
The telemetry endpoint accepts incoming <abbr title="OpenTelemetry Protocol" data-tooltip-placement="top">OTLP</abbr> data without authentication. When the endpoint is unsecured, the dashboard is open to receiving telemetry from untrusted apps.

For information about securing the telemetry when running the dashboard in standalone mode, see [Securing the telemetry endpoint](#secure-telemetry-endpoint).

Expand Down
Loading
Loading