All 275 articles, sorted alphabetically
ADK Java 1.12.0: Experimental Workflow Graphs Where Every Agent Is a Node, a Gemini Context Cache Manager, Injectable Clocks and Schedulers, and Two Ordering Fixes
ADK Java 1.12.0 (14 October 2026), read from its commits: experimental Workflow, Node and Edge types with every agent now a node, a context cache manager that finally creates Gemini caches, injectable schedulers, a switch against config-supplied stdio MCP servers, and two ordering fixes.
Read article →Verifying Agent Identity in A2A, in depth: signed Agent Cards in Java, binding the card to the endpoint, authenticating callers, and key rotation
How to verify A2A agent identity in an ADK Java deployment: the three identity questions, a Java verifier for JWS-signed Agent Cards with presence-rul…
Read article →A2A Authentication Patterns, in depth: security schemes, credentials on RemoteA2AAgent, server validation, user delegation and push notifications
Authenticate agent-to-agent calls in ADK Java: A2A 0.3 versus 1.0 field names, declaring security schemes in the Agent Card, AuthInterceptor and the n…
Read article →Backpressure Signals Across A2A Agents in ADK Java, in depth: what an overloaded agent can say, where the caller hears it, adaptive limits, deadlines and retry budgets
How overload travels between ADK Java agents over A2A: what the specification does and does not provide (Retry-After guidance, no capacity field), whi…
Read article →A2A Client Streaming Recipe, in depth: consuming message/stream in Java, reassembling artifacts, detecting the end, resubscribing after drops and cancelling
A client-side recipe for A2A streaming in Java with the a2a-java SDK used by ADK: the SSE event kinds, building the client, a consumer that tracks tas…
Read article →A2A Error Propagation in ADK Java, in depth: the three client-side failure channels, the error_id on FAILED tasks, server callbacks and making the orchestrator act on remote failures
How failures cross an A2A boundary in ADK Java: AgentCardResolutionError at build time, A2AClientError through the Flowable, remote FAILED tasks arriv…
Read article →ADK Java + A2A, in depth: exposing an ADK agent with AgentExecutor, consuming one with RemoteA2AAgent, the agent card contract, streaming, timeouts, dependency traps and production operation
How the Java Agent Development Kit integrates with the Agent2Agent protocol: the google-adk-a2a module, exposing an agent through AgentExecutor and th…
Read article →Load Balancing Downstream A2A Agents, in depth: where task state lives, route keys, consistent hashing, shared stores and least-request picking
How to spread calls across replicas of a downstream A2A agent from ADK Java without losing sessions or tasks: the state an A2A server keeps, why HTTP/…
Read article →A2A Multi-Region Agent Topology, in depth: task ownership, owner routing, Agent Cards, cross-region push and region loss
How to run A2A agents across regions: why server-generated task IDs give tasks one owning region, routing GetTask and SubscribeToTask to the owner wit…
Read article →Exposing an ADK Java Agent Over A2A, in depth: inside AgentExecutor, context-to-session mapping, caller identity, replicas and cancel
What happens inside ADK Java's A2A AgentExecutor once the wiring works: the execute lifecycle, how contextId becomes the ADK user and session, a …
Read article →A2A over HTTP in ADK Java, in depth: the wire format, HTTP 200 errors, the A2AHttpClient seam, timeouts, interceptors and streaming through proxies
The HTTP layer under RemoteA2AAgent in ADK Java: JSON-RPC and SSE on the wire, why protocol errors arrive as HTTP 200, what JdkA2AHttpClient does not …
Read article →A/B Testing Agent Variants in ADK Java, in depth: experiment design, user-level assignment in session state, exposure logging with callbacks, sizing, SRM checks and delta-method analysis
How to A/B test ADK Java agent variants on live traffic: canary versus experiment, hypothesis and guardrail metrics, salted SHA-256 assignment stored …
Read article →ADK Java Accessibility, in depth: accessible agent output with instructions, user-scoped profiles, an afterModelCallback that repairs responses, and an accessible client
How to make ADK Java agents usable with screen readers, voice and plain-language needs: WCAG 2.2 criteria mapped to agent behaviour, accessible-by-def…
Read article →Agent A/B Testing in ADK Java, in depth: running the experiment with per-arm runners, pinned sessions, monotone ramps, interference checks and guardrail auto-stop
Operate an online A/B test of ADK Java agents: variant specs with one Runner per arm on a shared session service, arms pinned in session state, monoto…
Read article →Agent Alerting in ADK Java, in depth: event alerts from a plugin, the Alertmanager push contract, grouping, inhibition and tested rules
Alerting for ADK Java agent fleets: when to use rate rules versus event alerts, an AlertingPlugin that detects repeated write tools and LLM-call caps,…
Read article →Agent Blue/Green Deploy, in depth: colouring the knowledge index, memory and tool servers along with the ADK Java agent
Blue/green for a retrieval agent's data plane in ADK Java: a per-release binding of code to its embedding space, a startup pairing guard, buildin…
Read article →Agent Calendar Tool, in depth: rescheduling, recurring series and concurrent edits for an ADK Java scheduling agent
Changing existing Google Calendar events safely from an ADK Java agent: recurring-series identity with recurringEventId and originalStartTime, handles…
Read article →Agent Canary Deployment, in depth: canarying an A2A-served ADK Java agent with card diffs, conversation cohorts, task-outcome analysis and safe rollback
How to canary an ADK Java agent that other agents call over A2A: diffing agent cards as a gate, routing whole conversations with a cohort header and I…
Read article →Agent CI/CD, in depth: fingerprinting an ADK Java agent, diffing it against production, change-aware gate plans, and triggers that are not commits
Change-aware CI/CD for ADK Java agents: the six surfaces that change agent behaviour, fingerprinting tool declarations and prompts as the model sees t…
Read article →Agent Code Execution Tool, in depth: the ADK Java CodeExecution loop, choosing an executor, the error budget and failure modes
How code execution works in ADK Java 1.11.0: the CodeExecution post-processor, BuiltInCodeExecutor, ContainerCodeExecutor and VertexAiCodeExecutor com…
Read article →Agent Cost Tracking in ADK Java, in depth: costing whole runs across sub-agents, AgentTool child runs, tools and steps, with in-flight budgets and cost per outcome
Track what an ADK Java agent run really costs: why multi-step runs grow quadratically, attributing spend across sub-agents, the AgentTool plugin blind…
Read article →Agent Dashboards, in depth: invocation summaries, behaviour panels and a session timeline drill-down for ADK Java
Build agent behaviour dashboards for ADK Java: a plugin that turns events into per-invocation summary and step rows, SQL for outcome, loop, transfer a…
Read article →Agent Database Tool, in depth: safe relational database access for ADK Java agents with JDBC tools, database-side guards and confirmed writes
Build a database tool for an ADK Java agent: named query tools versus free-form SQL, a read-only PostgreSQL role with statement timeouts and row-level…
Read article →Agent Deploy Pipeline, in depth: dark revisions, real-turn smoke tests, verdict-driven ramps and rollback for ADK Java on Cloud Run
The deploy stage of an ADK Java agent as a state machine on Cloud Run: pinned inputs, the first-deploy bootstrap and the --no-traffic LATEST trap, a J…
Read article →Agent Email Tool in ADK Java, in depth: email as an inbound channel, with thread-to-session mapping, loop and bounce suppression, sender checks and in-thread replies
Run an ADK Java agent over inbound email: dedupe redelivered messages on Message-ID, screen auto-replies and bounces per RFC 3834, trust only your own…
Read article →Agent Episodic Memory in ADK Java, in depth: episodes as structured precedent, mined from events and recalled through BaseMemoryService
Build episodic memory for an ADK Java agent: an episode record of goal, tool trace, outcome and lesson mined from session events, a BaseMemoryService …
Read article →Agent Evaluation Datasets, in depth: labelling protocols, inter-rater agreement, synthetic variants, leakage checks and tool migrations for ADK Java
How to make ADK Java eval rows trustworthy: a four-field label, blind double labelling with Cohen's kappa per slice, synthetic variants that are …
Read article →Agent File System for ADK Java, in depth: per-session workspaces, artifact snapshots, quotas, OS confinement and an MCP filesystem server
The file system underneath ADK Java file tools: reference, scratch and deliverable files, workspaces keyed from the tool context, snapshots to the art…
Read article →Production Agent Architecture: The Full Stack in Depth
A 2500-word walkthrough of a production agent runtime: UI, auth, planner, memory, tool router, policy, observability, and the tool ecosystem underneat…
Read article →Agent Hooks and the Middleware Pattern in ADK Java, in depth: callbacks, plugins and how they really compose
How ADK for Java's callbacks and plugins compose, read from the source: hook points and signatures, first-non-empty-wins chains, plugin precedenc…
Read article →Agent Hotfix, in depth: choosing the smallest fix layer, proving it against recorded sessions and forward-porting it in ADK Java
How to hotfix an ADK Java agent: when a hotfix beats rollback or a kill switch, a fix ladder ranked by blast radius, reproducing failures from recorde…
Read article →Agent Human Evaluation, in depth: rubrics, blind pairwise rating, inter-rater agreement and judge calibration for ADK Java agents
Running human evaluation for ADK Java agents: when humans are worth it, rubric design, exporting redacted cases from the session store, blind pairwise…
Read article →Agent Inspection API for Ops + Support, in depth: a read-only, redacted, audited view of ADK Java sessions, events, state and traces
How to build an inspection API for ADK Java agents that support and operations teams can use safely: the questions it must answer, what BaseSessionSer…
Read article →Agent Integration Testing for ADK Java, in depth: a real runner and session store, fake downstream services, state, plugins and agent transfer
How to integration-test ADK Java agents: a Runner built like production with a scripted model, a JDK HttpServer fake for downstream faults, ToolContex…
Read article →Agent LLM-as-Judge, in depth: judging ADK Java trajectories, first-error attribution and pairwise comparison
Judge the process, not only the answer: render ADK Java session events as numbered steps, run rule checks, have a schema-bound judge label steps and n…
Read article →Agent Structured Logging, in depth: what ADK Java logs by itself, LoggingPlugin, JSON lines, the java.util.logging gap and a structured log plugin
Structured logging for ADK Java agents: what google-adk 1.11.0 logs through SLF4J and java.util.logging, what LoggingPlugin is for, a JSON line schema…
Read article →Agent Maps Tool, in depth: GoogleMapsTool grounding in ADK Java, user location, routing, map sources and a Places function tool
Maps tools for ADK Java agents: what GoogleMapsTool sends in 1.11.0, passing rounded user location through toolConfig, a routing-enabled grounding too…
Read article →ADK Java Agent Marketplace Patterns, in depth: listings, admission pipelines, per-request discovery, trust tiers and lifecycle
How to run an internal marketplace of A2A agents for ADK Java orchestrators: listings that wrap agent cards with governance metadata, digest pinning a…
Read article →Agent Memory Compression, in depth: what an ADK Java agent may forget, compressing at the source, summary drift and measuring fact retention
Memory compression for ADK Java agents: measure where prompt tokens come from, trim and offload at the source, what 1.11.0 event compaction really doe…
Read article →Agent Memory Forgetting, in depth: forgetting one item on purpose in ADK Java, with tombstones, re-ingest filters, session redaction and confidence decay
Correctness-driven forgetting for ADK Java agents: why BaseMemoryService has no delete, how re-adding a session resurrects deleted memories, a confirm…
Read article →Agent Memory Hierarchy, in depth: ADK Java memory as a cache, from the context window to user state, the memory service and the archive
Designing agent memory as a hierarchy in ADK Java: five tiers from the context window to cold archives, per-tier token budgets, a before-model callbac…
Read article →Agent Payment Tool, in depth: server-side quotes, confirmed charges, an UNKNOWN-aware ledger and idempotent retries in ADK Java
Building a payment tool for an ADK Java agent: quote and pay tools that keep amounts and cards out of the model's reach, ADK tool confirmation wi…
Read article →Agent Procedural Memory, in depth: a reviewed procedure library mined from successful sessions and served through Instruction.Provider in ADK Java
How to give an ADK Java agent procedural memory without letting conversations rewrite its behaviour: versioned procedure records, mining tool-call ske…
Read article →Agent Progressive Rollout for ADK Java, in depth: audience rings, autonomy levels, a per-session gate plugin and evidence-based stage exits
Rolling out an ADK Java agent with write tools along two axes, audience rings and autonomy levels (observe, suggest, confirm, act), enforced per sessi…
Read article →Agent Prompt Logging, in depth: capturing the exact request every ADK Java model call sent, content-addressed, fingerprinted and replayable
Request-side prompt logging for ADK Java agents: what LoggingPlugin records and omits, capturing the assembled LlmRequest in a plugin's beforeMod…
Read article →Agent Red-Team Testing in ADK Java, in depth: threat model, attack corpus, deterministic and live tiers, scoring and CI gates
A repeatable red-team programme for ADK Java agents: assets and entry points, an attack taxonomy with mechanical oracles, a JSONL corpus with canaries…
Read article →Agent Registry Design in ADK Java, in depth: factories instead of instances, tree-wide names, cached remote cards and one source for runner, dev UI and YAML
Design an agent registry for ADK Java around how the framework really behaves: sibling-only name checks, first-match transfer lookup, overwritten pare…
Read article →Agent Regression Testing, in depth: incident-driven cases, scripted-model tests, change-triggered live trials and statistical verdicts for ADK Java
How to build a regression suite for ADK Java agents that a team can trust: cases sourced from incidents, a scripted BaseLlm for deterministic tests, r…
Read article →The Agent Release Train for ADK Java, in depth: a fixed timetable, the cut and frozen manifest, cars and boarding rules, gates, the hotfix lane and missed-train policy
How to run a release train for an agent built with Google's ADK for Java: why agents suit a fixed timetable, a cut script that freezes model iden…
Read article →Request hedging for ADK-Java agents
Deep-dive on request hedging (backup requests) in an ADK-Java agent: issue a duplicate to an independent replica when the primary misses a delay tuned…
Read article →Agent Rollback, in depth: what a revert can and cannot undo in an ADK Java agent, from prompts and tools to state, memory and side effects
Roll back an ADK Java agent as an incident decision: the parts of an agent that version independently and the lever for each, the N-1 rule for session…
Read article →Agent Search Tool, in depth: a provider-neutral web search FunctionTool for ADK Java with query hygiene, tenant quotas, untrusted results and citations
Build a web search tool for an ADK Java agent you can ship: when to own it instead of model grounding, the provider landscape after the Bing retiremen…
Read article →Secrets Management for ADK Java Agents, in depth: keeping credentials out of the model's context
How to manage secrets in Google ADK Java agents: the model-visible versus credential plane, Vertex AI with ADC instead of API keys, a cached Secret Ma…
Read article →Agent Semantic Memory, in depth: extracting facts from ADK Java sessions, canonical keys, supersession and provenance behind BaseMemoryService
Semantic memory for ADK Java agents: what BaseMemoryService and MemoryEntry give you in 1.11.0, a fact schema with status and provenance, quote-checke…
Read article →Agent Shadow Deployment for ADK Java, in depth: mirrored turns, forked sessions, tool quarantine, recorded reads and divergence scoring
Shadowing a candidate ADK Java agent on production traffic: capturing turn records, forking history into a separate session store, a quarantine plugin…
Read article →Agent Shadow Testing, in depth: running a candidate model or tool beside production inside one ADK Java call, and deciding from paired results
Component-level shadow testing for ADK Java agents: a BaseLlm wrapper that sends the identical LlmRequest to a candidate model and never returns its a…
Read article →Agent Shell Execution Tool, in depth: a ProcessBuilder FunctionTool for ADK Java with an operation allowlist, deadlock-free capture, process-tree timeouts and confirmation
Building a shell execution tool for ADK Java agents: why there is no built-in one in 1.11.0, an operation allowlist instead of sh -c, argument and pat…
Read article →Agent Smoke Testing, in depth: wiring, dependency and live-turn smoke checks for ADK Java agents that assert on events instead of prose
A layered smoke suite for ADK Java agents: a no-model wiring test over canonicalTools, read-only dependency probes, one live turn asserted on function…
Read article →Agent Synthetic Monitoring, in depth: scheduled probe conversations, sandboxed side effects and layered event-stream assertions for ADK Java agents
How to run synthetic monitoring for an ADK Java agent: declarative probe conversations with transport, protocol, trajectory and content assertions, a …
Read article →Agent Telemetry Events for Analytics, in depth: the BigQuery Agent Analytics event model in ADK Java, defaults, drops, privacy and product queries
Telemetry events for analytics in ADK Java 1.11.0: the lifecycle event model BigQueryAgentAnalyticsPlugin writes, every builder default and how to cha…
Read article →Agent Tenant Analytics, in depth: a content-free event plugin, daily tenant facts, an explainable health score and safe cohort benchmarks in ADK Java
Product and customer-success analytics for a multi-tenant ADK Java agent: an event schema with no conversation content, a plugin that emits turn event…
Read article →Agent Tenant Billing in ADK Java, in depth: deterministic usage events, versioned rating, period close and reconciliation
How to bill tenants for ADK for Java agents: a metering plugin with deterministic event ids, trusted tenant identity, a versioned price book and ratin…
Read article →Agent Tenant Config in ADK Java, in depth: a typed, versioned per-tenant record and where it is applied
Per-tenant configuration for ADK for Java agents: what belongs in the record, a validated Java record and JSON form, trusted tenant identity, build-ti…
Read article →Agent Tenant Data Separation, in depth: what ADK Java keys data on, the app: state trap, per-tenant app names, guard decorators, side channels and canary tests
How to keep tenants' data apart in an ADK Java agent: the appName, userId and sessionId keys used by the session, artifact and memory services, w…
Read article →Agent Tenant Isolation, in depth: runtime, authority and fault isolation for multi-tenant ADK Java agents
Isolating tenants beyond data in ADK Java: pooled, bridge and silo tiers, a per-tenant runtime registry, admission with per-tenant bulkheads and rate …
Read article →Agent Tenant Migration, in depth: moving one tenant's ADK Java sessions, artifacts and memory with a drain fence, replay copy and fingerprint verification
How to move a tenant between stores in ADK Java: what listSessions, createSession, appendEvent and saveArtifact actually do, a router with an incremen…
Read article →Agent Tenant Offboarding, in depth: a reversible lifecycle, a directory-driven purge for ADK Java, crypto-shredding and a deletion receipt
Offboarding a tenant from an ADK Java agent platform: suspension, export and drain states, what BaseSessionService, BaseArtifactService and BaseMemory…
Read article →Agent Tenant Onboarding, in depth: a resumable provisioning lifecycle, per-tenant runners, a day-one data key and a smoke run that gates activation
Onboarding a tenant onto ADK Java agents as an idempotent state machine: reserving the application name that is ADK's only isolation boundary, cr…
Read article →Agent Tenant Scaling, in depth: bounded runner caches, cells, quota arithmetic, fair-share allocation and moving hot tenants in ADK Java
Scaling a multi-tenant ADK Java agent platform from hundreds to thousands of tenants: a bounded runner cache and safe eviction, cells and a versioned …
Read article →Agent Tenant SLA, in depth: per-tenant availability, outcome classification in ADK Java, exclusions, credit maths and the monthly report
Contract-grade SLAs for a multi-tenant ADK Java agent platform: how they differ from SLOs, what an agent SLA can promise, a run-outcome plugin, minute…
Read article →Agent Traffic Shifting, in depth: where weights live, sessions and streams, served-share lag, target quota and a guarded shift controller for ADK Java
Shifting live agent traffic between releases, models, regions or providers in ADK Java: DNS, Cloud Run, Gateway API and in-app weights, why turns must…
Read article →Agent Unit Testing, in depth: pure tool cores, callback decisions, golden declarations and scripted runner tests for ADK Java
How to unit test an ADK Java agent's deterministic parts: split tools into pure cores and thin adapters, test callbacks as functions over name, a…
Read article →Agent User Analytics, in depth: retention, task success and friction for ADK Java agents with BigQueryAgentAnalyticsPlugin
Per-user product analytics for ADK Java agents: what the BigQueryAgentAnalyticsPlugin in google-adk 1.11.0 records and what its defaults log, a conten…
Read article →Agent Web Browsing Tool, in depth: UrlContextTool, ComputerUseToolset and a BaseComputer you write yourself in ADK Java
How an ADK Java agent reads the web: when to use UrlContextTool, a custom fetch tool or ComputerUseToolset, what each does according to the 1.11.0 byt…
Read article →Agent Working Memory, in depth: a bounded, typed task scratchpad in ADK Java session state, written by tools and rendered into the instruction
How to give an ADK Java agent explicit working memory: the State, ToolContext, temp: and instruction-placeholder mechanics verified in 1.11.0, a versi…
Read article →ADK Java artifacts
ADK Java artifacts in depth: the BaseArtifactService contract, session and user: scopes, GCS layout, saving from tools, LoadArtifactsTool, uploads, th…
Read article →Running ADK Java Tools Asynchronously with CompletableFuture, in depth: bridging futures to Single, executors, fan-out, timeouts, cancellation and tests
How to run ADK Java function tools asynchronously when your clients return CompletableFuture: why FunctionTool recognises only Maybe and Single, bridg…
Read article →ADK Java Audit Logging, in depth: a tamper-evident record of every model call, tool call and decision, built as a plugin
How to build a real audit trail for ADK Java agents: why session events and traces are not one, what to record, an audit plugin on the verified Plugin…
Read article →Authorization at the Agent Boundary
Enforce access control before the LLM runs: middleware interceptors, policy-as-config, deny-by-default, and the boundary's limits when agent-to-a…
Read article →The BaseLLM Interface in ADK Java, in depth: what the runtime calls, when, and what it relies on
A runtime-side reference to BaseLlm in the Agent Development Kit for Java: the abstract class and its three members, model resolution through LlmRegis…
Read article →ADK Java + BigQuery, in depth: schema discovery, parameterised metric tools, data-level security and agent analytics
Connect an ADK Java agent to BigQuery in both directions: discovery and parameterised query tools, authorized views and row access policies, the BigQu…
Read article →ADK Java Blue-Green Deployment, in depth: the switch, verifying the idle colour, two-way session compatibility and the rollback window
Blue-green deployment for ADK Java agent services: Cloud Run tags and Kubernetes selectors, golden and continuation verification, two-way session comp…
Read article →ADK Java bulkhead isolation architecture
Deep-dive on bulkhead isolation in ADK Java agents: dependency-scoped thread-pool and semaphore compartments, virtual-thread economics, composition wi…
Read article →ADK Java + Calendar, in depth: free/busy search, confirmed bookings, idempotent event IDs and least-privilege scopes for a scheduling agent
Build a Google Calendar scheduling capability for an ADK Java agent: separate read, propose and book tools, java.time DST handling, free/busy errors, …
Read article →ADK Java callback architecture
Deep-dive on ADK Java callbacks: beforeAgent/afterAgent, beforeModel/afterModel, beforeTool/afterTool, short-circuit semantics, callback chains, injec…
Read article →ADK Java Canary Deployment, in depth: session-pinned routing, in-process agent variants, per-session metrics, sample sizes and a rollback controller
How to canary an ADK Java agent: why agents break request-level canaries, infrastructure versus in-process variants, a router that assigns sessions on…
Read article →Cancellation and Resumption Semantics in ADK Java, in depth: disposing runs, what is persisted, cancellable tools, cooperative stops and resumable pauses
How cancellation and resumption work in ADK Java v1.11.0: cold Flowable runs and disposal, persist-before-emit ordering and what a cancel loses, per-s…
Read article →ADK Java CI, in depth: deterministic agent tests with a scripted model, boot and contract tests, and a statistically gated live eval
How to build continuous integration for an ADK Java agent: a three-lane pipeline, the -parameters compiler flag, tool unit tests, deterministic agent …
Read article →CI/CD Pipeline for ADK Java, in depth: a release manifest for agents, build once, staged evaluation, session-sticky canaries and rollback
Delivering ADK Java agents safely: what an agent release contains, pinning instructions, model ids and tool schemas in a release manifest, reproducibl…
Read article →ADK Java circuit breaker architecture
Deep-dive on the circuit breaker pattern in an ADK Java agent: a three-state machine (CLOSED, OPEN, HALF-OPEN) around one dependency, a sliding window…
Read article →Deploying ADK Java to Google Cloud Run, in depth: the documented route, a production server around Runner, sessions, identity, concurrency and shutdown
A practical guide to running Agent Development Kit for Java agents on Cloud Run: the documented gcloud and AdkWebServer route, a production HTTP serve…
Read article →Configuration Layering and Precedence in ADK Java, in depth: client credential rules, agent-tree inheritance, layered resolvers with provenance, and per-call overrides
How configuration values are resolved in an ADK Java service: the google-genai client's backend and credential precedence, why sub-agents inherit…
Read article →Config + Secrets Manager Integration, in depth: secret references as a config layer, a redacting Secret type, Spring sm@ and safe rotation for ADK Java
How to integrate Google Secret Manager into ADK Java configuration: secret references instead of values, a redacting Secret type, a parallel resolver …
Read article →Configuration Validation at Startup, in depth: collect-all errors, cross-field rules, agent-tree checks and bounded probes for ADK Java
Validate ADK Java agent configuration before the process reports ready: typed parsing with an error accumulator, Gemini API versus Vertex AI cross-fie…
Read article →Configuring Gemini Models in ADK Java, in depth: model resolution, GenerateContentConfig field by field, thinking budgets and the fields ADK owns
How to configure Gemini models for ADK Java agents: string versus instance models and LlmRegistry, typed GenerateContentConfig fields, thinking budget…
Read article →Content Moderation Pipeline for ADK Java, in depth: a versioned policy, three checkpoints, tiered detectors, human review and measured precision
Building a content moderation pipeline around an ADK Java agent: policy as versioned data, input, tool-result and output checkpoints as plugin hooks, …
Read article →ADK Java Context Compression, in depth
Context compression in ADK Java in depth: EventsCompactionConfig, sliding-window and tail-retention compactors, BaseEventSummarizer and LlmEventSummar…
Read article →Continuous Evaluation in Production, in depth: capturing ADK Java turns off the hot path, stratified judging, per-slice intervals and harvesting failures
Score an ADK Java agent on live traffic: wrap the runner to capture redacted turn records, run census checks on every turn and a rubric judge on a wei…
Read article →ADK Java Core Module
What ships in the ADK Java core module and how the pieces compose: the agent abstraction and lifecycle, Runner and session state, the event stream, th…
Read article →Cost Attribution Per Agent + Per User, in depth: agent trees, the AgentTool blind spot, shared-cost pools and a ledger that sums to the bill in ADK Java
Attributing LLM and tool spend by agent, user and tenant in ADK Java: which calls a Runner plugin sees, why AgentTool sub-agents are invisible by defa…
Read article →Cross-Session Memory in ADK Java, in depth: user-scoped state, the memory write path and what a new session should know
How knowledge crosses session boundaries in ADK Java: user: and app: prefixed state versus BaseMemoryService, why the Runner never calls addSessionToM…
Read article →Dataset-Driven Evaluation Pipelines in ADK Java, in depth: versioned datasets, stratified runs, confidence intervals and paired comparison
Build a dataset-driven evaluation pipeline for ADK Java agents: hashed JSONL datasets with slices and holdout splits, stratified sampling, bounded-con…
Read article →ADK-Java dead-letter queue architecture
Deep-dive on dead-letter queues for ADK-Java agent pipelines: bounded retries and the attempt counter, the DLQ router and failure metadata, head-of-li…
Read article →Debugging Hallucinations in ADK Java Agents, in depth: flight-recorder callbacks, tape replay, a root-cause classifier and fixes by layer
A root-cause workflow for agent hallucinations in google-adk 1.10.1: record model requests, responses and tool calls with callbacks, replay turns from…
Read article →Debugging Production ADK Java Issues, in depth: symptom-first triage from spans to the event log to the JVM
A triage method for non-semantic ADK for Java production failures: hung and runaway invocations, vanished errors, state that does not persist and slow…
Read article →ADK Java Dependency Injection, in depth: instance tools, a composition root, lifetimes and session state, Spring and Guice wiring and testable agents
How to apply dependency injection to Google ADK for Java: instance FunctionTools that carry injected collaborators, a plain-Java composition root that…
Read article →ADK Java deployment -- packaging, sessions, virtual threads, JVM tuning
Deep-dive on deploying ADK Java agents: JAR/container packaging, Cloud Run/GKE/VM targets, externalized config and secrets, durable session backends f…
Read article →Distributed Tracing Across A2A Agent Calls, in depth: carrying trace context from an ADK Java orchestrator into a remote agent, thread hops, streaming spans, sampling and a test that proves the link
Joining traces across A2A calls between ADK Java agents: the traceparent header, a2a-java's OpenTelemetry client tracing and propagation extras, …
Read article →Docker-Packaging ADK Java Agents, in depth: layer order, a jlink runtime on distroless, Jib, JVM memory in containers and the AOT cache
Engineer the container image for an ADK Java agent: layer ordering and caching, a multi-stage Dockerfile with jdeps and jlink on distroless, Jib as an…
Read article →Dynamic Agent Discovery Patterns, in depth: A2A card caching, capability matching and snapshot-versioned agent trees in ADK Java
How to discover A2A agents at run time in ADK Java: discovery sources, an HTTP-correct card cache, skill and mode matching, snapshot digests, session-…
Read article →ADK Java Dynamic Configuration Reload, in depth: snapshots, atomic swaps and pinned invocations
Hot-reloading ADK Java agent configuration safely: classifying settings, immutable versioned snapshots, rebuilding LlmAgent and Runner with shared ses…
Read article →Edge Deployment on Cloudflare Workers for ADK Java, in depth: why the JVM cannot run in a Worker, Cloudflare Containers, sharded routing, external sessions and cold starts
How to put an ADK Java agent behind Cloudflare's edge: Workers run V8 isolates so the JVM goes in a Cloudflare Container, with an SSE server, Con…
Read article →ADK Java + Email, in depth: draft and send tools, human confirmation, a policy gateway on Jakarta Mail, idempotent sends and injection-safe inbox reading
Building an email capability for an ADK Java agent: separate draftEmail and sendDraft FunctionTools, ADK tool confirmation with requestConfirmation, a…
Read article →Environment + Configuration Management
ADK Java environment and configuration management: 12-factor config, env-driven builders, typed config helpers, profiles, secrets, validation, externa…
Read article →ADK Java Error Recovery, in depth: where an invocation fails, the error callbacks, model retries under maxLlmCalls and recovering at the caller
How errors move through an ADK Java agent invocation and how to recover from each: what FunctionTool does with exceptions, onToolErrorCallback and onM…
Read article →Integrating Evals Into CI for ADK Java Projects, in depth: recorded model cassettes, stable request keys, JUnit wiring and a baseline gate
Wire ADK Java agent evals into CI: a cassette model that records and replays LLM responses, a canonical request key, JUnit dynamic tests and Maven pro…
Read article →ADK Java Evaluation Framework, in depth: eval sets, a replay harness on InMemoryRunner, trajectory and response scoring, and a CI gate
ADK Java v1.11.0 has no built-in evaluator, so this page builds one: a loader for the Python ADK eval-set format, a replay harness on InMemoryRunner, …
Read article →ADK Java Events, in depth: the Event contract, EventActions, partial versus final, and routing the stream
A practical guide to events in ADK for Java: the Event fields, EventActions state and artifact deltas with app:, user: and temp: scopes, why partial e…
Read article →Feature Flags for Agent Behavior in ADK Java, in depth: flag surfaces, once-per-invocation snapshots and replayable variants
Where feature flags plug into an ADK for Java agent (instruction providers, toolsets, model callbacks, RunConfig, runner variants), why to evaluate on…
Read article →ADK Java File Tools, in depth: workspace-confined function tools for listing, reading and writing local files safely
How to give an ADK Java agent local file access: narrow function tools, a path guard with normalisation and symlink checks, bounded strict reads, atom…
Read article →ADK Java + Firestore, in depth: the contrib session service, its document layout, state scopes, concurrency and operations
Running ADK Java sessions on Firestore: wiring FirestoreSessionService and FirestoreDatabaseRunner, what one appended event writes, state-prefix behav…
Read article →ADK Java Advanced Function Calling, in depth: chained and parallel calls, human confirmation, long-running tools, tool callbacks and call budgets
Beyond a single tool call in Google's Agent Development Kit for Java: how parallel and chained calls flow through the loop, tool execution modes,…
Read article →ADK Java + GCP Tools, in depth: built-in Google tools, Vertex AI RAG, Application Integration and a guarded BigQuery tool
Google Cloud tools in ADK Java from first principles: model-side built-ins such as GoogleSearchTool versus client-side tools such as VertexAiRagRetrie…
Read article →ADK Java + Cloud Storage, in depth: bucket-scoped object tools, generation preconditions, V4 signed URLs and the IAM, CMEK and lifecycle around them
How to give an ADK Java agent safe Cloud Storage tools: GCS as tools versus the artifact service, a per-user namespace guard, list, read and write too…
Read article →GDPR and DPDP Compliance for LLM Agents, in depth: mapping both regimes onto ADK Java plugins, stores, retention and breach clocks
How to make an ADK Java agent compliant with both GDPR and India's DPDP Act and Rules 2025: role mapping, why DPDP has no contract or legitimate-…
Read article →Gemini 2.5 Features Available in ADK Java, in depth: thinking budgets, thought parts, built-in Search, URL context and code execution, structured output with tools, context caching and live audio
Which Gemini 2.5 capabilities ADK Java exposes and exactly how: ThinkingConfig through generateContentConfig, reading thought parts and token usage fr…
Read article →Cost Tracking with Gemini via ADK Java, in depth: a cost plugin, a versioned price table and reconciliation with billing
Turn Gemini usage metadata into money in ADK Java: what Gemini bills for, a global BasePlugin that meters every agent, BigDecimal pricing by model and…
Read article →Gemini Function Calling in ADK Java, in depth: declarations, tool config, call ids and thought signatures
What actually crosses the wire when an ADK Java agent calls tools through Gemini: function declarations, toolConfig and the AUTO / ANY / NONE / VALIDA…
Read article →ADK Java + Gemini, in depth: from model string to HTTP client, choosing a backend and credentials, timeouts and retries, and a boot sequence that fails fast
How ADK Java connects an agent to Gemini: lazy model resolution through LlmRegistry and its per-name cache, the Gemini builder's credential prece…
Read article →GeminiLLM Class in ADK Java, in depth: construction, backend selection, request rewriting, streaming aggregation and the registry cache
A source-level guide to com.google.adk.models.Gemini in adk-java 1.11.0: builder precedence, the Vertex AI environment-flag trap, zero HTTP timeouts, …
Read article →Gemini Multimodal Support in ADK Java, in depth
How Gemini handles images, video, audio and PDFs sent from ADK Java: per-modality token costs, media resolution, video clipping and frame rate with Vi…
Read article →Gemini Safety Settings via ADK Java, in depth: per-agent profiles, how a block reaches your code, and calibrating thresholds
Configuring Gemini safety settings in ADK Java: categories and thresholds, per-agent profiles in GenerateContentConfig, the four ways a block surfaces…
Read article →Gemini Streaming with ADK Java, in depth: the streamGenerateContent wire, thought parts, finish reasons, usage and stream latency
How Gemini streaming works end to end in ADK Java: what streamGenerateContent chunks carry, how ADK aggregates them into partial and final events, ena…
Read article →Comparing Gemini Variants in ADK Java, in depth: a fair harness, the confounds ADK adds, and choosing a model per agent
How to compare Gemini Pro, Flash and Flash-Lite variants in ADK Java fairly: a dated model lineup, where the model enters the request, the gemini-2 ou…
Read article →Google Search Tool Integration in ADK Java, in depth: what the tool sends, byte-offset citations, keeping sources through AgentTool, and cost
GoogleSearchTool in ADK Java from the source: how processLlmRequest enables grounding, GroundingMetadata fields, UTF-8 byte offsets versus Java string…
Read article →Agent governance architecture in ADK Java, in depth: policy plugins, OPA decisions, tool confirmation, spend caps and audit
Governing ADK Java agents: plugin hooks as enforcement points, a tool registry with risk bands, OPA policy decisions, human confirmation, spend caps, …
Read article →ADK-Java Graceful Shutdown: Architecture Deep-Dive
How an agent runtime drains cleanly on SIGTERM — readiness propagation, admission gating, drain deadlines under the grace period, checkpointing long t…
Read article →Managing Ground Truth for Agent Evals, in depth: truth records, agreement, expiry, label noise and relabelling in Java
Ground truth for ADK Java agent evals as managed data: a truth record with provenance, policy version and expiry, a validator and Cohen's kappa i…
Read article →ADK Java + gRPC, in depth: serving agents over a streaming proto contract with flow control, cancellation, deadlines and the A2A gRPC binding
Expose an ADK for Java agent as a gRPC service: a versioned proto for sessions and runs, bridging the Runner's Flowable of events to a server str…
Read article →ADK Java Guardrails, in depth: layered input, tool and output checks with plugins and callbacks, how ADK orders them, and how to test them
How to build guardrails for Google's Agent Development Kit for Java: what a guardrail is, the plugin and callback hook surface, the exact order A…
Read article →ADK Java High Availability, in depth: availability arithmetic, stateless replicas, mid-turn crashes, model failover and regional recovery
How to make an ADK Java agent service highly available: multiply serial dependencies to find your real ceiling, keep sessions out of replicas with a d…
Read article →Health, Liveness, Readiness Probes, in depth: probe semantics, timing arithmetic and Spring Boot health groups for ADK Java agents
Designing startup, liveness and readiness probes for ADK Java agent services: what each probe should ask, Kubernetes timing arithmetic, Spring Boot av…
Read article →Hierarchical Agents in ADK Java, in depth: the agent tree, supervisor delegation, AgentTool versus transfer, shared state and escalation
How hierarchical multi-agent systems work in Google's Agent Development Kit for Java: the parent-child agent tree, transfer_to_agent and its scop…
Read article →Horizontal Scaling Strategies for ADK Java agents, in depth: stateless pools, session affinity, queue-backed turn workers and live connections
Five ways to scale ADK Java agents horizontally compared: a stateless pool, session affinity with rendezvous hashing, queue-backed turn workers with i…
Read article →ADK Java Internationalization (i18n), in depth: locale state, reply-language instructions, ICU messages and locale-neutral tools
How to internationalise an ADK Java agent: resolve a BCP 47 locale once, keep it in session state, steer reply language through instruction placeholde…
Read article →Implementing a Custom LLM in ADK Java, in depth: the BaseLlm contract, request and response mapping, tool calls, streaming, registration and testing
How to plug any model into Google's Agent Development Kit for Java by extending BaseLlm: the generateContent and connect contract, mapping Conten…
Read article →ADK Java Agent Incident Response Playbook, in depth: incident classes, a control plugin with kill switch and tool quarantine, detection signals and session forensics
An incident response playbook for ADK Java agents: incident classes and severities, an IncidentControlPlugin using beforeRun, beforeModel and beforeTo…
Read article →ADK Java + Kafka, in depth: keyed request topics, rebalance-safe workers, durable sessions and idempotent turns
Running Google ADK Java agents behind Apache Kafka: topic and key design, a pause-and-resume consumer loop for minute-long turns, shared session servi…
Read article →Running ADK Java Agents on Kubernetes, in depth: probes, graceful drain, autoscaling on the right signal and model quotas
How to run Google ADK for Java agents on Kubernetes: what makes agent traffic different, a container image and JVM sizing, Spring Boot probes gated by…
Read article →LangChain4j, in depth: AI Services, tools and memory, agentic workflows and supervisors, and running LangChain4j inside ADK Java
LangChain4j for agent builders: AI Services as typed interfaces, @Tool and the tool loop with round-trip caps, per-user memory and its concurrency rul…
Read article →LLM Abstraction in ADK Java, in depth
Where the LLM abstraction in ADK Java holds and where it leaks: genai types as the lingua franca, a field-by-field table of what the Gemini, Claude an…
Read article →LLM-as-Judge Scorer in ADK Java, in depth: a rubric judge on LlmAgent with a structured verdict, calibration against humans and a release gate
How to build an LLM-as-judge scorer for ADK Java agents: what ADK Java does and does not ship for evaluation, the scorer contract, rubric and verdict …
Read article →LLM Error Taxonomy in ADK Java, in depth: thrown versus in-band failures, finish reasons and a classifier that drives policy
A practical error taxonomy for ADK Java model calls: where ApiException, timeouts and call-limit errors surface, why SAFETY and MAX_TOKENS arrive in-b…
Read article →Retries at the LLM Layer in ADK Java, in depth: the SDK's hidden retries, multiplying layers, classifiers, deadlines, budgets and streaming
Where model-call retries happen in an ADK Java agent: the GenAI SDK's default HTTP retry interceptor, a BaseLlm decorator and the caller; how att…
Read article →Response Streaming Interface in ADK Java, in depth: the generateContent stream contract, partial responses and the final aggregate
What a streaming BaseLlm.generateContent must emit in ADK Java: partial deltas, one final aggregated LlmResponse, why appendEvent and tool dispatch de…
Read article →Long-Running Task Patterns in ADK Java, in depth: job tables, resumes, progress updates and expiry
Production patterns around ADK Java's LongRunningFunctionTool: a durable job table, capturing call ids from events, deduplicated callbacks, per-s…
Read article →Long-Term Memory, in depth: retrieval in ADK Java, from when to recall to query shaping, fusion, recency and budgets over BaseMemoryService
The read side of long-term memory in ADK for Java: what BaseMemoryService, LoadMemoryTool and InMemoryMemoryService actually do, why storage alone giv…
Read article →Loop Agents in ADK Java, in depth: the while-loop pattern, escalate and ExitLoopTool, deterministic checkers, state across iterations and the silent cap
How LoopAgent in the Java Agent Development Kit really runs, read from its source: repeat and takeUntil escalate, what that implies for mid-iteration …
Read article →ADK Java + MCP, in depth: McpToolset, transports, filtering, result mapping and production lifecycle
How ADK for Java uses MCP servers: McpToolset, McpTool and McpSessionManager, stdio versus Streamable HTTP versus SSE, allowlists and ToolPredicate, w…
Read article →Integrating MCP Servers as Tools in ADK Java, in depth: building the server side an ADK agent uses well
Build Java MCP servers that ADK Java agents use well: what McpTool passes to the model, schema and description design, JSON results, idempotency under…
Read article →Memory Debugging and Inspection in ADK Java, in depth: why memory search comes back empty and how to see inside it
Debugging ADK Java memory: how BaseMemoryService, InMemoryMemoryService, LoadMemoryTool and ToolContext.searchMemory really behave, four checks for an…
Read article →Memory Eviction Policies in ADK Java, in depth: compaction, TTL, capacity caps and scored eviction for agent memory
How to evict agent memory in ADK Java: what EventsCompactionConfig does and does not free, why BaseMemoryService needs a wrapper, and a working TTL, c…
Read article →Memory and Privacy in ADK Java, in depth: implementing the right to be forgotten across sessions, artifacts, memory, logs and backups
How to make an ADK Java agent forget a user: where personal data lives, what the session, artifact and memory service interfaces can and cannot delete…
Read article →ADK Java MemoryService architecture
Deep-dive on ADK Java's long-term memory: the session-versus-MemoryService split, addSessionToMemory ingestion and distillation, embedding and ve…
Read article →Memory Summarization Strategies in ADK Java, in depth: what a finished session should become in long-term memory
How to turn ADK Java sessions into long-term memory: raw events, session abstracts, structured facts, episodic digests and consolidation compared, a s…
Read article →Memory in LLM Agents, in depth: a working taxonomy of agent memory and where each kind belongs in ADK Java, with a routing rule for every fact
The kinds of memory an LLM agent has (working, scratch, conversational, session, user profile, long-term episodic and semantic, procedural, shared and…
Read article →Metrics + Dashboards Every ADK Java Agent Should Ship, in depth: the built-in histograms, token and cost metrics, five dashboard rows and the alerts behind them
The seven histograms ADK Java records, registering OpenTelemetry so they are not a no-op, bucket views, model latency from spanmetrics, token and fini…
Read article →Migrating from PaLM to Gemini in ADK Java, in depth: mapping prompts, parameters, safety and embeddings, a port-based rewrite and an evaluation gate
A practical guide to moving a Java service from the retired PaLM APIs to Gemini through ADK Java: what changed and when, mapping context, examples, me…
Read article →Model Registration and Discovery in ADK Java, in depth: LlmRegistry semantics, resolution, catalogs, aliases, validation and routing
How ADK Java turns a model string into a BaseLlm: LlmAgent resolution and ancestor inheritance, LlmRegistry's full-match regex factories and inst…
Read article →Multi-Environment Promotion for ADK Java, in depth: an environment contract, isolated tool bindings, evidence that expires and drift detection
Promoting an ADK Java agent from dev to staging to production without the environments drifting: a contract for what may differ, tool bindings that ca…
Read article →ADK Java Multi-Language Support, in depth: per-turn language detection, a steering callback, code-switching, cross-lingual retrieval and a per-language eval matrix
Handling users who write in many languages with ADK Java: detecting the language of each turn with Lingua, steering every model call from a guarded be…
Read article →Multi-Region Deployment for ADK Java, in depth: regional sessions, home-region pinning, model endpoints and quota, failover semantics and sizing
Designing a multi-region ADK Java agent deployment: what has a region, VertexAiSessionService and Agent Engine locations, regional versus global Gemin…
Read article →Multi-Step Tool Chains in ADK for Java, in depth: where the chain lives, how data moves between steps, and how to keep it safe
How to build multi-step tool chains with Google's Agent Development Kit for Java: model-driven chains, composite FunctionTools, SequentialAgent p…
Read article →Multi-Tenant Agent Registry for ADK Java, in depth: namespaces, entitlements and fail-closed resolution
Design the tenant layer of an ADK for Java agent registry: platform and tenant namespaces, a fixed bare-name resolution rule without shadowing, entitl…
Read article →ADK Java Multimodal, in depth: images, audio, video and PDFs as Parts, inline versus file references, upload validation, artifacts and tools
How to send images, audio, video and PDFs to Gemini through ADK Java: building Content from Parts, choosing inline bytes or file references against ba…
Read article →ADK Java observability architecture, in depth: built-in spans, telemetry plugins, correlation and privacy
Observability for ADK Java agents: the gcp.vertex.agent spans, the content-capture switch, OTel SDK wiring, a defensive metrics plugin, correlation id…
Read article →Observability as a First-Class Concern in ADK Java, in depth: a telemetry contract, one plugin, tests and SLOs
Make observability part of the ADK Java runtime: what spans ADK emits, a telemetry contract, one plugin that enforces it for every agent, context-safe…
Read article →ADK Java + OpenAPI, in depth: turning a REST spec into safe agent tools
How to give an ADK Java agent tools from an OpenAPI spec: what adk-java ships today and what it does not, building a spec-driven BaseToolset on the re…
Read article →OpenAPI to Tool Generation in ADK Java, in depth: a build-time generator, lowering schemas to the Gemini subset, tool naming and golden declaration tests
Generating ADK Java tools from OpenAPI at build time: what adk-java ships today, opting operations in, the FunctionDeclaration name rule, lowering all…
Read article →OpenTelemetry Integration in ADK Java, in depth: the span tree, choosing the parent, context across RxJava, the Java agent, a Collector pipeline and trace tests
Integrate ADK Java's built-in OpenTelemetry spans with the rest of your system: the invocation, agent, model and tool span tree, how ADK picks a …
Read article →Choosing an Orchestration Pattern in ADK Java, in depth: a decision tree over transfer, AgentTool, Sequential, Parallel, Loop and custom agents, with cost, determinism and state contracts
A decision guide for multi-agent orchestration in the Java Agent Development Kit: who decides control flow, a question-driven decision tree, a matrix …
Read article →adk-java transactional outbox architecture
Deep-dive on the transactional outbox pattern for Java ADK agents: committing state and an outbox row in one JDBC transaction to kill the dual-write p…
Read article →Output Content Filtering in ADK Java, in depth: which hook changes which copy of an answer, streaming holdback, redaction rules and tests
How to filter agent output in Google's ADK for Java: why afterModelCallback filters what is shown, stored and fed back while onEventCallback only…
Read article →Parallel Agents in ADK for Java, in depth: coordinating results after fan-out with structured outputs, a deterministic merger, conflict resolution and provenance
How to gather and reconcile the results of a ParallelAgent in Google's Agent Development Kit for Java: per-branch output schemas and keys, readin…
Read article →Parallel Agents in ADK Java, in depth: designing a fan-out with ParallelAgent, isolating branches, gathering results and paying for concurrency
How to design the fan-out pattern with ParallelAgent in Google's Agent Development Kit for Java: when parallelism pays, branch isolation versus s…
Read article →Parallel Agents in ADK Java, in depth: how a ParallelAgent fails, and how to turn one branch's error into a recorded result instead of an outage
How ParallelAgent in ADK Java really behaves under failure, read from the source: Flowable.merge semantics, escalation, shared state and branch-filter…
Read article →Parallel Agents, in depth: rate limiting a ParallelAgent fan-out in ADK Java
How to keep an ADK Java ParallelAgent fan-out under model quotas: branch-call and token arithmetic, why the limit belongs in a BaseLlm wrapper, a perm…
Read article →ADK Java PII Redaction, in depth: which hook cleans which flow, the persistence trap, a redaction plugin and Sensitive Data Protection
How to keep personal data out of the stores and providers an ADK Java agent touches: a map of where PII flows, which Plugin and agent callbacks run be…
Read article →ADK-Java planner -- decomposing a goal into steps
Deep-dive on the ADK-Java planner: the complex-goal need, decomposition into a plan, the executor, plan-then-execute vs reacting per step, replanning …
Read article →ADK Java Planning, in depth: PlannerAgent, the Planner strategy, goal-oriented planning with replanning, and the silent stops to guard
How planning works in the Agent Development Kit for Java with the google-adk-planners module: PlannerAgent, the Planner interface, the sealed PlannerA…
Read article →ADK Java Plugin Architecture, in depth: the plugin contract, how the manager runs it, run-level hooks, shipped plugins and building one that holds state
ADK Java plugins read from the 1.11.0 classes: the fourteen hooks and what their return types allow, registration on App and Runner, first-value-wins …
Read article →Production Readiness Checklist for ADK Java Agents, in depth: a go/no-go review of sessions, limits, tools, cost, observability, guardrails, evaluation and operations
A production readiness review for Google ADK Java agents: eight areas with pass criteria and evidence, durable sessions instead of InMemorySessionServ…
Read article →Progressive Rollouts + Kill Switches for ADK Java, in depth: deterministic buckets, per-turn pinning, tool kill switches, fail-safe flags and ramp controllers
How to roll out agent changes gradually and stop them in seconds in ADK Java: three controls at three speeds, salted monotonic bucketing, pinning vari…
Read article →Tracing Prompts + Completions in ADK Java, in depth: what the spans hold and how to control them
What Google ADK for Java records about prompts and completions in OpenTelemetry spans as of v1.11.0: span names, llm_request and llm_response attribut…
Read article →ADK Java Prompt Management, in depth
How ADK Java resolves instructions (Instruction.Static and Instruction.Provider, state placeholders and their failure rules), plus versioned prompt fi…
Read article →ADK Java + Pub/Sub, in depth: at-least-once delivery, flow control, idempotent agent turns and dead letters
Running ADK Java agents behind a Pub/Sub subscription: message contract and idempotency keys, subscriber flow control as a model concurrency cap, leas…
Read article →ADK Java Query Router, in depth: per-turn model-tier routing with a BaseLlm decorator
How to route each ADK Java turn to a fast or strong model tier: a RoutingLlm BaseLlm decorator, rewriting LlmRequest.model, keeping a turn on one tier…
Read article →ADK Java Quota Management, in depth: per-tenant credit quotas with a reserve-and-settle ledger and a model-call plugin
How to enforce daily and monthly LLM usage quotas in ADK Java: credit units, tenant, team and user scopes, an atomic reserve-then-settle ledger, a Bas…
Read article →ADK-Java RAG grounding -- answering from your data
Deep-dive on ADK-Java RAG grounding: the grounding need, the retrieval tool, grounding answers in retrieved context, citations, vector search, chunkin…
Read article →ADK Java RAG Grounding, in depth: evidence ids, a citation contract and a verifier callback that refuses unsupported answers
How to enforce grounding in an ADK Java agent: evidence ids stored in session state, a citation contract in the instruction, an afterModelCallbackSync…
Read article →ADK Java RAG Implementation, in depth: chunking, incremental ingestion, hybrid pgvector retrieval and a search tool your agent can trust
Build retrieval-augmented generation for an ADK Java agent yourself: structure-aware chunking, content-hash incremental ingestion, a pgvector plus ful…
Read article →ADK-Java rate limiting architecture
Deep-dive on rate limiting in the Java Agent Development Kit: the token-bucket algorithm shaping bursty model and tool calls under hard provider quota…
Read article →Rate Limiting Per User in ADK Java, in depth: turn admission in beforeRunCallback, per-user token buckets in Redis, concurrency leases and verified identity
Per-user rate limits for ADK Java agents: three limits (turn rate, tokens per minute, concurrent runs), which plugin hooks can halt a run, an atomic R…
Read article →ADK Java ReAct Implementation, in depth: thought, action and observation on LlmAgent, with budgets, guards and traces
How the ReAct pattern (reason, act, observe, repeat) is implemented with Google's Agent Development Kit for Java: mapping thoughts, actions and o…
Read article →Agent Registry High Availability, in Depth
Keeping an agent registry for ADK Java multi-agent systems available: control path versus data path, leases with fencing epochs, quorum stores, read r…
Read article →Registry Metadata Conventions for ADK Java agents, in depth: A2A card fields, skill ids, tag vocabularies, version rules, a metadata extension and a CI linter
Conventions for the metadata ADK Java agents publish to a registry: using A2A AgentCard fields correctly, stable names and skill ids, a namespaced tag…
Read article →Detecting Agent Behavior Regressions, in depth: fingerprints from the ADK Java event stream, trajectory diffs, flip analysis and CUSUM drift alarms
How to detect behaviour regressions in ADK Java agents: a fingerprint record built from runner events, trajectory edit distance and change classes, pa…
Read article →Resuming Tasks After a Crash in ADK Java, in depth: crash windows, a run ledger, orphan recovery and side-effect journals
What a JVM crash leaves behind in an ADK Java agent, and how to recover: the four crash windows, a leased run ledger, a sweeper that classifies orphan…
Read article →Agent Router Architecture in Depth
A 2500-word walkthrough of agent router architecture: intent classifier, model pool, budgets, escalation, A/B evaluation.
Read article →ADK Java Runtime in Depth: What Happens From Building the Agent Tree to the First Event, and How to Boot Safely
The real boot sequence of a Google ADK for Java application: building LlmAgent trees and FunctionTools, choosing session, artifact and memory services…
Read article →ADK Java Runtime Configuration, in depth: RunConfig per invocation, LLM call budgets, streaming and tool execution modes, and a config factory you can operate
How per-invocation runtime configuration works in the Agent Development Kit for Java: the RunConfig fields and their defaults, how maxLlmCalls is enfo…
Read article →ADK Java Runtime
Every phase of the ADK Java runtime's execution loop, from message-in to response-out, with the hook points you can attach to.
Read article →Extending the ADK Java Runtime, in depth: plugins as middleware, custom agents, model decorators, services and executors
How to extend Google's Agent Development Kit for Java without forking it: the Plugin interface and its hooks as runner-wide middleware, short-cir…
Read article →Extending Runtime Metrics in ADK Java, in depth: the built-in Metrics class, a metrics plugin, dispatch rules, streaming and short-circuit traps, Views and tests
How to extend ADK for Java's runtime metrics: what com.google.adk.telemetry.Metrics records and why it cannot be subclassed, a complete OpenTelem…
Read article →Model Call Orchestration Inside the ADK Java Runtime: One LLM Call from Request Assembly to Event, with Code
How the Agent Development Kit for Java turns session state into a model call and back: BaseLlmFlow's request processors, before/after/on-error mo…
Read article →Session Context in ADK Java, in Depth: Sessions, State Prefixes, InvocationContext and ToolContext, and What Survives a Turn
How session context really works in Google's ADK for Java: the BaseSessionService contract, State as a delta-recording map, app:, user:, temp: an…
Read article →ADK Java Runtime, in depth: the thread model, blocking versus async tools, and choosing the thread that pays
How threads actually flow through Google's Agent Development Kit for Java: runAsync as a cold RxJava Flowable, where the model call blocks, the f…
Read article →Tool Dispatch Mechanics in the ADK Java Runtime
What the ADK Java runtime does between the model asking for a tool and the result landing back in the session: name resolution, argument binding, fan-…
Read article →ADK-Java safety -- guardrails around agent behavior
Deep-dive on ADK-Java agent safety: the guardrails need, callbacks (before/after model and tool calls) as interception points, input and output guardr…
Read article →ADK Java Scale-Out, in depth: capacity, shared state and same-session concurrency
Scaling ADK Java agents horizontally: stateless replicas and shared session services, a Little's law capacity model, model quota and agent fan-ou…
Read article →Scoring Strategies, in depth: exact match versus semantic similarity for ADK Java evals, normalization, per-field rules, calibrated thresholds and a scoring cascade
Choosing how to score ADK Java agent answers: the cost of false passes and false fails, a normalization ladder for exact match, per-field scoring for …
Read article →ADK Java + Search Engines, in depth: Elasticsearch and OpenSearch behind a typed tool, with server-side tenant filters and results shaped for the context window
How to put an existing Elasticsearch or OpenSearch cluster behind an ADK Java FunctionTool: why the model must not write query DSL, typed arguments, t…
Read article →Semantic Memory + Vector Stores for ADK Java Agents, in depth: implementing BaseMemoryService on pgvector
How to give Google ADK Java agents long-term semantic memory: the BaseMemoryService contract, what to store, a pgvector schema with idempotent upserts…
Read article →Sequential Agent Chains in ADK Java, in depth: designing stages, deterministic gates, halting, nesting parallel and loop agents, cost and testing
How to design a sequential agent chain in Google's Agent Development Kit for Java: when a fixed pipeline beats model-driven delegation, what Sequ…
Read article →Sequential Agents in ADK Java: Passing Context Between Steps with outputKey, State Placeholders and Conversation History
How context moves between the steps of an ADK Java SequentialAgent: the shared InvocationContext, session state written by outputKey and read through …
Read article →Sequential Agents in ADK Java, in depth: rollback and compensation when a later stage fails
What really happens when stage four of an ADK Java SequentialAgent fails after stages two and three changed the world, why there is no rollback, and h…
Read article →Short-Term Memory in ADK Java, in depth: what fills the context window each turn, how to measure it and how to keep it small
How ADK for Java builds each model request from session events, state and the agent definition: the contents processor, instruction placeholders, a to…
Read article →Defining SLOs for LLM Agents, in depth: agent SLIs, an ADK Java SLO plugin, error budgets, burn-rate alerts and quality
How to define SLOs for LLM agents built with ADK Java: completion, latency, first-response, quality and cost SLIs, a run-level plugin that emits OpenT…
Read article →ADK Java + Spring
Deep-dive on integrating ADK Java with Spring Boot: agents and tools as DI-managed beans, tools as existing service beans, @ConfigurationProperties co…
Read article →Spring AI Advisors, in depth: the chain, its ordering rules, request context, streaming, writing your own, and why they do not run inside ADK agents
Spring AI 2.0.0 advisors read from the jars: CallAdvisor, StreamAdvisor and BaseAdvisor, OrderComparator ordering and the default orders of the shippe…
Read article →Spring AI Evaluation, in depth: the Evaluator contract, what the built-in evaluators really check, and a regression harness you can trust
Spring AI's evaluation API read closely: Evaluator, EvaluationRequest and EvaluationResponse, the exact pass rules of RelevancyEvaluator and Fact…
Read article →Spring AI and Ollama for ADK Java, in depth: running agents on local models through the SpringAI adapter
Run ADK for Java agents on a local Ollama model through the contrib SpringAI adapter and Spring AI's OllamaChatModel: dependencies and version pi…
Read article →Spring AI RAG, in depth: the modular RetrievalAugmentationAdvisor pipeline stage by stage, with its defaults, costs and failure modes
Spring AI's modular RAG pipeline walked stage by stage: query transformers, multi-query expansion, VectorStoreDocumentRetriever defaults, the joi…
Read article →Spring AI Tool Calling, in depth: @Tool methods, ToolContext, and the ToolCallingAdvisor loop in Spring AI 2.0
Tool calling in Spring AI 2.0.0: declaring tools with @Tool and FunctionToolCallback, private ToolContext, the auto-registered ToolCallingAdvisor loop…
Read article →Spring AI Vector Stores, in depth: the VectorStore abstraction, pgvector wiring, ETL ingestion, filters, RAG advisors and observability
Spring AI's VectorStore abstraction for Java agents: the interfaces and Document model, PgVectorStore configuration and schema, ETL ingestion wit…
Read article →ADK Java with AWS Step Functions, in depth: agents as workflow tasks, Standard versus Express, task-token approvals, retries, payload limits and idempotent tools
How to run ADK for Java agents inside AWS Step Functions: which pauses the workflow owns, Standard versus Express, a Lambda handler around Runner, a J…
Read article →Streaming agent architecture
Deep-dive on Java-based streaming agent runtime: SSE, async loop, model + tool events, interrupt, resume from checkpoint, and backpressure.
Read article →ADK Java Streaming Events, in depth: StreamingMode, partial and aggregated events, what gets persisted, and an SSE protocol for clients
How ADK Java streaming events behave: StreamingMode NONE, SSE and BIDI, partial chunks versus the aggregated event, why function calls run only from n…
Read article →Streaming Tool Results Incrementally in ADK Java, in depth: Flowable tools in runLive, stopStreaming, inputStream and the non-live alternatives
How ADK Java streams tool results: Flowable-returning FunctionTools in runLive, how emissions reach the model as user text, stopStreaming, inputStream…
Read article →Structured Logging Patterns for ADK Java, in depth: a field schema for agent events, MDC versus RxJava, a key-value logging plugin, JSON encoders and keeping content out of logs
Structured logging for ADK Java services: a field schema keyed by invocation and session id, why MDC is unreliable under RxJava, an SLF4J 2 key-value …
Read article →ADK Java Summary Agent, in depth: a dedicated LlmAgent for handoffs, memory and digests, with a cited schema and a validator
Building a summary agent in ADK Java: why it is a separate LlmAgent, an output schema with event-id sources, safe transcript rendering, the agent and …
Read article →Sync vs Async LLM Contracts in ADK Java, in depth: the reactive types at every seam, sync adapters, bridging and failure modes
What ADK Java's model, tool, callback and runner contracts actually promise: Flowable, Single, Maybe and Completable at each seam, the stream fla…
Read article →Task Resumability in ADK Java, in depth: ResumabilityConfig, pausing on long-running tools, resuming after a restart, and what is released versus still on main
How task resumability works in Google's Agent Development Kit for Java: what an invocation pause is, enabling ResumabilityConfig, pausing a Seque…
Read article →ADK Java Temperature Control, in depth: setting, overriding and measuring sampling temperature in agents
Temperature in ADK Java from first principles: softmax scaling with worked numbers, GenerateContentConfig on LlmAgent, per-call overrides in a beforeM…
Read article →Testing Custom LLMs in ADK Java with MockLLM, in depth: a scripted BaseLlm, tool round trips and adapter contract tests
ADK Java has no public MockLlm, so write one: a scripted, request-recording BaseLlm modelled on ADK's test-only TestLlm, runner-level tests of to…
Read article →Token Counting Across Models in ADK Java, in depth: estimates, provider counts, usage metadata and budgets
How to count tokens reliably in an ADK Java agent that talks to more than one model: why counts differ by tokenizer, the three sources of truth (local…
Read article →Tool Batching Pattern, in depth: list-accepting tools, per-item results, caps in code and call coalescing
How to batch tool calls in ADK for Java: why round trips dominate cost, a list-accepting FunctionTool with per-item results and explicit deferral, why…
Read article →Tool Composition Patterns in ADK Java, in depth: decorators, router tools, fan-out and context-scoped toolsets
Composing tools as Java objects in ADK for Java: how a tool is registered and dispatched by name, decorators over BaseTool for timeouts, caching and r…
Read article →Wrapping Errors from Tools Back to the LLM, in depth: an error envelope the model can act on, a BaseTool decorator, failure budgets and contract tests
How to turn tool failures in ADK Java into function responses a model can act on: the three paths an error takes, an output/error envelope with codes …
Read article →The Tool Interface in ADK Java, in depth: the BaseTool contract, a hand-written tool and toolsets
The BaseTool contract in ADK Java member by member: constructors, declaration(), runAsync(Map, ToolContext), processLlmRequest and what its defaults d…
Read article →Tool Observability + Metrics in ADK Java, in depth: the built-in execute_tool span, gen_ai.tool histograms, outcome metrics and SLOs
What ADK Java actually records for every tool call (the execute_tool span, gen_ai.tool.execution.duration and request/response size histograms, error.…
Read article →Tool Registry Design in ADK Java, in depth: a validated catalog, per-agent profiles, risk metadata, renames and MCP allowlists
Designing an application tool registry for Google's ADK for Java, based on google-adk 1.10.1: duplicate names throw only when the request is buil…
Read article →Retry + Backoff Strategies for ADK Java Tools, in depth: a RetryingTool decorator, full jitter, idempotency keys and retry budgets
Tool-level retry for ADK Java from first principles: where retries multiply in an invocation, classifying failures, exponential backoff with full jitt…
Read article →Tool Sandboxing in ADK Java, in depth: no in-JVM sandbox, the strict ContainerCodeExecutor, MCP subprocess environments and out-of-process tool workers
Sandbox risky ADK Java tools: why the JVM can no longer isolate untrusted code, isolation tiers from FunctionTool to managed executors, exactly what C…
Read article →Timing Out ADK Java Tools Safely
How ADK Java enforces tool timeouts at runtime, how tool code detects and reacts to interruption, cleanup patterns with try-with-resources, graceful d…
Read article →Java agent tools architecture
Deep-dive on Java agent tool architecture: declaration, JSON schema, registry, executor, timeouts, idempotency, streaming, governance.
Read article →ADK Java Tools
How to define tools in ADK Java, the schema format for LLM function calling, and best practices for tool design.
Read article →ADK Java Versioning, in depth
Versioning ADK Java agents as bundles: fingerprinted manifests, pinning sessions to the bundle that created them, tool and state compatibility rules, …
Read article →Deploying ADK Java Agents to Vertex AI Agent Engine, in depth: the custom-container route, the runtime contract, sessions and sizing
How to run an ADK Java agent on Vertex AI Agent Engine (now Agent Runtime): why the one-command deploy is Python and Go only, the runtime contract, a …
Read article →ADK Java + Vertex AI Search, in depth: how VertexAiSearchTool works, composing it with other tools and scoping results per tenant
How ADK Java's VertexAiSearchTool really works: it adds a Retrieval tool to the Gemini request instead of running code, its build-time and reques…
Read article →Virtual threads for Java agents
Deep-dive on running a Java agent framework on virtual threads: the mount/unmount dance at blocking LLM and tool calls, the small carrier pool, struct…
Read article →ADK Java + Web Browser, in depth
Building a web browsing tool for ADK Java agents: a coarse read-only tool surface, a FunctionTool backed by Playwright, thread confinement, per-call c…
Read article →Workflow orchestration architecture
Deep-dive on Java workflow orchestration: state machine, persistence, retries, timers, signals, compensation, versioning, testing.
Read article →ADK Java + Workflows, in depth: orchestrating Java agents on Cloud Run with Google Cloud Workflows, retries and callbacks
How to drive ADK Java agents from Google Cloud Workflows: when to use ADK workflow agents instead, the Workflows limits that shape the design, an idem…
Read article →Writing Eval Test Cases for ADK Java Agents, in depth: case anatomy, must-not-call rules, argument policies and mining production traces
How to write evaluation cases for ADK for Java agents: the eval-set format plus a sidecar spec, a taxonomy of case classes, match types and per-argume…
Read article →Writing a Custom Function Tool in ADK Java, in depth: a worked tool from method to tested agent
A step-by-step guide to building one custom function tool in Google's Agent Development Kit for Java: Maven setup and the -parameters flag, a sta…
Read article →ADK Java + YouTube, in depth: a quota-aware search tool, Gemini video analysis by URL, clipping and caching
Build YouTube tools for an ADK Java agent: Data API search and metadata with a quota guard, Gemini analysis of public videos by URL with clip offsets,…
Read article →Zero-Downtime Deployments for ADK Java, in depth: draining long turns, adjacent-release compatibility, expand and contract, and session pinning
How to deploy ADK Java agents without breaking conversations: the four kinds of agent downtime, a rolling update manifest, a drain gate around Runner,…
Read article →adk-postgres Backup and Restore Strategy, in depth: WAL archiving, incremental base backups, point-in-time recovery, verifying session invariants and the side effects a restore cannot undo
How to back up and restore the adk-postgres session store behind ADK Java agents: choosing RPO and RTO, WAL archiving with PostgreSQL 17 incremental b…
Read article →adk-postgres Connection Pool Sizing for Production, in depth: Little's law for agent workloads, HikariCP settings, bounded schedulers, fleet-wide connection budgets and PgBouncer
How to size and operate the HikariCP pool behind an ADK Java PostgreSQL session service: why agents need few connections, a Little's-law worked e…
Read article →Postgres event log storage for ADK Java, in depth: schema, the appendEvent transaction and running it in production
How to store ADK Java session events in PostgreSQL behind a custom BaseSessionService: an append-only event table, the one-transaction appendEvent pat…
Read article →adk-postgres Message History Storage, in depth: a conversation read model over the ADK Java event log
How to store and serve conversation message history for ADK Java agents in PostgreSQL: projecting ADK events into a message table, which events become…
Read article →adk-postgres Migrations and Schema Versioning, in depth: Flyway baselines, lock-safe PostgreSQL DDL, expand/contract, and versioning the event payload
How to evolve the PostgreSQL schema behind a self-built ADK for Java session service without downtime: what needs a version, Flyway layout and history…
Read article →adk-postgres Partitioning for High-Volume Workloads, in depth: choosing the key for the ADK event log, keeping per-session order, retention by DROP and converting a live table
How to partition the Postgres event log behind a custom ADK Java session service: when partitioning pays, why the key should be the day a session star…
Read article →adk-postgres Session Table, in depth: the adk_sessions row, its identity, lifecycle and update behaviour in PostgreSQL
The adk_sessions table behind a Postgres-backed ADK Java session service, column by column: composite identity and createSession semantics, listSessio…
Read article →