CommunityToolkit.Aspire.Hosting.Squad
13.6.1
Prefix Reserved
See the version list below for details.
dotnet add package CommunityToolkit.Aspire.Hosting.Squad --version 13.6.1
NuGet\Install-Package CommunityToolkit.Aspire.Hosting.Squad -Version 13.6.1
<PackageReference Include="CommunityToolkit.Aspire.Hosting.Squad" Version="13.6.1" />
<PackageVersion Include="CommunityToolkit.Aspire.Hosting.Squad" Version="13.6.1" />
<PackageReference Include="CommunityToolkit.Aspire.Hosting.Squad" />
paket add CommunityToolkit.Aspire.Hosting.Squad --version 13.6.1
#r "nuget: CommunityToolkit.Aspire.Hosting.Squad, 13.6.1"
#:package CommunityToolkit.Aspire.Hosting.Squad@13.6.1
#addin nuget:?package=CommunityToolkit.Aspire.Hosting.Squad&version=13.6.1
#tool nuget:?package=CommunityToolkit.Aspire.Hosting.Squad&version=13.6.1
CommunityToolkit.Aspire.Hosting.Squad
An Aspire hosting integration that lets you model a Squad AI-agent team as a first-class .NET Aspire resource.
Getting Started
Install the package
dotnet add package CommunityToolkit.Aspire.Hosting.Squad
Add a Squad team to your AppHost
using Aspire.Hosting;
var builder = DistributedApplication.CreateBuilder(args);
// Register a Squad team as a logical Aspire resource.
// teamRoot is the directory that contains the `.squad/` folder.
var research = builder.AddSquad("research-squad",
teamRoot: @"C:\repos\my-research-team");
// Wire the team into a downstream service project.
// The service receives a `squad://...` connection string describing the team.
builder.AddProject<Projects.MyApi>("api")
.WithReference(research)
.WithHttpEndpoint(name: "http", env: "HTTP_PORTS");
builder.Build().Run();
Consume the team from a service project
In a referenced service project, parse the connection string Aspire injects under
ConnectionStrings:{resourceName} (format squad://resource/{name}?teamRoot=...&agents=...&protocol=maf-1.0)
and use Squad.Agents.AI to construct
a SquadAgent over the referenced team:
var teamRoot = ParseTeamRoot(builder.Configuration.GetConnectionString("research-squad")!);
builder.Services.AddSquadAgent(opts =>
{
opts.SquadFolderPath = teamRoot;
opts.Instructions = "You are a research assistant. Be concise.";
});
app.MapPost("/ask", async (string prompt, SquadAgent agent) =>
{
var session = await agent.CreateSessionAsync();
var response = await agent.RunAsync(prompt, session);
return Results.Ok(new { response = response.Text });
});
A complete runnable example lives under
examples/squad/ —
AppHost + ApiApp wired together with a self-contained sample team.
What it does
AddSquad(name, teamRoot) registers a SquadResource that:
- Reads the team roster from
{teamRoot}/.squad/team.md - Surfaces the roster, team root, and protocol version as dashboard properties
- Implements
IResourceWithConnectionStringso downstream services can.WithReference(squad)and receive asquad://resource/{name}?teamRoot={...}&agents={csv}&protocol=maf-1.0descriptor
The resource is logical — it does not start a listener by itself. Service projects that reference the squad can use the connection string to instantiate a Squad.Agents.AI AIAgent (Microsoft Agent Framework adapter) that orchestrates the referenced team.
Roster discovery
The integration parses .squad/team.md looking for either of:
| Ralph | Work Monitor | ... |
- **Ralph** (Work Monitor)
Only names whose lowercase form maps to an existing .squad/agents/{name}/charter.md are kept. If team.md does not exist, a sensible default roster is returned so the resource is still useful.
Feedback & contributing
Issues and PRs welcome at CommunityToolkit/Aspire.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. 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. |
-
net10.0
- Aspire.Hosting (>= 13.6.4)
-
net8.0
- Aspire.Hosting (>= 13.6.4)
-
net9.0
- Aspire.Hosting (>= 13.6.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 13.6.2-beta.959 | 38 | 10/27/2026 |
| 13.6.1 | 91 | 10/26/2026 |
| 13.6.1-beta.950 | 52 | 10/26/2026 |
| 13.6.1-beta.938 | 54 | 10/24/2026 |
| 13.6.1-beta.935 | 61 | 10/15/2026 |
| 13.6.1-beta.933 | 53 | 10/13/2026 |
| 13.6.1-beta.930 | 52 | 10/11/2026 |
| 13.6.0 | 143 | 10/1/2026 |
| 13.6.0-beta.914 | 65 | 10/1/2026 |
| 13.6.0-beta.910 | 59 | 9/30/2026 |
| 13.5.1-beta.895 | 65 | 9/29/2026 |
| 13.5.1-beta.806 | 71 | 9/28/2026 |
| 13.5.1-beta.803 | 57 | 9/28/2026 |
| 13.5.1-beta.781 | 64 | 9/28/2026 |
| 13.5.1-beta.779 | 56 | 9/28/2026 |
| 13.5.1-beta.777 | 58 | 9/28/2026 |
| 13.5.1-beta.776 | 64 | 9/28/2026 |
| 13.5.1-beta.775 | 65 | 9/27/2026 |
| 13.5.1-beta.770 | 63 | 9/25/2026 |
| 13.5.1-beta.767 | 69 | 9/22/2026 |