ADK for Java

ADK for Java

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

563Articles
563Topics covered
Articles in this category

All 186 articles, sorted alphabetically

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 · 085

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 · 114

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Java agent tools architecture

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

Read article →
ARTICLE · 169

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

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

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

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

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

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

Workflow orchestration architecture

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

Read article →
ARTICLE · 176

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

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

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

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

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

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

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

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

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

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

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 →