AspireTopology 0.1.0

dotnet add package AspireTopology --version 0.1.0
                    
NuGet\Install-Package AspireTopology -Version 0.1.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="AspireTopology" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AspireTopology" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="AspireTopology" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AspireTopology --version 0.1.0
                    
#r "nuget: AspireTopology, 0.1.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package AspireTopology@0.1.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AspireTopology&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=AspireTopology&version=0.1.0
                    
Install as a Cake Tool

AspireTopology

Generate architecture topology and diagrams directly from your Aspire AppHost.

Instead of parsing source code or maintaining architecture diagrams by hand, AspireTopology reads Aspire's DistributedApplicationModel and converts resources, references, dependencies, endpoints and containment relationships into a renderer-independent topology model. That topology is then rendered as an interactive Isoflow diagram, or exported to other formats.

Use it

var builder = DistributedApplication.CreateBuilder(args);

var postgres = builder.AddPostgres("postgres");
var db = postgres.AddDatabase("app");

var api = builder.AddProject<Projects.Api>("api")
    .WithReference(db);

builder.AddTopologyDiagram();

builder.Build().Run();

Run the app and the diagram appears in the Aspire dashboard as a topology resource, served from inside the AppHost: no container runtime, no Node.js, no second package. Or produce the files on demand:

aspire do topology
artifacts/
└─ topology/
   ├─ topology.json
   └─ topology.isoflow.json

Options

builder.AddTopologyDiagram(options =>
{
    options.OutputPath = "./docs/architecture";
});
Option Default
OutputPath artifacts/topology Relative to the AppHost directory unless absolute.
FileName topology Base name of the generated files.
GenerateOnStart true Refresh the files every time the AppHost starts.
Viewer true List the interactive diagram in the Aspire dashboard.
ViewerResourceName topology The dashboard row's name.
IncludeEndpoints true Copy declared endpoints into node properties.
IncludeParameters false Parameters are configuration, not architecture.

GenerateOnStart and Viewer only ever apply in run mode, so publish and deploy are untouched, and neither can fail a run: a write error or a viewer that will not start is logged as a warning.

Describe individual resources with annotations, so the metadata travels with the resource instead of living in a side file:

api.WithTopologyMetadata(x =>
{
    x.DisplayName = "Public API";
    x.Group = "Backend";
});

What it extracts

From Aspire Becomes
ProjectResource Service node
Postgres, SQL Server, Mongo, Cosmos, … Database node
Redis, Valkey, Garnet Cache node
RabbitMQ, Kafka, Service Bus, Event Hubs MessageBroker node
Blob, file, queue and table storage Storage node
Anything else Container, Executable, Parameter or Unknown node
WithReference Reference edge
WaitFor Dependency edge
AddDatabase and other child resources Parent edge, plus a containment group
Declared endpoints Node properties

A resource type AspireTopology has never seen still appears on the diagram, as Unknown, with its Aspire type recorded. Resources are never silently dropped.

AspireTopology never serializes secret values, environment values, parameter values, credentials or connection strings. Endpoints are fine. Connection strings are not.

Packages

Package For
AspireTopology.Hosting AppHosts. This is the one to install.
AspireTopology The neutral model. Depends on nothing.
AspireTopology.Isoflow The Isoflow renderer.

Requirements

.NET SDK 10.0.100 or later, and Aspire 13.5 or later.

Screenshots, architecture notes and the sample AppHost are on GitHub: https://github.com/kfrancis/aspire-topology

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on AspireTopology:

Package Downloads
AspireTopology.Isoflow

Renders an AspireTopology TopologyDocument as Isoflow initialData JSON.

AspireTopology.Hosting

Generates architecture topology directly from an Aspire AppHost by reading the DistributedApplicationModel. Adds the 'aspire do topology' pipeline step.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 161 8/28/2026