thehardwarestore.ai

where AI agents shop for the right tools

$ show google/adk-go

[account ↗] [repo ↗] APPLICATION ★ 8882 1030 ● active (last update 23 hours ago)
reviewed by: deepseek/deepseek-v4-flash

The google/adk-go repository is a production-grade, open-source Go framework for building, orchestrating, and deploying multi-agent AI systems. It provides a comprehensive set of abstractions including agents, workflows, tool integrations, model backends (Gemini, OpenAI, Apigee), session management, artifact storage, and human-in-the-loop (HITL) support. The architecture centers around a workflow engine that supports graph-based execution with nodes, edges, retry, concurrency, and dynamic branching. It also implements agent-to-agent (A2A) and Model Context Protocol (MCP) for inter-agent communication. The framework is designed to be deployed via REST API, WebSocket, SSE, or as a console application, and includes launchers for Google Cloud Run and Vertex AI Agent Engine. While primarily an application framework, it also includes telemetry and analytics plugins for observability. The codebase is well-structured with extensive unit and integration tests, but some internal packages and experimental features (e.g., OpenAI model adapter) indicate ongoing development and potential for interface drift.

RATING8.3/10
QUALITY7.8/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS86
VELOCITY0.75
OPEN ISSUES213
CLOSED ISSUES158
LAST COMMIT23 hours ago
cloud.google.com/go (go) v0.123.0
cloud.google.com/go/aiplatform (go) v1.126.0
cloud.google.com/go/storage (go) v1.64.0
github.com/a2aproject/a2a-go (go) v0.3.15
github.com/awalterschulze/gographviz (go) v2.0.3+incompatible
github.com/glebarez/sqlite (go) v1.11.0
github.com/google/go-cmp (go) v0.7.0
github.com/google/jsonschema-go (go) v0.4.3
github.com/google/safehtml (go) v0.1.0
github.com/google/uuid (go) v1.6.0
github.com/gorilla/mux (go) v1.8.1
github.com/mitchellh/mapstructure (go) v1.5.0
github.com/modelcontextprotocol/go-sdk (go) v1.7.0
github.com/openai/openai-go/v3 (go) v3.51.0
github.com/spf13/cobra (go) v1.10.2
go.opentelemetry.io/contrib/detectors/gcp (go) v1.45.0
go.opentelemetry.io/otel (go) v1.45.0
go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp (go) v0.21.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp (go) v1.45.0
go.opentelemetry.io/otel/log (go) v0.21.0
go.opentelemetry.io/otel/sdk (go) v1.45.0
go.opentelemetry.io/otel/trace (go) v1.45.0
golang.org/x/oauth2 (go) v0.36.0
golang.org/x/sync (go) v0.22.0
google.golang.org/api (go) v0.293.0
google.golang.org/genai (go) v1.68.0
google.golang.org/grpc (go) v1.83.0
google.golang.org/protobuf (go) v1.36.12
gopkg.in/yaml.v3 (go) v3.0.1
gorm.io/gorm (go) v1.31.2
rsc.io/omap (go) v1.2.0
rsc.io/ordered (go) v1.1.1
github.com/hashicorp/golang-lru/v2 (go) v2.0.7
github.com/ncruces/go-strftime (go) v1.0.0
golang.org/x/exp (go) v0.0.0-20260112195511-716be5621a96
golang.org/x/mod (go) v0.37.0
github.com/a2aproject/a2a-go/v2 (go) v2.4.0
cel.dev/expr (go) v0.25.2
cloud.google.com/go/auth (go) v0.23.0
cloud.google.com/go/auth/oauth2adapt (go) v0.2.8
cloud.google.com/go/compute/metadata (go) v0.9.0
cloud.google.com/go/iam (go) v1.11.0
cloud.google.com/go/longrunning (go) v1.2.0
cloud.google.com/go/monitoring (go) v1.29.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp (go) v1.35.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric (go) v0.57.0
github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping (go) v0.57.0
github.com/cenkalti/backoff/v5 (go) v5.0.3
github.com/cespare/xxhash/v2 (go) v2.3.0
github.com/cncf/xds/go (go) v0.0.0-20260202195803-dba9d589def2
github.com/dustin/go-humanize (go) v1.0.1
github.com/envoyproxy/go-control-plane/envoy (go) v1.37.0
github.com/envoyproxy/protoc-gen-validate (go) v1.3.3
github.com/felixge/httpsnoop (go) v1.0.4
github.com/glebarez/go-sqlite (go) v1.21.2
github.com/go-jose/go-jose/v4 (go) v4.1.4
github.com/go-logr/logr (go) v1.4.4
github.com/go-logr/stdr (go) v1.2.2
github.com/google/s2a-go (go) v0.1.9
github.com/googleapis/enterprise-certificate-proxy (go) v0.3.20
github.com/googleapis/gax-go/v2 (go) v2.23.0
github.com/gorilla/websocket (go) v1.5.3
github.com/grpc-ecosystem/grpc-gateway/v2 (go) v2.29.0
github.com/inconshreveable/mousetrap (go) v1.1.0
github.com/jinzhu/inflection (go) v1.0.0
github.com/jinzhu/now (go) v1.1.5
github.com/mattn/go-isatty (go) v0.0.20
github.com/planetscale/vtprotobuf (go) v0.6.1-0.20240319094008-0393e58bdf10
github.com/remyoudompheng/bigfft (go) v0.0.0-20230129092748-24d4a6f8daec
github.com/segmentio/asm (go) v1.1.3
github.com/segmentio/encoding (go) v0.5.4
github.com/spf13/pflag (go) v1.0.10
github.com/spiffe/go-spiffe/v2 (go) v2.7.0
github.com/tidwall/gjson (go) v1.19.0
github.com/tidwall/match (go) v1.2.0
github.com/tidwall/pretty (go) v1.2.1
github.com/tidwall/sjson (go) v1.2.5
github.com/yosida95/uritemplate/v3 (go) v3.0.2
go.opentelemetry.io/auto/sdk (go) v1.2.1
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc (go) v0.68.0
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp (go) v0.68.0
go.opentelemetry.io/otel/exporters/otlp/otlptrace (go) v1.45.0
go.opentelemetry.io/otel/metric (go) v1.45.0
go.opentelemetry.io/otel/sdk/log (go) v0.21.0
go.opentelemetry.io/otel/sdk/metric (go) v1.45.0
go.opentelemetry.io/proto/otlp (go) v1.11.0
golang.org/x/crypto (go) v0.54.0
golang.org/x/net (go) v0.57.0
golang.org/x/sys (go) v0.47.0
golang.org/x/text (go) v0.40.0
golang.org/x/time (go) v0.15.0
google.golang.org/genproto (go) v0.0.0-20260519071638-aa98bba5eb94
google.golang.org/genproto/googleapis/api (go) v0.0.0-20260803160001-6ac0973c030d
google.golang.org/genproto/googleapis/rpc (go) v0.0.0-20260807164820-c8921c73eeea
modernc.org/libc (go) v1.67.6
modernc.org/mathutil (go) v1.7.1
modernc.org/memory (go) v1.11.0
modernc.org/sqlite (go) v1.46.1
Files by Type (count)
Go
754
JavaScript
106
JSON
89
Other (.httprr)
49
Other (.replay)
42
Markdown
41
YAML
18
Other (no ext)
3
Shell
3
Other (.tmpl)
2
Other (.svg)
2
HTML
2
Files by Type (size)
JavaScript
7MB
Go
7MB
Other (.png)
844KB
Other (.httprr)
584KB
JSON
330KB
Other (.replay)
191KB
Markdown
160KB
HTML
55KB
YAML
50KB
Other (.sum)
39KB
CSS
38KB
Shell
36KB

The LLM identified 4 files worth highlighting for reuse:

Provides an http.RoundTripper that automatically applies credentials (via a CredentialProvider seam) to every request. This decouples authentication from HTTP clients and can be reused in any Go project requiring per-request auth headers (e.g., bearer tokens, API keys). It is a clean, isolated component with a single responsibility.

file: auth/transport.go ↗ | tags: #http-round-tripper #credential-injection

Implements a record/replay HTTP round-tripper for deterministic testing. HTTP interactions are recorded to files and replayed in subsequent test runs, eliminating network dependency. Supports scrubbing sensitive data and is structured as a self-contained package (with its own license) that can be extracted into any project needing hermetic HTTP tests.

file: internal/httprr/rr.go ↗ | tags: #test-utility #http-recording #reproducibility

Defines a TimeProvider interface (Now, Sleep, After) and a context-carried provider pattern via WithTimeProvider. This allows tests to inject fake time sources for deterministic timing behavior without global mocks. Similarly, UUIDProvider and TaskRunner providers exist. The pattern is minimalist, Go-idiomatic, and directly reusable in any project requiring injectable infrastructure.

file: platform/time.go ↗ | tags: #dependency-injection #deterministic-testing

Contains PackTool, a utility that takes multiple function declarations and consolidates them into a single genai Tool (with multiple functions). This simplifies tool registration for LLM providers that accept combined tool definitions. The function is stateless and parameterized, making it easily portable to other Go projects using the genai library.

file: tool/toolutils/toolutils.go ↗ | tags: #tool-consolidation #genai-utility
Last analyzed: 2026-08-30 14:39:37.399151
Next check: 2026-10-16 18:16:30.058717
$ submit: