CommunityToolkit.Aspire.Hosting.Squad
13.4.1-beta.686
Prefix Reserved
dotnet add package CommunityToolkit.Aspire.Hosting.Squad --version 13.4.1-beta.686
NuGet\Install-Package CommunityToolkit.Aspire.Hosting.Squad -Version 13.4.1-beta.686
<PackageReference Include="CommunityToolkit.Aspire.Hosting.Squad" Version="13.4.1-beta.686" />
<PackageVersion Include="CommunityToolkit.Aspire.Hosting.Squad" Version="13.4.1-beta.686" />
<PackageReference Include="CommunityToolkit.Aspire.Hosting.Squad" />
paket add CommunityToolkit.Aspire.Hosting.Squad --version 13.4.1-beta.686
#r "nuget: CommunityToolkit.Aspire.Hosting.Squad, 13.4.1-beta.686"
#:package CommunityToolkit.Aspire.Hosting.Squad@13.4.1-beta.686
#addin nuget:?package=CommunityToolkit.Aspire.Hosting.Squad&version=13.4.1-beta.686&prerelease
#tool nuget:?package=CommunityToolkit.Aspire.Hosting.Squad&version=13.4.1-beta.686&prerelease
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.4.3)
- MessagePack (>= 2.5.301)
-
net8.0
- Aspire.Hosting (>= 13.4.3)
- MessagePack (>= 2.5.301)
-
net9.0
- Aspire.Hosting (>= 13.4.3)
- MessagePack (>= 2.5.301)
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.4.1-beta.686 | 44 | 7/16/2026 |
| 13.4.1-beta.685 | 67 | 7/9/2026 |
| 13.4.1-beta.683 | 49 | 7/9/2026 |
| 13.4.1-beta.680 | 54 | 7/7/2026 |
| 13.4.1-beta.676 | 50 | 7/7/2026 |