| title | Compatibility & Versioning |
|---|---|
| weight | 6 |
go-sdk is a client of the AI Agent Assembly gateway (the core runtime in
ai-agent-assembly/agent-assembly).
It is built against a specific gateway protocol version and a minimum Go
toolchain, and it ships on its own release cadence. This page covers both the
compatibility contract and how releases are cut.
The VERSION
file pins the gateway protocol version this SDK speaks (currently 0.0.1-rc.6). It
is the wire-compatibility contract, separate from the module's release tags:
- A released tag such as
v0.0.1-alpha.3is the SDK version yougo get. VERSIONis the gateway protocol the SDK build targets.
When the gateway proto changes, VERSION is bumped, the vendored conformance
vectors are updated, and make test confirms wire compatibility before the
change ships.
Cross-SDK matrix. The core↔SDK compatibility matrix — which SDK versions speak which gateway protocol, across the Go, Python, and Node SDKs — is published on the shared documentation hub. Consult it when pairing an SDK release with a gateway deployment.
- Transports — the SDK talks to the gateway over gRPC and HTTP.
- Enforcement modes —
EnforcementModemirrorsaa_core::EnforcementMode; theenforce/observe/disabledtokens are sent verbatim on the wire. See [Configuration]({{< relref "/configuration" >}}) for the per-agent posture. - Identity propagation — agent / trace / run IDs flow to the gateway on
every
CheckandRecordResult; the trace ID falls back to the active OpenTelemetry span context when not set explicitly.
go-sdk governs AI-agent frameworks at the tool boundary. The Go ecosystem
coverage is deliberately narrow:
| Framework | Module | Tested version line | Support |
|---|---|---|---|
| LangChainGo | github.com/tmc/langchaingo |
v0.1.x (CI + examples pin v0.1.14) |
First-class adapter (WrapChain) + tool-wrapping |
| Any other tool | — | — | Generic WrapTools over arbitrary tools.Tool values |
LangChainGo is the only first-class framework adapter. Everything else is
covered by the framework-agnostic WrapTools surface — there is no
per-framework adapter for CrewAI/Genkit/Eino-style stacks today.
The SDK takes no framework dependency: go.mod imports neither
langchaingo nor any other agent framework. Governance is structural, not
import-coupled:
assembly.ToolisName() / Description() / Call(ctx, input)— the exact shape of LangChainGo'stools.Tool. Anylangchaingo/tools.Tooltherefore satisfiesassembly.Toolwith no adapter, soassembly.WrapToolscan govern an arbitrary slice of LangChainGo tools (and any other value that implements the same three methods).assembly.WrapChainadapts LangChainGo'schains.Chainshape (Call(ctx, map[string]any) (map[string]any, error)) the same way, again without importing the framework — it only propagates the assembly's agent ID to child agents.
Because the contract is satisfied structurally, you pin LangChainGo (or not) in
your go.mod; this SDK never pulls it in. The v0.1.14 pin above is the
version exercised by the AAASM-3525 Go smoke driver and the
examples/go/langchaingo sample, not a hard floor.
The Framework compatibility section of this page is the authoritative
source for Go — the LangChainGo adapter and assembly.WrapTools live in this
SDK, so its compatibility is documented here. The core docs site hosts a
cross-SDK index/hub that links to this page and to the Python/Node
equivalents:
https://docs.agent-assembly.com/core/stable/reference/framework-compatibility.html
That index is the /stable/ channel link; it 404s until GA by design (the
stable channel activates at the first vX.Y.0 release), consistent with the
core-side convention. Use the
documentation hub
to reach the cross-SDK index in the meantime.
| Requirement | Value |
|---|---|
| Minimum Go | 1.26 (the go directive in go.mod) |
| CGo | Not required — the pure-Go default builds with CGO_ENABLED=0. The native FFI transport is opt-in via -tags aa_ffi_go. |
The SDK is pre-release on the v0.0.1-alpha line. The public assembly
package API may change between alpha tags; pin an exact tag and review the
release notes before
upgrading.
go-sdk follows the standard Go module release model: a release is a git
tag. There is no separate publish step to go get a tagged version — the Go
module proxy and pkg.go.dev
index the tag automatically.
- Semantic Versioning (
vMAJOR.MINOR.PATCH), with pre-release suffixes for the current alpha line (v0.0.1-alpha.N). - The module path is stable —
github.com/ai-agent-assembly/go-sdk— so a major bump pastv1would add a/vNsuffix per Go's import-compatibility rule. VERSIONis not the release version; it pins the gateway protocol the SDK targets (see Protocol version above).
-
Land all changes on
mainwith CI green. -
If the gateway protocol changed, bump
VERSIONand update the conformance vectors; confirm withmake test. -
Tag the commit and push the tag:
git tag v0.0.1-alpha.4 git push remote v0.0.1-alpha.4
-
Publish the release notes on the GitHub Releases page for that tag.
go get github.com/ai-agent-assembly/go-sdk@v0.0.1-alpha.4resolves through the module proxy immediately.- pkg.go.dev renders the godoc for the tag within minutes.
- The
goreleaserconfig (.goreleaser.yaml) is validated on every push tomainby thegoreleaser-checkjob; it is set up for source archives, with binary builds skipped (this is a library, not a CLI).
require github.com/ai-agent-assembly/go-sdk v0.0.1-alpha.3Pin an exact tag while the SDK is pre-release; review the release notes before moving to a newer alpha.