# Agent Development Kit (ADK) for Go: features, protocols, quickstart

## TL;DR

ADK for Go is Google's Apache-2.0 Go edition of the Agent Development Kit. Version 2 adds graph-based workflows, collaborative agent teams and human-input nodes alongside LLM agents, workflow agents, MCP toolsets and experimental A2A. It suits Go teams building cloud-native agents, often deployed on Google Cloud. A separate v1 line still receives backported fixes.

## Key facts

| Field | Value |
| --- | --- |
| Type | Framework |
| Languages / SDKs | Go |
| License | Apache-2.0 |
| Pricing model | [Open core](https://cloud.google.com/products/gemini-enterprise-agent-platform/pricing) |
| Orchestration pattern | Graph |
| GitHub stars | 8,839 (as of 2026-09-30) |
| GitHub forks | 1,022 |
| Last push | 2026-09-30 |
| Latest release | v2.4.0 |
| Repository | [google/adk-go](https://github.com/google/adk-go) |
| Website | [adk.dev](https://adk.dev/) |
| Documentation | [adk.dev](https://adk.dev/get-started/go/) |
| Last verified | 2026-09-30 |

## Key features

- `llmagent.New(llmagent.Config{...})` builds an agent from a model, instruction, tools, sub-agents and an `OutputKey` for session state. ([source](https://adk.dev/get-started/go/))
- Graph-based workflows (ADK Go 2.0+) in the `workflow` package: agent, function and tool nodes joined by edges, with branches, joins, parallel workers and retries. ([source](https://github.com/google/adk-go/tree/main/workflow))
- Human input nodes that pause a graph workflow until a person replies, with Go samples in the guide. ([source](https://adk.dev/graphs/human-input/))
- Collaborative agent teams in which sub-agents run in chat, task or single-turn mode under a coordinator (Go 2.0+). ([source](https://adk.dev/workflows/collaboration/))
- Template workflow agents: `sequentialagent`, `parallelagent` and `loopagent`. ([source](https://github.com/google/adk-go/tree/main/agent/workflowagents))
- `mcptoolset` connects agents to MCP servers and exposes their tools. ([source](https://github.com/google/adk-go/tree/main/tool/mcptoolset))
- A2A support through `remoteagent` (consume) and `server/adka2a` (expose), with Go quickstarts for both directions. ([source](https://adk.dev/a2a/quickstart-exposing-go/))
- Session services for in-memory, database and Vertex AI storage, and model packages for Gemini, OpenAI and Apigee. ([source](https://github.com/google/adk-go/tree/main/session))

## Architecture and orchestration pattern

Pattern: Graph.

ADK for Go 2.x offers several ways to structure agents. An `llmagent` runs a model-and-tool loop and can list sub-agents that the model may transfer control to. Template workflow agents (`sequentialagent`, `parallelagent`, `loopagent`) run sub-agents in a fixed pattern. Since 2.0, the `workflow` package adds graph-based workflows in which agents, functions and tools are nodes joined by edges, with branching, joins, parallel workers, retries and human-input nodes, plus collaborative teams where a coordinator delegates to sub-agents in chat, task or single-turn mode.

A runner executes the root agent against a session. Session services keep event history and state in memory, in a database or in Vertex AI; memory services add cross-session search. An agent's `OutputKey` stores its answer in session state for later agents. The `cmd/launcher` package turns one program into a CLI, a REST API server or the ADK Web dev UI.

The repository maintains two lines: v2 under the module path `google.golang.org/adk/v2`, which changed some APIs (for example `session.NewEvent` now takes a context and tool and callback contexts were merged), and v1, which receives backported fixes.

### Human in the loop

Two mechanisms are documented with Go samples. Tool confirmation, marked Experimental, is enabled by setting `RequireConfirmation: true` in `functiontool.Config`, which pauses each call for a yes/no answer; a tool can also request a structured confirmation through its context and read the reply when called again. The guide notes that confirmation does not work with the database or Vertex AI session services. In graph workflows (ADK Go 2.0+), a human-input node pauses the workflow until the user replies, and the reply becomes the next node's input. Answers can be given in the ADK Web UI or sent through the REST API server.

## Protocols

| Protocol | Support | Evidence | Note |
| --- | --- | --- | --- |
| MCP | Yes (checked 2026-09-30) | [link](https://github.com/google/adk-go/tree/main/tool/mcptoolset) | Client: the `tool/mcptoolset` package in adk-go connects agents to MCP servers and wraps their tools; the docs' agent-as-MCP-server guide only shows Python. |
| A2A | Partial (checked 2026-09-30) | [link](https://adk.dev/a2a/quickstart-exposing-go/) | Client (`remoteagent`) and server (`server/adka2a`, A2A launcher) exist in Go, but the Go exposing and consuming quickstarts are labeled Experimental. |
| AG-UI | Unknown (checked 2026-09-30) | — | The ADK AG-UI page lists Go in its support badge, but its tutorial uses CopilotKit's ADK template, the AG-UI repository's `adk-middleware` has only Python and TypeScript packages, and adk-go contains no AG-UI code; no Go setup is documented. |

## Best for

- Go services that need agents inside one compiled binary, with sessions in their own database ([shortlist](https://multiagentguide.top/best/self-hosted-local.md))
- Workflows that mix deterministic nodes, LLM agents and human-input steps in one graph
- Teams deploying Gemini-based agents to Cloud Run, GKE or Google's Agent Runtime

## Not for

- Production chat front ends built on ADK Web, which the quickstart says is for development only
- Projects that need A2A beyond experimental status
- Codebases that cannot move to the v2 module path and its breaking API changes, unless they stay on the v1 maintenance line

## Quickstart

```sh
go get google.golang.org/adk/v2
```

Install not yet verified by this site.

```go
// imports: context, os, google.golang.org/genai, and from google.golang.org/adk/v2:
// agent, agent/llmagent, agent/workflowagents/sequentialagent, cmd/launcher, cmd/launcher/full, model/gemini
func main() {
	ctx := context.Background()
	m, _ := gemini.NewModel(ctx, "gemini-flash-latest", &genai.ClientConfig{APIKey: os.Getenv("GOOGLE_API_KEY")})
	drafter, _ := llmagent.New(llmagent.Config{Name: "drafter", Model: m,
		Instruction: "Draft a short release note for the user's change.", OutputKey: "draft"})
	editor, _ := llmagent.New(llmagent.Config{Name: "editor", Model: m,
		Instruction: "Shorten this note to two sentences: {draft}"})
	notes, _ := sequentialagent.New(sequentialagent.Config{
		AgentConfig: agent.Config{Name: "notes", SubAgents: []agent.Agent{drafter, editor}}})
	cfg := &launcher.Config{AgentLoader: agent.NewSingleLoader(notes)}
	_ = full.NewLauncher().Execute(ctx, cfg, os.Args[1:]) // `go run . web api webui` opens the dev UI
}
```

### Common pitfalls

- The quickstart asks for Go 1.25+ and ADK Go v2.0.0+, but the v2 `go.mod` currently declares `go 1.26.6`, so an older toolchain has to download a newer one.
- Import paths use the `/v2` module suffix (`google.golang.org/adk/v2/...`); v1 code must be migrated (for example `session.NewEvent` now takes a `context.Context`, and tool and callback contexts were merged).
- `GOOGLE_API_KEY` must be set for Gemini API models.
- ADK Web (`go run agent.go web api webui`) is for development only.
- Tool confirmation is experimental and does not support the database or Vertex AI session services.

Official quickstart: https://adk.dev/get-started/go/

## Pros

- Graph-based workflows and human-input nodes from ADK 2.0 are available in Go, not only in Python. ([source](https://adk.dev/graphs/))
- Deployment to Google's managed Agent Runtime is documented for Go (from v1.2.0) as well as Cloud Run and GKE. ([source](https://adk.dev/deploy/agent-runtime/))
- One launcher serves the same agent as a CLI, a REST API and the ADK Web UI. ([source](https://adk.dev/get-started/go/))
- Model packages go beyond Gemini, with an OpenAI adapter built on the official openai-go client and an Apigee gateway option. ([source](https://github.com/google/adk-go/tree/main/model))
- Frequent releases: v2.0.0 (2026-06-30) to v2.4.0 (2026-09-11), with fixes backported to v1.7.0. ([source](https://github.com/google/adk-go/releases))

## Cons

- v2 introduced breaking API changes and a new module path, while v1 continues as a separate backport line, so examples must match the line in use. ([source](https://github.com/google/adk-go/blob/main/README-v2.md))
- The Go A2A quickstarts are labeled Experimental. ([source](https://adk.dev/a2a/quickstart-consuming-go/))
- Tool confirmation is experimental and not supported with database or Vertex AI session services. ([source](https://adk.dev/tools-custom/confirmation/))
- The ADK Web UI started by the launcher is meant for development, not production. ([source](https://adk.dev/get-started/go/))

## Alternatives

- [Google ADK (Python)](https://multiagentguide.top/tools/google-adk.md)
- [Agent Development Kit (ADK) for Java](https://multiagentguide.top/tools/google-adk-java.md)
- [LangGraph](https://multiagentguide.top/tools/langgraph.md)
- [Microsoft Agent Framework](https://multiagentguide.top/tools/microsoft-agent-framework.md)

## FAQ

### Does ADK for Go support MCP?

Yes, as a client: the `mcptoolset` package loads tools from MCP servers. The guide for exposing an ADK agent as an MCP server only shows Python.

### Does ADK for Go support A2A?

Yes, in both directions (`remoteagent` to consume, `server/adka2a` to expose), but the Go A2A quickstarts are labeled Experimental.

### Which version should I use, v1 or v2?

The quickstart targets v2 (`go get google.golang.org/adk/v2`), which adds graph workflows and collaborative teams. v1 still gets backported fixes, most recently v1.7.0 on 2026-09-14.

### Is ADK for Go free?

The library is Apache-2.0. Google charges for managed services such as Agent Runtime and its sessions, listed on the Gemini Enterprise Agent Platform pricing page.

### How does ADK for Go differ from the Java edition?

Go has ADK 2.0 graph workflows, collaborative agent teams and Agent Runtime deployment documented; these pages do not cover Java.

## Sources

- [ADK Go GitHub repository](https://github.com/google/adk-go)
- [ADK Go README](https://github.com/google/adk-go/blob/main/README.md)
- [ADK Go v2 notes (README-v2.md)](https://github.com/google/adk-go/blob/main/README-v2.md)
- [ADK Go LICENSE](https://github.com/google/adk-go/blob/main/LICENSE)
- [ADK Go go.mod](https://github.com/google/adk-go/blob/main/go.mod)
- [ADK Go releases](https://github.com/google/adk-go/releases)
- [Release v2.4.0 notes](https://github.com/google/adk-go/releases/tag/v2.4.0)
- [Release v1.7.0 notes](https://github.com/google/adk-go/releases/tag/v1.7.0)
- [Release v2.0.0](https://github.com/google/adk-go/releases/tag/v2.0.0)
- [workflow package (source)](https://github.com/google/adk-go/tree/main/workflow)
- [workflowagents packages (source)](https://github.com/google/adk-go/tree/main/agent/workflowagents)
- [mcptoolset package (source)](https://github.com/google/adk-go/tree/main/tool/mcptoolset)
- [remoteagent package (source)](https://github.com/google/adk-go/tree/main/agent/remoteagent)
- [server/adka2a package (source)](https://github.com/google/adk-go/tree/main/server/adka2a)
- [session packages (source)](https://github.com/google/adk-go/tree/main/session)
- [model packages (source)](https://github.com/google/adk-go/tree/main/model)
- [ADK docs home](https://adk.dev/)
- [Go quickstart (docs)](https://adk.dev/get-started/go/)
- [Graph-based workflows (docs)](https://adk.dev/graphs/)
- [Human input in graphs (docs)](https://adk.dev/graphs/human-input/)
- [Collaborative agent teams (docs)](https://adk.dev/workflows/collaboration/)
- [Action confirmations (docs)](https://adk.dev/tools-custom/confirmation/)
- [A2A quickstart, exposing (Go)](https://adk.dev/a2a/quickstart-exposing-go/)
- [A2A quickstart, consuming (Go)](https://adk.dev/a2a/quickstart-consuming-go/)
- [Deploy to Agent Runtime (docs)](https://adk.dev/deploy/agent-runtime/)
- [Deploy to Cloud Run (docs)](https://adk.dev/deploy/cloud-run/)
- [AG-UI integration for ADK (docs)](https://adk.dev/integrations/ag-ui/)
- [AG-UI adk-middleware (AG-UI repository)](https://github.com/ag-ui-protocol/ag-ui/tree/main/integrations/adk-middleware)
- [Gemini Enterprise Agent Platform pricing](https://cloud.google.com/products/gemini-enterprise-agent-platform/pricing)

## Unknown fields

protocols.agui: the ADK AG-UI page's badge lists Go, but no Go-specific setup was found. Searched the adk-go README, a GitHub code search for 'ag-ui' / 'agui' (no hits), and the AG-UI repository's integrations/adk-middleware directory, which has only python and typescript packages.

Corrections or removal requests: support@multiagentguide.top

---

Data as of 2026-09-30. Not affiliated with listed projects. HTML version: https://multiagentguide.top/tools/google-adk-go
