Generated banner for Aspire
Generated logo for Aspire

Aspire

GitHubOfficialFirst committed by ChrisMcKee1Distributed by GitHub

  • Skill
  • Tool integration
  • Software development
  • MIT
  • Medium risk

From the author

Aspire skill covering the Aspire CLI, AppHost orchestration, service discovery, integrations, MCP server, VS Code extension, Dev Containers, GitHub Codespaces, templates, dashboard, and deployment. Use when the user asks to create, run, debug, configure, deploy, or troubleshoot an Aspire distributed application.
— the description by ChrisMcKee1

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

Aspire is a code-first, polyglot orchestration framework designed to simplify the development, debugging, and deployment of distributed applications. It uses an AppHost project to manage the lifecycle of containers, executables, and cloud resources, providing a unified developer experience across various languages including C#, Python, Go, and JavaScript. The framework includes a local Developer Control Plane (DCP) for orchestration, a real-time dashboard for observability, and built-in support for service discovery and infrastructure integrations.

What it does

  • Orchestrates multi-service applications via a central AppHost project.
  • Provides a local runtime engine (DCP) for managing resource lifecycles.
  • Automates service discovery and configuration through environment variable injection.
  • Offers a real-time dashboard for monitoring logs, traces, and metrics.
  • Supports polyglot workloads including .NET, Python, Go, and Node.js.
  • Generates deployment manifests for cloud environments like Kubernetes and Azure.

When to use it

  • When building a distributed system that requires local orchestration of multiple services.
  • When you need to manage dependencies between containers, databases, and APIs.
  • When you want to simplify service discovery and configuration in a polyglot environment.
  • When you need to transition from local development to cloud deployment using standardized manifests.
  • When you require integrated observability and health checks during the development loop.

Advantages

  • Unified developer experience for polyglot distributed systems.
  • Code-first approach allows for programmatic infrastructure definition.
  • Automatic service discovery reduces manual configuration overhead.
  • Integrated dashboard provides immediate visibility into system health and logs.
  • Supports standard container runtimes and cloud-native deployment targets.

Usage examples

“Create a new Aspire project with a starter template.”
The agent executes 'aspire new aspire-starter' to generate a project structure containing an AppHost, service defaults, and sample services.
“How do I add a Redis cache to my existing Aspire AppHost?”
The agent guides you to run 'aspire add redis' and shows how to wire the resource in your AppHost using '.WithReference(redis)'.
“Run my distributed application locally.”
The agent triggers 'aspire run', which builds the AppHost, starts the DCP engine, manages resource dependencies, and opens the Aspire dashboard.
“How can I deploy my Aspire application to Kubernetes?”
The agent explains the use of 'aspire publish' to generate the necessary deployment manifests for your target environment.

Install

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/github/aspire/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip aspire.zip -d .agents/skills

Documentation by ChrisMcKee1

Aspire — Polyglot Distributed-App Orchestration

Aspire is a code-first, polyglot toolchain for building observable, production-ready distributed applications. It orchestrates containers, executables, and cloud resources from a single AppHost project — regardless of whether the workloads are C#, Python, JavaScript/TypeScript, Go, Java, Rust, Bun, Deno, or PowerShell.

Mental model: The AppHost is a conductor — it doesn't play the instruments, it tells every service when to start, how to find each other, and watches for problems.

Detailed reference material lives in the references/ folder — load on demand.


References

ReferenceWhen to load
CLI ReferenceCommand flags, options, or detailed usage
MCP ServerSetting up MCP for AI assistants, available tools
Integrations CatalogDiscovering integrations via MCP tools, wiring patterns
Polyglot APIsMethod signatures, chaining options, language-specific patterns
ArchitectureDCP internals, resource model, service discovery, networking, telemetry
DashboardDashboard features, standalone mode, GenAI Visualizer
DeploymentDocker, Kubernetes, Azure Container Apps, App Service
TestingIntegration tests against the AppHost
TroubleshootingDiagnostic codes, common errors, and fixes

1. Researching Aspire Documentation

The Aspire team ships an MCP server that provides documentation tools directly inside your AI assistant. See MCP Server for setup details.

If running Aspire CLI 13.2 or later (aspire --version), the MCP server includes docs search tools:

ToolDescription
list_docsLists all available documentation from aspire.dev
search_docsPerforms weighted lexical search across indexed documentation
get_docRetrieves a specific document by its slug

These tools were added in PR #14028. To update: aspire update --self --channel daily.

For more on this approach, see David Pine's post: https://davidpine.dev/posts/aspire-docs-mcp-tools/

Aspire CLI 13.1 (integration tools only)

On 13.1, the MCP server provides integration lookup but not docs search:

ToolDescription
list_integrationsLists available Aspire hosting integrations
get_integration_docsGets documentation for a specific integration package

For general docs queries on 13.1, use Context7 as your primary source (see below).

Fallback: Context7

Use Context7 (mcp_context7) when the Aspire MCP docs tools are unavailable (13.1) or the MCP server isn't running:

Step 1 — Resolve the library ID (one-time per session):

Call mcp_context7_resolve-library-id with libraryName: ".NET Aspire".

RankLibrary IDUse when
1/microsoft/aspire.devPrimary source. Guides, integrations, CLI reference, deployment.
2/dotnet/aspireAPI internals, source-level implementation details.
3/communitytoolkit/aspireNon-Microsoft polyglot integrations (Go, Java, Node.js, Ollama).

Step 2 — Query docs:

libraryId: "/microsoft/aspire.dev", query: "Python integration AddPythonApp service discovery"
libraryId: "/communitytoolkit/aspire", query: "Golang Java Node.js community integrations"
Fallback: GitHub search (when Context7 is also unavailable)

Search the official docs repo on GitHub:

  • Docs repo: microsoft/aspire.dev — path: src/frontend/src/content/docs/

  • Source repo: dotnet/aspire

  • Samples repo: dotnet/aspire-samples

  • Community integrations: CommunityToolkit/Aspire


2. Prerequisites & Install

RequirementDetails
.NET SDK10.0+ (required even for non-.NET workloads — the AppHost is .NET)
Container runtimeDocker Desktop, Podman, or Rancher Desktop
IDE (optional)VS Code + C# Dev Kit, Visual Studio 2022, JetBrains Rider
# Linux / macOS
curl -sSL https://aspire.dev/install.sh | bash

# Windows PowerShell
irm https://aspire.dev/install.ps1 | iex

# Verify
aspire --version

# Install templates
dotnet new install Aspire.ProjectTemplates

3. Project Templates

TemplateCommandDescription
aspire-starteraspire new aspire-starterASP.NET Core/Blazor starter + AppHost + tests
aspire-ts-cs-starteraspire new aspire-ts-cs-starterASP.NET Core/React starter + AppHost
aspire-py-starteraspire new aspire-py-starterFastAPI/React starter + AppHost
aspire-apphost-singlefileaspire new aspire-apphost-singlefileEmpty single-file AppHost

4. AppHost Quick Start (Polyglot)

The AppHost orchestrates all services. Non-.NET workloads run as containers or executables.

var builder = DistributedApplication.CreateBuilder(args);

// Infrastructure
var redis = builder.AddRedis("cache");
var postgres = builder.AddPostgres("pg").AddDatabase("catalog");

// .NET API
var api = builder.AddProject<Projects.CatalogApi>("api")
    .WithReference(postgres).WithReference(redis);

// Python ML service
var ml = builder.AddPythonApp("ml-service", "../ml-service", "main.py")
    .WithHttpEndpoint(targetPort: 8000).WithReference(redis);

// React frontend (Vite)
var web = builder.AddViteApp("web", "../frontend")
    .WithHttpEndpoint(targetPort: 5173).WithReference(api);

// Go worker
var worker = builder.AddGolangApp("worker", "../go-worker")
    .WithReference(redis);

builder.Build().Run();

For complete API signatures, see Polyglot APIs.


5. Core Concepts (Summary)

ConceptKey point
Run vs Publishaspire run = local dev (DCP engine). aspire publish = generate deployment manifests.
Service discoveryAutomatic via env vars: ConnectionStrings__<name>, services__<name>__http__0
Resource lifecycleDAG ordering — dependencies start first. .WaitFor() gates on health checks.
Resource typesProjectResource, ContainerResource, ExecutableResource, ParameterResource
Integrations144+ across 13 categories. Hosting package (AppHost) + Client package (service).
DashboardReal-time logs, traces, metrics, GenAI visualizer. Runs automatically with aspire run.
MCP ServerAI assistants can query running apps and search docs via CLI (STDIO).
TestingAspire.Hosting.Testing — spin up full AppHost in xUnit/MSTest/NUnit.
DeploymentDocker, Kubernetes, Azure Container Apps, Azure App Service.

6. CLI Quick Reference

Valid commands in Aspire CLI 13.1:

CommandDescriptionStatus
aspire new <template>Create from templateStable
aspire initInitialize in existing projectStable
aspire runStart all resources locallyStable
aspire add <integration>Add an integrationStable
aspire publishGenerate deployment manifestsPreview
aspire configManage configuration settingsStable
aspire cacheManage disk cacheStable
aspire deployDeploy to defined targetsPreview
aspire do <step>Execute a pipeline stepPreview
aspire updateUpdate integrations (or --self for CLI)Preview
aspire mcp initConfigure MCP for AI assistantsStable
aspire mcp startStart the MCP serverStable

Full command reference with flags: CLI Reference.


7. Common Patterns

Adding a new service
  1. Create your service directory (any language)

  2. Add to AppHost: Add*App() or AddProject<T>()

  3. Wire dependencies: .WithReference()

  4. Gate on health: .WaitFor() if needed

  5. Run: aspire run

Migrating from Docker Compose
  1. aspire new aspire-apphost-singlefile (empty AppHost)

  2. Replace each docker-compose service with an Aspire resource

  3. depends_on → .WithReference() + .WaitFor()

  4. ports → .WithHttpEndpoint()

  5. environment → .WithEnvironment() or .WithReference()


8. Key URLs

Files

references/troubleshooting.md

Troubleshooting — Diagnostics & Common Issues


Diagnostic Codes

Aspire emits diagnostic codes for common issues. These appear in build warnings/errors and IDE diagnostics.

Standard diagnostics
CodeSeverityDescription
ASPIRE001WarningResource name contains invalid characters
ASPIRE002WarningDuplicate resource name detected
ASPIRE003ErrorMissing required package reference
ASPIRE004WarningDeprecated API usage
ASPIRE005ErrorInvalid endpoint configuration
ASPIRE006WarningHealth check not configured for resource with .WaitFor()
ASPIRE007WarningContainer image tag not specified (using latest)
ASPIRE008ErrorCircular dependency detected in resource graph
Experimental diagnostics (ASPIREHOSTINGX*)

These codes indicate usage of experimental/preview APIs. They may require #pragma warning disable or <NoWarn> if you intentionally use experimental features:

CodeArea
ASPIRE_HOSTINGX_0001–0005Experimental hosting APIs
ASPIRE_HOSTINGX_0006–0010Experimental integration APIs
ASPIRE_HOSTINGX_0011–0015Experimental deployment APIs
ASPIRE_HOSTINGX_0016–0022Experimental resource model APIs

To suppress experimental warnings:

<!-- In .csproj -->
<PropertyGroup>
  <NoWarn>$(NoWarn);ASPIRE_HOSTINGX_0001</NoWarn>
</PropertyGroup>

Or per-line:

#pragma warning disable ASPIRE_HOSTINGX_0001
var resource = builder.AddExperimentalResource("test");
#pragma warning restore ASPIRE_HOSTINGX_0001

Common Issues & Solutions

Container runtime
ProblemSolution
"Cannot connect to Docker daemon"Start Docker Desktop / Podman / Rancher Desktop
Container fails to startCheck docker ps -a for exit codes; check dashboard console logs
Port already in useAnother process is using the port; Aspire auto-assigns, but targetPort must be free on the container
Container image pull failsCheck network connectivity; verify image name and tag
"Permission denied" on LinuxAdd user to docker group: sudo usermod -aG docker $USER
Service discovery
ProblemSolution
Service can't find dependencyVerify .WithReference() in AppHost; check env vars in dashboard
Connection string is nullThe reference resource name doesn't match; check ConnectionStrings__<name>
Wrong port in service URLCheck targetPort vs actual service listen port
Env var not setRebuild AppHost; verify resource name matches exactly
Python workloads
ProblemSolution
"Python not found"Ensure Python is on PATH; specify full path in AddPythonApp()
venv not foundUse .WithVirtualEnvironment() or create venv manually
pip packages fail to installUse .WithPipPackages() or install in venv before aspire run
ModuleNotFoundErrorvenv isn't activated; .WithVirtualEnvironment() handles this
"Port already in use" for UvicornCheck targetPort — another instance may be running
JavaScript / TypeScript workloads
ProblemSolution
"node_modules not found"Use .WithNpmPackageInstallation() to auto-install
npm install failsCheck package.json is valid; check npm registry connectivity
Vite dev server won't startVerify vite is in devDependencies; check Vite config
Port mismatchEnsure targetPort matches the port in your JS framework config
TypeScript compilation errorsThese happen in the service, not Aspire — check service logs
Go workloads
ProblemSolution
"go not found"Ensure Go is installed and on PATH
Build failsCheck go.mod exists in working directory
"no Go files in directory"Verify workingDir points to the directory with main.go
Java workloads
ProblemSolution
"java not found"Ensure JDK is installed and JAVA_HOME is set
Maven/Gradle build failsVerify build files exist; check build tool installation
Spring Boot won't startCheck application.properties; verify main class
Rust workloads
ProblemSolution
"cargo not found"Install Rust via rustup
Build takes too longRust compile times are normal; use .WithCargoBuild() for pre-build
Health checks & startup
ProblemSolution
Resource stuck in "Starting"Health check endpoint not responding; check service logs
.WaitFor() timeoutIncrease timeout or fix health endpoint; default is 30 seconds
Health check always failsVerify endpoint path (default: /health); check service binds to correct port
Cascading startup failuresA dependency failed; check the root resource first
Dashboard
ProblemSolution
Dashboard doesn't openCheck terminal for URL; use --dashboard-port for fixed port
No logs appearingService may not be writing to stdout/stderr; check console output
No traces for non-.NET servicesConfigure OpenTelemetry SDK in the service; see Dashboard
Traces don't show cross-service callsPropagate trace context headers (traceparent, tracestate)
Build & configuration
ProblemSolution
"Project not found" for AddProject<T>()Ensure .csproj is in the solution and referenced by AppHost
Package version conflictsPin all Aspire packages to the same version
AppHost won't buildCheck Aspire.AppHost.Sdk is in the project; run dotnet restore
aspire run build errorFix the build error first; aspire run requires a successful build
Deployment
ProblemSolution
aspire publish failsCheck publisher package is installed (e.g., Aspire.Hosting.Docker)
Generated Bicep has errorsCheck for unsupported resource configurations
Container image push failsVerify registry credentials and permissions
Missing connection strings in deploymentCheck generated ConfigMaps/Secrets match resource names

Debugging strategies

1. Check the dashboard first

The dashboard shows resource state, logs, traces, and metrics. Start here for any issue.

2. Check environment variables

In the dashboard, click a resource to see all injected environment variables. Verify connection strings and service URLs are correct.

3. Read console logs

Dashboard → Console Logs → filter by the failing resource. Raw stdout/stderr often contains the root cause.

4. Check the DAG

If services fail to start, check the dependency order. A failed dependency blocks all downstream resources.

5. Use MCP for AI-assisted debugging

If MCP is configured (see MCP Server), ask your AI assistant:

  • "What resources are failing?"

  • "Show me the logs for [service]"

  • "What traces show errors?"

6. Isolate the problem

Run just the failing resource by commenting out others in the AppHost. This narrows whether the issue is the resource itself or a dependency.


Getting help

Requirements and compatibility

Written for: GitHub Copilot

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server, Needs network access

Security

What our scanner noticed· Medium risk

  • Instructions that use the network
  • Downloads piped into a shell

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

First committed by
GitHub avatar of ChrisMcKee1ChrisMcKee1
Publisher
GitHub (Official)
Distributed by
GitHub
Source
github/awesome-copilot · skills/aspire · commit 797337f
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Contributors
ChrisMcKee1

AutoGineer is not affiliated with or endorsed by ChrisMcKee1 or GitHub.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download aspire.zip