microsoft / microsoft/aspire.dev
Document Go language support for polyglot AppHosts
Open
@IEvangelist is already working on this.
Since Jun 2, 2026.
- Dominant language
- MDX
- Stars
- 193
- Forks
- 87
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 73
Description
Overview
Go has been added as an experimental polyglot AppHost language in .NET Aspire, reaching parity with the existing TypeScript, Python, and Java AppHost implementations. The Aspire docs need to be updated to cover this new language option.
What changed
PR: microsoft/aspire#16038
New capabilities
- Go AppHost support: Users can now create Aspire AppHosts using Go, with full code generation for the Aspire SDK
- Fluent builder API: The generated Go SDK supports idiomatic method chaining with error accumulation:
db := builder.AddPostgres("db") if err := db.Err(); err != nil { log.Fatal(aspire.FormatError(err)) } - CLI scaffolding:
aspire init --language gogenerates a Go AppHost project withapphost.go,go.mod, andaspire.config.json - SDK code generation:
aspire restore --apphost apphost.gogenerates the Go SDK in.modules/ - Feature flag: Go support is experimental and requires enabling via:
aspire config set features:experimentalPolyglot:go true --global
Documentation areas to cover
- Getting started with Go AppHosts — prerequisites (Go 1.26+), project setup, running
- Go SDK API patterns — fluent chaining with
.Err(),CreateBuilder,Build,Run aspire.config.json—"language": "go"configuration- Available integrations — all
Aspire.Hosting.*integrations are available via code generation - Update the polyglot/multi-language overview page to include Go alongside TypeScript, Python, Java
Example Go AppHost
package main
import (
"log"
"apphost/modules/aspire"
)
func main() {
builder, err := aspire.CreateBuilder()
if err != nil {
log.Fatal(aspire.FormatError(err))
}
cache := builder.AddRedis("cache")
db := builder.AddPostgres("db")
if err := db.Err(); err != nil {
log.Fatal(aspire.FormatError(err))
}
app, err := builder.Build()
if err != nil {
log.Fatal(aspire.FormatError(err))
}
if err := app.Run(); err != nil {
log.Fatal(aspire.FormatError(err))
}
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.