#Go

Go is the primary implementation language across these projects, chosen for its compile-time safety, goroutine concurrency, and deployment simplicity. Posts tagged with Go cover idiomatic patterns, standard-library techniques, performance tuning, and real-world architecture decisions in production Go services.

168 posts tagged with go. ← All posts

A2A (5)ADK (8)AG-UI (7)AI Agents (232)AI Governance (5)Agent Skills (3)Agentic AI (13)Agents (4)Architecture (15)Azure (9)Azure AI Foundry (10)BigQuery (6)Checkpointing (5)Compliance (8)Concurrency (4)Context Providers (3)Conversation State (3)Cost Optimisation (3)Distributed Systems (3)Evaluation (4)FREE-AI (8)FinOps (5)FinTech (6)Function Tools (6)GCP (5)Go (168)Google ADK (26)Governance (5)Guardrails (3)HIPAA (3)Harness Engineering (8)Human-in-the-Loop (7)KYC (3)Kubernetes (6)LangGraph (11)Microsoft Agent Framework (21)MCP (5)Memory (5)Microsoft Agent Framework (188)Middleware (9)Multi-Agent (8)Multi-Agent AI (13)Multimodal (4)Observability (12)Open Source (6)OpenTelemetry (5)Opinion (6)Orchestration (15)Payments (4)Privacy Engineering (3)Providers (3)Python (126)RAG (6)RBI (3)Retrieval (3)SRE (3)Security (9)Sessions (4)Spanner (4)Streaming (4)Structured Output (4)Workflows (14)
Pratik Dhanave · ·7 min read

Human-in-the-Loop: An Approval Gate on Durable State

Lesson 7 of Harness Engineering in Go — a sensitive action pauses for a human decision, and the whole suspension is nothing more than a Lesson 2 checkpoint marked awaiting_approval.

Series finale, Lesson 7: a sensitive action pauses for human approval, where suspension is just a Lesson 2 checkpoint marked awaiting_approval, the deadline is checked first so a late yes is void, and the action must be idempotent.

Pratik Dhanave · ·7 min read

Hierarchical Supervision: Bounded Fan-Out, Ordered Fan-In, Fault Isolation

Lesson 6 of Harness Engineering in Go — a supervisor splits a task, fans out to concurrent workers behind a semaphore, and fans the results back in decomposition order, with each worker's failure (or panic) isolated to one result.

Lesson 6: bounded fan-out behind a semaphore, ordered fan-in via a pre-sized results slice, and per-worker fault isolation so one sub-agent panicking becomes one failed result instead of crashing the whole run.

Pratik Dhanave · ·6 min read

Advanced Memory: Threads, Keyword Retrieval, and Lossy Summarization

Lesson 4 of Harness Engineering in Go — three collaborating stores (a thread, a knowledge index, and a summarizer) behind interfaces, and an honest accounting of where each local stand-in leaks.

Lesson 4: memory is three stores, not one — an append-only thread, a keyword knowledge index, and a lossy first-and-last summarizer — and an honest account of where each local stand-in leaks against Azure.

Pratik Dhanave · ·7 min read

Secure Sandboxing: Running Agent-Written Code Behind a Timeout

Lesson 3 of Harness Engineering in Go — how a context deadline and `exec.CommandContext` reap a runaway snippet, why the two-shaped `Result` distinguishes a timeout from a failure, and the leak that makes a local subprocess a teaching tool, not a security boundary.

Lesson 3: run agent-written code behind a hard timeout with exec.CommandContext, distinguish OK from TimedOut, and face the leak — a subprocess is not a security boundary.

Pratik Dhanave · ·9 min read

Durable Execution: Checkpoint Every Step, Resume After a Crash

Lesson 2 of Harness Engineering in Go — a workflow that saves its progress after each step and picks up exactly where it died, proven by a test that kills a real subprocess mid-run.

Lesson 2: a workflow that checkpoints after every step and resumes from the last one after a crash, why at-least-once execution forces idempotent steps, and the atomic-rename store that survives a killed process.

Pratik Dhanave · ·7 min read

The Agent Harness: guardrails as middleware around the model

Lesson 1 of Harness Engineering in Go — why the input guardrail is a hard block, not a warning, and how a plain `net/http` handler wraps the model call so it tests without a running server.

Lesson 1: why the input guardrail is a hard block rather than flag-and-pass, why it counts runes instead of bytes, and how a plain net/http handler wraps the (stubbed) model call so it tests with httptest.

Pratik Dhanave · ·2 min read

AG-UI State Management: The Server

The final lesson: a recipe agent whose JSON replies are turned into trackable state snapshots by a middleware, so the client can render the recipe as it evolves.

The server side of AG-UI state management: middleware emits a DataContent state snapshot from the model's JSON so the client can adopt shared state across turns.

Pratik Dhanave · ·6 min read

Harness Engineering in Go: build the harness, then let Azure supply it

Seven patterns that turn a bare model call into production agent infrastructure — each written first as offline Go behind an interface, so the leap to Azure is a swap, not a rewrite.

Seven patterns that turn a bare model call into production agent infrastructure, each written first as offline Go behind an interface (the seam) so the leap to Azure is a swap, not a rewrite.

Pratik Dhanave · ·6 min read

Grounding & RAG in ADK: Answers Anchored in Real Data

Post 18 of 26 in "Google ADK, Concept by Concept" — retrieval tools, grounding metadata, rendering citations, and the retrieve→augment→generate loop.

Grounding answers in real data: retrieval tools, grounding metadata returned with responses, rendering citations from that metadata, and the retrieve-augment-generate RAG pattern in ADK.

Pratik Dhanave · ·2 min read

A2A Server

This lesson hosts one specialized Foundry agent over the A2A protocol, publishing an agent card the client can discover.

Host one Foundry agent over A2A: newMux pins the card interface URL, wraps the agent in an a2aprovider executor, and serves the card plus JSON-RPC routes.

Pratik Dhanave · ·2 min read

A2A Client

This lesson builds a Foundry host agent that discovers remote A2A agents by their cards and calls each one as a tool.

A Foundry host agent resolves remote A2A agent cards and turns each remote agent into a callable tool with agenttool.New over the a2aprovider.

Pratik Dhanave · ·5 min read

Callbacks in Google ADK: Six Hooks and One Rule

before/after the agent, model, and tool steps — and the single short-circuit rule that turns them into guardrails

Callbacks are lifecycle hooks around the agent, model, and tool steps — before/after each — used for guardrails (short-circuit by returning a response), logging, and mutating requests and responses.

Pratik Dhanave · ·5 min read

Artifacts: Where ADK Agents Put Their Files

Session state is for small text and JSON. When your agent produces a PNG, a PDF, or a WAV, it belongs in the artifact store — binary-native, versioned, and out of the session record.

Artifacts are binary/file data agents produce or consume: ArtifactService saves and versions named artifacts, loaded and saved via context, keeping large blobs out of session state.

Pratik Dhanave · ·2 min read

03 · Agent Workflow Patterns (sequential · concurrent · group chat)

This lesson teaches that orchestration is a property of the workflow, not the agents — the same three agents drop into three different built-in graph shapes.

The same three agents dropped into three built-in agentworkflow builders — sequential, concurrent, and round-robin group chat — showing orchestration is a property of the graph, not the agents.

Pratik Dhanave · ·2 min read

step03 · Mixed Skills

Compose three kinds of Agent Skill — code-defined, struct-based, and file-based — into a single agent through one skills context provider.

One skills ContextProvider blending three origins: in-memory volume and temperature skills plus a file-based unit-converter, unified behind one tool surface for the model.

Pratik Dhanave · ·2 min read

Frontend Tools

How the server-hosted agent can call a tool that actually runs on the client, and the one flag that makes it work.

Let a server-hosted agent call a client-side tool over AG-UI — the server sets DisableFuncAutoCall and forwards the call to the client, which runs the Go function locally.

Pratik Dhanave · ·2 min read

Backend Tools

How an AG-UI-hosted agent runs a server-side function tool while the thin client just streams the conversation.

Give an AG-UI-hosted agent a server-side search_restaurants tool via functool while the thin SSE client just streams the reply — the tool round-trip stays invisible.

Pratik Dhanave · ·2 min read

05 · First Workflow

The other primitive: a directed graph of executors wired by edges, running fully offline with no model, no credential, no Foundry.

Wire two executors into an uppercase to reverse pipeline with the fluent workflow builder and run it fully offline via inproc.Default, iterating ExecutorCompletedEvents.

Pratik Dhanave · ·2 min read

04 · Memory

A custom ContextProvider gives the agent memory: it reads stored facts before a run and learns new ones after — all through the Session.

A custom ContextProvider wires Provide and Store hooks around every run so the agent reads remembered facts before the call and learns new ones after, all in the Session.

Pratik Dhanave · ·2 min read

02 · Add Tools

Hand the agent a plain Go function it can decide to call mid-conversation — the model requests it, the framework runs it, the result flows back.

Register a plain Go function as a tool with functool.MustNew; the model decides when to call it, the framework runs it, and the result flows back into the answer.

Pratik Dhanave · ·2 min read

01 · Hello Agent

The smallest useful agent: give a model instructions and a name, hand it a message, get a response — collected or streamed.

Build the smallest useful agent from instructions and a model, then run the same RunText call two ways — collected all at once and streamed token-by-token.

All posts on this site are written by Pratik Dhanave, an Agentic AI Architect with 7+ years building production distributed systems, multi-agent AI platforms, and cloud-native infrastructure. About the author → Each article includes working code, architecture diagrams, and references to the specific frameworks and standards discussed. Browse all posts or explore related topics using the tag cloud above.