All 186 articles, sorted alphabetically
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 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 →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 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 →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 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 →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 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 →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 →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 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 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 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 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 →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 →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 →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 →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 →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 →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 →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 →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 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 →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 →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 →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 →Idempotency architecture
Deep-dive on idempotency for side-effecting agent tool calls in a Java ADK service: how to retry aggressively without double-charging, double-sending,…
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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →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 →