Skip to content
Docs Try Aspire

What's new in Aspire 13.2

Aspire 13.2 continues the polyglot journey with TypeScript AppHost support, introduces detached mode for running applications in the background, adds powerful new CLI commands for environment validation and process management, and delivers significant dashboard improvements for managing telemetry. This release focuses on developer productivity across all supported languages and improved operational visibility.

This release introduces:

  • TypeScript AppHost support: Write your AppHost in TypeScript with the new polyglot TypeScript SDK.
  • Detached mode: Run your Aspire applications in the background with aspire run --detach and manage them with aspire stop.
  • New CLI commands: aspire ps to list running AppHosts, aspire doctor for environment validation, and aspire logs for accessing resource logs.
  • Dashboard telemetry management: New dialog to manage telemetry and console log settings with export capabilities.
  • Environment variable exports: Export environment variables as .env files directly from the dashboard.
  • Resource JSON export: Export individual or all resource configurations as JSON from the dashboard.
  • OTLP/JSON support: Dashboard now accepts telemetry in OTLP/JSON format alongside protobuf.
  • New integrations: Azure Data Lake Storage, MongoDB Entity Framework Core, and embedding support for Azure AI.
  • Bun support for Vite: New WithBun() method for Vite applications.
  • Improved resource graph: Adaptive force-directed positioning for better visualization of complex applications.

Requirements:

If you have feedback, questions, or want to contribute to Aspire, collaborate with us on GitHub or join us on our Discord to chat with the team and other community members.

The easiest way to upgrade to Aspire 13.2 is using the aspire update command:

  1. Update your Aspire project using the aspire update command:

    Aspire CLI — Update all Aspire packages
    aspire update
  2. Update the Aspire CLI itself:

    Aspire CLI — Update the CLI
    aspire update --self

Aspire 13.2 introduces the ability to run your applications in the background, freeing up your terminal for other work.

Use the new --detach flag to run your Aspire application in the background:

Aspire CLI — Run in detached mode
aspire run --detach

When running in detached mode, the dashboard URL is displayed and the CLI returns immediately, allowing you to continue using your terminal.

The new aspire stop command terminates running AppHost instances:

Aspire CLI — Stop running applications
aspire stop

The stop command uses socket-first discovery for optimal performance and can target specific AppHosts when multiple are running.

Command reference: aspire run and aspire stop.

The new aspire ps command displays all running Aspire AppHost instances:

Aspire CLI — List running AppHosts
aspire ps

This command provides visibility into which applications are currently active on your machine, including their process IDs and dashboard URLs.

🩺 Environment validation with aspire doctor

Section titled “🩺 Environment validation with aspire doctor”

The new aspire doctor command validates your development environment and identifies potential issues:

Aspire CLI — Validate environment
aspire doctor

The command performs comprehensive checks including:

  • Docker/Podman version verification: Ensures your container runtime meets minimum requirements.
  • Development certificate validation: Detects and warns about multiple HTTPS development certificates.
  • Deprecated workload detection: Checks for the deprecated ‘aspire’ workload and recommends migration.
  • Container runtime availability: Validates that Docker or Podman is properly configured.
Example output
✓ .NET SDK: 10.0.102
✓ Docker: 27.5.0
✓ Container runtime: Available
⚠ Multiple HTTPS development certificates detected
Run 'dotnet dev-certs https --clean' to remove duplicates

The aspire doctor command is also exposed as an MCP tool, enabling AI coding agents to diagnose environment issues.

The new aspire logs command retrieves logs from running resources:

Aspire CLI — View resource logs
aspire logs <resource-name>

This command provides a convenient way to access container and project logs without navigating to the dashboard.

The new aspire resources command lists all resources in a running AppHost:

Aspire CLI — List resources
aspire resources

Aspire CLI now exports telemetry data for commands, helping the team understand usage patterns and improve the developer experience. Telemetry is opt-out and respects standard .NET telemetry environment variables.

Aspire 13.2 extends polyglot support with the ability to write your AppHost in TypeScript. This enables JavaScript and TypeScript developers to define their distributed applications using familiar syntax and tooling.

TypeScript — AppHost example
import { AppHost } from '@aspire/apphost';
const builder = new AppHost();
const redis = builder.addRedis('cache');
const api = builder.addProject('api', '../Api/Api.csproj')
.withReference(redis);
builder.addNpmApp('frontend', '../frontend')
.withReference(api)
.withExternalHttpEndpoints();
await builder.run();

The TypeScript SDK provides:

  • Full type definitions for all Aspire resources and APIs.
  • Integration with popular Node.js package managers (npm, yarn, pnpm, bun).
  • Seamless interoperability with .NET projects and containers.
  • Support for all Aspire annotations and configuration options.

Learn more about polyglot AppHost support.

A new dialog provides centralized control over telemetry and console log settings. Access it from the settings menu to:

  • Configure log retention and filtering.
  • Export telemetry data in various formats.
  • Manage console log preferences per resource.

Export environment variables as .env files directly from the dashboard. This feature is particularly useful for:

  • Sharing configuration with team members.
  • Debugging integration issues locally.
  • Migrating to containerized deployments.

The dashboard now includes an Export JSON option for individual resources and an Export All button for the complete resource configuration. This enables:

  • Documenting your application architecture.
  • Comparing configurations across environments.
  • Programmatic analysis of resource definitions.

The dashboard now accepts OpenTelemetry Protocol data in JSON format alongside the existing protobuf format. This improves compatibility with:

  • Browser-based telemetry exporters.
  • Custom instrumentation in JavaScript applications.
  • Debug scenarios where human-readable telemetry is preferred.
  • Persist collapsed state: Resource collapsed/expanded state is now persisted across page reloads.
  • Improved graph layout: Adaptive force-directed positioning provides cleaner visualization of complex dependency graphs.
  • Secret visibility toggle: New toggle button for secret visibility in interaction dialogs.
  • Copy button improvements: Copy button now appears even when values are hidden.
  • Token masking: Query string values in URLs are now masked in the UI.
  • Dashboard icon: New icon displayed in the browser tab.

Add Bun as a package manager for Vite applications with the new WithBun() method:

C# — Vite with Bun
var builder = DistributedApplication.CreateBuilder(args);
builder.AddViteApp("frontend", "../frontend")
.WithBun();

Learn more about Bun support with the JavaScript integration.

  • Fixed WithYarn when used with AddViteApp.
  • Fixed backslash escaping in path strings for discovered Vite configurations.
  • Improved corepack handling for pnpm-based projects.

New integration for Azure Data Lake Storage Gen2:

C# — Azure Data Lake Storage
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureDataLakeStorage("datalake");
builder.AddProject<Projects.DataProcessor>("processor")
.WithReference(storage);

The Azure AI Inference integration now supports embedding models:

C# — Azure AI embeddings
var builder = DistributedApplication.CreateBuilder(args);
var ai = builder.AddAzureAIInference("ai");
builder.AddProject<Projects.SearchService>("search")
.WithReference(ai.AddEmbeddingClient("text-embedding"));
  • Improved deployment slot support with onlyIfNotExists semantics.
  • Dashboard import functionality disabled for App Service configurations.
  • Better error messages when environment variables are normalized.
  • IAzureContainerRegistry interface is now obsolete; use the new ContainerRegistry property on compute environments.
  • Improved registry validation for non-Docker image formats.

Updated to Azure ServiceBus emulator version 2.0.0 with improved performance and reliability.

Updated to Azure App Configuration emulator version 1.0.2.

New client integration for MongoDB with Entity Framework Core:

C# — MongoDB EF Core integration
var builder = WebApplication.CreateBuilder(args);
builder.AddMongoDBEntityFramework("mongodb");

Oracle Entity Framework Core multi-targeting

Section titled “Oracle Entity Framework Core multi-targeting”

The Oracle Entity Framework Core integration now supports multiple .NET target frameworks for broader compatibility.

New utility method to compute resource dependencies programmatically:

C# — Get resource dependencies
var dependencies = await resource.GetResourceDependenciesAsync();
  • BeforeResourceStartedEvent now only fires when a resource is actually starting (not on restart or other state changes).
  • Added Logger property to IDistributedApplicationResourceEvent for better diagnostics.

The Never image pull policy is now properly exposed and validated:

C# — Never pull policy
var builder = DistributedApplication.CreateBuilder(args);
builder.AddContainer("mycontainer", "myimage:latest")
.WithImagePullPolicy(ImagePullPolicy.Never);
  • New PullPolicy property on Docker Compose Service class.
  • Improved annotation integration for container configuration.

Added DebuggerDisplayAttribute to resource types, DistributedApplication, EndpointReferenceExpression, and ReferenceExpression for improved debugging experience in Visual Studio.

Better exception handling in ResourceNotificationService.WaitFor with more descriptive error messages.

The aspire add command now supports fuzzy search for finding integrations:

Aspire CLI — Fuzzy search
aspire add reddis # Will suggest "redis"

New --isolated flag for the run command to prevent automatic instance detection:

Aspire CLI — Isolated run
aspire run --isolated

The CLI now generates JSON schemas for configuration files, enabling IntelliSense and validation in supported editors.

  • Improved search highlight contrast in interactive prompts for accessibility.
  • Retries added to NuGet search operations for reliability.
  • Fixed installation path handling with aspire update --self.
  • Better error messages for deprecated workload detection.

Deployment state directories are now restricted to the current user only, preventing potential information disclosure.

Debug configuration logging now redacts environment variables by default to prevent accidental credential exposure.

  • PID-based socket naming improves backchannel reliability.
  • Fixed Windows startup errors caused by reserved device names (AUX, CON, etc.) in socket paths.
  • Fixed certificate serial number generation.
  • Better filtering of development certificates without X509SubjectKeyIdentifierExtension.
  • Fixed app host returning incorrect ResourceType to the dashboard.
  • Fixed Parameters view to ignore resource type filter.
  • Fixed GenAI tool schema parsing for type arrays.
  • Fixed race condition in RabbitMQEventSourceListener.
  • Fixed showing URLs from other resources’ endpoints.
  • Fixed MongoDB connection string options formatting (forward slash prepending).
  • Fixed deployment failure for resources with ExcludeFromManifest.
  • Fixed WithHostHttpsPort when chained inline.
  • Fixed exporting metrics data points from dashboard.
  • Fixed graph to always update after all filter changes.
  • Fixed tooltip for view options button in resource details panel.
  • Fixed noisy exception logging during cancellation.
  • Fixed flaky tests across CLI, dashboard, and deployment components.

Thank you to all community contributors who helped make Aspire 13.2 possible:

  • TypeScript AppHost — Initial implementation and polyglot SDK work.
  • Bun support for ViteWithBun() extension method.
  • Fuzzy search — Improved aspire add discovery experience.
  • Resource graph improvements — Adaptive force-directed positioning.
  • MongoDB Entity Framework Core — New integration package.
  • Azure Data Lake Storage — New Azure integration.
  • Kubernetes YAML fixes — Publishing improvements.
  • Multiple bug fixes — Including certificate handling, connection strings, and GenAI parsing.

We’re always excited to see community contributions! If you’d like to get involved, check out our contributing guide.

BeforeResourceStartedEvent behavior change

Section titled “BeforeResourceStartedEvent behavior change”

The BeforeResourceStartedEvent now only fires when a resource is actually starting for the first time. Previously, it could fire during restarts or other state transitions. Update any event handlers that relied on the previous behavior.

Some connection properties have been updated for consistency. If your polyglot applications rely on specific environment variable names, please verify they still work correctly.

The IAzureContainerRegistry interface is now obsolete. Use the ContainerRegistry property on compute environments instead:

C# — Container registry access (before)
// Before (Aspire 13.1)
var registry = environment as IAzureContainerRegistry;
C# — Container registry access (after)
// After (Aspire 13.2)
var registry = environment.ContainerRegistry;
  1. Update the CLI: Run aspire update --self.
  2. Update your projects: Run aspire update in your project directory.
  3. Run aspire doctor: Validate your environment with aspire doctor.
  4. Review event handlers: Check any BeforeResourceStartedEvent handlers for compatibility.
  5. Update Azure container registry access: Replace IAzureContainerRegistry casts with ContainerRegistry property access.

Feedback and contributions: We’d love to hear about your experience with Aspire 13.2! Share feedback on GitHub or join the conversation on Discord.