ADK for Java

ADK for Java

ADK for Java — core module, tool integration, A2A transport, evaluation, deployment.

564Articles
564Topics covered
Articles in this category

All 275 articles, sorted alphabetically

NEW · RECENT DEVELOPMENT

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 →
ARTICLE · 001

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 →
ARTICLE · 002

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 →
ARTICLE · 003

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 →
ARTICLE · 004

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 →
ARTICLE · 005

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 →
ARTICLE · 006

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 →
ARTICLE · 007

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 →
ARTICLE · 008

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 →
ARTICLE · 009

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 →
ARTICLE · 010

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 →
ARTICLE · 011

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 →
ARTICLE · 012

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 →
ARTICLE · 013

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 →
ARTICLE · 014

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 →
ARTICLE · 015

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 →
ARTICLE · 016

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 →
ARTICLE · 017

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 →
ARTICLE · 018

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 →
ARTICLE · 019

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 →
ARTICLE · 020

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 →
ARTICLE · 021

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 →
ARTICLE · 022

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 →
ARTICLE · 023

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 →
ARTICLE · 024

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 →
ARTICLE · 025

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 →
ARTICLE · 026

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 →
ARTICLE · 027

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 →
ARTICLE · 028

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 →
ARTICLE · 029

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 →
ARTICLE · 030

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 →
ARTICLE · 031

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 →
ARTICLE · 032

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 →
ARTICLE · 033

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 →
ARTICLE · 034

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 →
ARTICLE · 035

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 →
ARTICLE · 036

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 →
ARTICLE · 037

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 →
ARTICLE · 038

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 →
ARTICLE · 039

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 →
ARTICLE · 040

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 →
ARTICLE · 041

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 →
ARTICLE · 042

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 →
ARTICLE · 043

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 →
ARTICLE · 044

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 →
ARTICLE · 045

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 →
ARTICLE · 046

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 →
ARTICLE · 047

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 →
ARTICLE · 048

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 →
ARTICLE · 049

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 →
ARTICLE · 050

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 →
ARTICLE · 051

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 →
ARTICLE · 052

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 →
ARTICLE · 053

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 →
ARTICLE · 054

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 →
ARTICLE · 055

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 →
ARTICLE · 056

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 →
ARTICLE · 057

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 →
ARTICLE · 058

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 →
ARTICLE · 059

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 →
ARTICLE · 060

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 →
ARTICLE · 061

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 →
ARTICLE · 062

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 →
ARTICLE · 063

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 →
ARTICLE · 064

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 →
ARTICLE · 065

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 →
ARTICLE · 066

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 →
ARTICLE · 067

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 →
ARTICLE · 068

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 →
ARTICLE · 069

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 →
ARTICLE · 070

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 →
ARTICLE · 071

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 →
ARTICLE · 072

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 →
ARTICLE · 073

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 →
ARTICLE · 074

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 →
ARTICLE · 075

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 →
ARTICLE · 076

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 →
ARTICLE · 077

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 →
ARTICLE · 078

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 →
ARTICLE · 079

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 →
ARTICLE · 080

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 →
ARTICLE · 081

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 →
ARTICLE · 082

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 →
ARTICLE · 083

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 →
ARTICLE · 084

ADK Java callback architecture

Deep-dive on ADK Java callbacks: beforeAgent/afterAgent, beforeModel/afterModel, beforeTool/afterTool, short-circuit semantics, callback chains, injec…

Read article →
ARTICLE · 085

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 →
ARTICLE · 086

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 →
ARTICLE · 087

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 →
ARTICLE · 088

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 →
ARTICLE · 089

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 →
ARTICLE · 090

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 →
ARTICLE · 091

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 →
ARTICLE · 092

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 →
ARTICLE · 093

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 →
ARTICLE · 094

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 →
ARTICLE · 095

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 →
ARTICLE · 096

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 →
ARTICLE · 097

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 →
ARTICLE · 098

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 →
ARTICLE · 099

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 →
ARTICLE · 100

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 →
ARTICLE · 101

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 →
ARTICLE · 102

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 →
ARTICLE · 103

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 →
ARTICLE · 104

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 →
ARTICLE · 105

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 →
ARTICLE · 106

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 →
ARTICLE · 107

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 →
ARTICLE · 108

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 →
ARTICLE · 109

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 →
ARTICLE · 110

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 →
ARTICLE · 111

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 →
ARTICLE · 112

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 →
ARTICLE · 113

Environment + Configuration Management

ADK Java environment and configuration management: 12-factor config, env-driven builders, typed config helpers, profiles, secrets, validation, externa…

Read article →
ARTICLE · 114

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 →
ARTICLE · 115

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 →
ARTICLE · 116

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 →
ARTICLE · 117

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 →
ARTICLE · 118

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 →
ARTICLE · 119

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 →
ARTICLE · 120

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 →
ARTICLE · 121

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 →
ARTICLE · 122

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 →
ARTICLE · 123

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 →
ARTICLE · 124

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 →
ARTICLE · 125

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 →
ARTICLE · 126

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 →
ARTICLE · 127

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 →
ARTICLE · 128

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 →
ARTICLE · 129

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 →
ARTICLE · 130

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 →
ARTICLE · 131

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 →
ARTICLE · 132

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 →
ARTICLE · 133

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 →
ARTICLE · 134

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 →
ARTICLE · 135

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 →
ARTICLE · 136

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 →
ARTICLE · 137

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 →
ARTICLE · 138

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 →
ARTICLE · 139

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 →
ARTICLE · 140

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 →
ARTICLE · 141

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 →
ARTICLE · 142

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 →
ARTICLE · 143

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 →
ARTICLE · 144

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 →
ARTICLE · 145

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 →
ARTICLE · 146

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 →
ARTICLE · 147

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 →
ARTICLE · 148

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 →
ARTICLE · 149

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 →
ARTICLE · 150

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 →
ARTICLE · 151

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 →
ARTICLE · 152

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 →
ARTICLE · 153

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 →
ARTICLE · 154

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 →
ARTICLE · 155

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 →
ARTICLE · 156

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 →
ARTICLE · 157

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 →
ARTICLE · 158

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 →
ARTICLE · 159

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 →
ARTICLE · 160

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 →
ARTICLE · 161

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 →
ARTICLE · 162

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 →
ARTICLE · 163

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 →
ARTICLE · 164

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 →
ARTICLE · 165

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 →
ARTICLE · 166

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 →
ARTICLE · 167

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 →
ARTICLE · 168

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 →
ARTICLE · 169

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 →
ARTICLE · 170

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 →
ARTICLE · 171

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 →
ARTICLE · 172

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 →
ARTICLE · 173

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 →
ARTICLE · 174

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 →
ARTICLE · 175

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 →
ARTICLE · 176

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 →
ARTICLE · 177

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 →
ARTICLE · 178

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 →
ARTICLE · 179

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 →
ARTICLE · 180

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 →
ARTICLE · 181

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 →
ARTICLE · 182

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 →
ARTICLE · 183

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 →
ARTICLE · 184

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 →
ARTICLE · 185

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 →
ARTICLE · 186

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 →
ARTICLE · 187

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 →
ARTICLE · 188

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 →
ARTICLE · 189

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 →
ARTICLE · 190

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 →
ARTICLE · 191

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 →
ARTICLE · 192

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 →
ARTICLE · 193

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 →
ARTICLE · 194

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 →
ARTICLE · 195

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 →
ARTICLE · 196

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 →
ARTICLE · 197

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 →
ARTICLE · 198

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 →
ARTICLE · 199

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 →
ARTICLE · 200

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 →
ARTICLE · 201

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 →
ARTICLE · 202

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 →
ARTICLE · 203

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 →
ARTICLE · 204

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 →
ARTICLE · 205

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 →
ARTICLE · 206

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 →
ARTICLE · 207

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 →
ARTICLE · 208

Agent Router Architecture in Depth

A 2500-word walkthrough of agent router architecture: intent classifier, model pool, budgets, escalation, A/B evaluation.

Read article →
ARTICLE · 209

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 →
ARTICLE · 210

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 →
ARTICLE · 211

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 →
ARTICLE · 212

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 →
ARTICLE · 213

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 →
ARTICLE · 214

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 →
ARTICLE · 215

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 →
ARTICLE · 216

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 →
ARTICLE · 217

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 →
ARTICLE · 218

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 →
ARTICLE · 219

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 →
ARTICLE · 220

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 →
ARTICLE · 221

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 →
ARTICLE · 222

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 →
ARTICLE · 223

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 →
ARTICLE · 224

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 →
ARTICLE · 225

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 →
ARTICLE · 226

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 →
ARTICLE · 227

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 →
ARTICLE · 228

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 →
ARTICLE · 229

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 →
ARTICLE · 230

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 →
ARTICLE · 231

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 →
ARTICLE · 232

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 →
ARTICLE · 233

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 →
ARTICLE · 234

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 →
ARTICLE · 235

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 →
ARTICLE · 236

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 →
ARTICLE · 237

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 →
ARTICLE · 238

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 →
ARTICLE · 239

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 →
ARTICLE · 240

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 →
ARTICLE · 241

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 →
ARTICLE · 242

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 →
ARTICLE · 243

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 →
ARTICLE · 244

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 →
ARTICLE · 245

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 →
ARTICLE · 246

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 →
ARTICLE · 247

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 →
ARTICLE · 248

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 →
ARTICLE · 249

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 →
ARTICLE · 250

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 →
ARTICLE · 251

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 →
ARTICLE · 252

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 →
ARTICLE · 253

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 →
ARTICLE · 254

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 →
ARTICLE · 255

Java agent tools architecture

Deep-dive on Java agent tool architecture: declaration, JSON schema, registry, executor, timeouts, idempotency, streaming, governance.

Read article →
ARTICLE · 256

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 →
ARTICLE · 257

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 →
ARTICLE · 258

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 →
ARTICLE · 259

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 →
ARTICLE · 260

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 →
ARTICLE · 261

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 →
ARTICLE · 262

Workflow orchestration architecture

Deep-dive on Java workflow orchestration: state machine, persistence, retries, timers, signals, compensation, versioning, testing.

Read article →
ARTICLE · 263

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 →
ARTICLE · 264

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 →
ARTICLE · 265

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 →
ARTICLE · 266

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 →
ARTICLE · 267

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 →
ARTICLE · 268

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 →
ARTICLE · 269

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 →
ARTICLE · 270

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 →
ARTICLE · 271

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 →
ARTICLE · 272

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 →
ARTICLE · 273

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 →
ARTICLE · 274

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 →

Views are my own and do not represent any employer, past or present.