Your First Agent
Install
Why Agent SDK for Go
- Idiomatic Go — functional options, typed interfaces, no reflection magic. Swap any component (LLM client, memory backend, approval policy) by passing a different option.
- Durable by default, no infrastructure — the in-process runtime journals every step via durable-go; kill the process and reconnect after a restart. Add
temporal.WithTemporalConfig(frompkg/agent/runtime/temporal) orrestate.WithRestateConfig(frompkg/agent/runtime/restate) only when you need horizontal scale or a client/worker split. Nothing else changes. - Concurrent by default — one
Agentinstance handles parallelRunandStreamcalls; every runtime issues each a unique run automatically. - Protocol-native integrations — MCP tool servers, A2A agent-to-agent delegation, and AG-UI streaming events are first-class, not adapters bolted on after the fact.
- Middleware hooks — intercept LLM calls, tool use, retrieval, and memory at any lifecycle point for logging, PII scrubbing, and guardrails without touching agent logic.
- Error control — after retries, swap to a fallback model, grant more iterations, or skip a looping tool. See Error Control.
- Cache-aware requests — LLM requests are structured for provider caching, with Anthropic prompt-cache breakpoints to reduce cost on multi-turn runs.
Runtimes
Run agents in-process — durable by default, no infrastructure — or add Temporal or Restate when you need horizontal scale or a client/worker split.
Add
temporal.WithTemporalConfig or restate.WithRestateConfig to switch. See Runtimes.
Start here
Quickstart
Your first agent, step by step — under 5 minutes
Architecture
How the agent loop maps to capabilities and runtimes