Aspire orchestration for cloud-native distributed applications in any language (C#, Python, Node.js, Go)...
Code-first orchestration for polyglot distributed apps. AppHost defines topology, aspire run orchestrates locally, azd deploy deploys to Azure.
Auto-activates on keywords: aspire, microservices, distributed app, service discovery, orchestration
# Install .NET 8+ and Aspire workload
# See: https://learn.microsoft.com/dotnet/aspire/fundamentals/setup-tooling
dotnet workload update
dotnet workload install aspire
# Create AppHost (orchestrates services in ANY language)
dotnet new aspire-apphost -n MyApp
# Basic AppHost - orchestrate Python, Node.js, .NET services
var builder = DistributedApplication.CreateBuilder(args);
var redis = builder.AddRedis("cache");
// Python service
var pythonApi = builder.AddExecutable("python-api", "python", ".").WithArgs("app.py").WithReference(redis);
// Node.js service
var nodeApi = builder.AddExecutable("node-api", "node", ".").WithArgs("server.js").WithReference(redis);
// .NET service
var dotnetApi = builder.AddProject<Projects.Api>("api").WithReference(redis);
builder.Build().Run();
# Run (orchestrates ALL languages)
aspire run # Dashboard opens at http://localhost:15888
dotnet new aspire-apphost -n MyApp
dotnet new webapi -n MyApp.Api
dotnet add MyApp.AppHost reference MyApp.Api
AppHost: Resource topology in Program.cs
ServiceDefaults: Shared config (logging, telemetry, resilience)
Services: Your apps (APIs, workers, web apps)
// PostgreSQL
var postgres = builder.AddPostgres("db").AddDatabase("mydb");
var api = builder.AddProject<Projects.Api>("api").WithReference(postgres);
// Redis
var redis = builder.AddRedis("cache").WithRedisCommander();
var api = builder.AddProject<Projects.Api>("api").WithReference(redis);
// RabbitMQ
var rabbitmq = builder.AddRabbitMQ("messaging");
var worker = builder.AddProject<Projects.Worker>("worker").WithReference(rabbitmq);
// Access in code (connection strings auto-injected)
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration.GetConnectionString("cache");
});
aspire run # Starts all services
Dashboard (localhost:15888): Resources, logs, traces, metrics Hot Reload: Auto-rebuild on code changes Debugging: Attach to individual services via IDE
azd init # Initialize Azure Developer CLI
azd up # Deploy (generates Bicep → Azure Container Apps)
azd deploy -e production # Deploy to specific environment
Generates: Bicep → Container Apps + networking + managed identities
When setting up projects:
When adding infrastructure:
When deploying:
When debugging:
Essential commands: See commands.md for complete reference
Polyglot patterns:
builder.AddProject<Projects.Api>("api"); // .NET
builder.AddExecutable("python-api", "python", ".").WithArgs("app.py"); // Python
builder.AddExecutable("node-api", "node", ".").WithArgs("server.js"); // Node.js
builder.AddExecutable("go-svc", "go", ".").WithArgs("run", "main.go"); // Go
Service discovery: .WithReference(redis) in AppHost → GetConnectionString("cache") in service
Command: /ultrathink "Setup Aspire for microservices"
Agent-Skill mapping: