* docs(live): decompose the development guide into capability pages
Split dev-guide/part1-5 into Sessions, Events, Tools, Workflows, Audio and
video, Configuration, Voice, Supported models, and Build a custom server.
Rewrite index.md as the section Overview with a streaming-type decision table.
Implements Phase 2 of the Live Interactions<>ADK documentation revamp.
* docs(live): drop half-cascade model coverage
Half-cascade models are no longer supported for live agents. Remove the
Native Audio vs Half-Cascade architecture framing from Supported models and
the half-cascade caveats from Voice configuration. The eight prebuilt Live
API voices are kept, relabeled as native-audio voices alongside the extended
Text-to-Speech list.
* docs(live): retire the five-part dev guide and rewire navigation
Delete live/dev-guide/ and live/streaming-tools.md now that their content
lives in the capability pages. Regroup the Live nav into Get started / Build /
Ship / Reference, repoint every partN.md cross-link at its new page and
anchor, and add direct redirects for the removed paths (mkdocs-redirects does
not chain, so streaming/* keys point at final destinations).
* docs(live): point at the API reference instead of pinned source
Swap the RunConfig, Event, SequentialAgent, LiveRequestQueue and
Runner.run_live source-reference notes for Python API reference links.
Implementation pointers with line ranges are left as source links, since they
document internals with no public reference equivalent.
* docs(live): fix docs against adk-python main and drop the bidi-demo links
The bidi-demo sample was removed from adk-samples, so all the source links in
docs/live/ were dead. The sample is not shipped here either, so remove every
reference to it instead of repointing the links.
The code snippets themselves are unchanged. What goes away is only the
scaffolding that pointed at the sample:
- 32 code fences lose their linked 'Demo implementation: file.py:NN-MM' title
and become plain language-tagged fences.
- The 'Complete Demo Implementation' note in custom-server.md and the 'Demo
Implementation' note in events.md are dropped; both existed only to link out.
- The 'Learn More' note in tools.md and the model setup step in models.md keep
their guidance but no longer cite the sample's files.
- Prose that named the demo ('The bidi-demo demonstrates how to...') is
rewritten to describe the pattern directly.
- The Bidi Demo card and its screenshot are removed from the Live demos section
of index.md; LensMosaic remains.
Staleness fixes verified against adk-python main:
- StreamingMode.BIDI is inert. Only run_async() reads RunConfig.streaming_mode;
run_live() never does. Remove it from every run_live()-facing sample and
rewrite the 'StreamingMode: BIDI or SSE' section around the Runner method you
call. Keeps the old anchor via attr_list.
- configuration.md: run_live(session=...) is gone; use user_id/session_id.
- tools.md: streaming tools are registered lazily on first model call, not
scanned up front; the input_stream queue is created only for tools annotated
with LiveRequestQueue, and stop_streaming resets it to None. The old
runners.py / function_tool.py line references pointed at unrelated code.
- sessions.md: document DEFAULT_MAX_RECONNECT_ATTEMPTS = 5 and the go_away
reconnect trigger; correct 'automatic closure in SSE mode', which really only
happens for the internal queue under support_cfc.
- events.md: audio artifacts require RunConfig.save_live_blob=True;
get_author_for_event() also keys off llm_response.input_transcription.
- configuration.md: document history_config and the
initial_history_in_client_content=True that ADK sets when seeding history.
Not changed: get-started/streaming-java.md still sets StreamingMode.BIDI, which
could not be verified without an adk-java checkout.
* Refresh the Live API supported-model list
Checked against the Gemini Live API and Agent Platform model docs:
- models.md: replace the model list with a platform/model/stage table covering
gemini-3.1-flash-live-preview (Preview, Gemini Live API only),
gemini-2.5-flash-native-audio-preview-12-2025 (Preview), and
gemini-live-2.5-flash-native-audio (now GA, not "public preview").
- Document what Gemini 3.1 Live does not support: proactivity, affective
dialog, async function calling, thinking_budget (it uses thinking_level),
plus multi-part server events and the turn-coverage default change.
- Note that no Gemini 3.x Live model exists on Agent Platform, and that Live
API models are unavailable in the `global` location.
- voice.md: replace the Platform Compatibility text, which wrongly said
proactivity and affective dialog are unavailable on Agent Platform, with a
per-model support table.
- configuration.md: CFC's model check is a literal `gemini-2` prefix match, so
it rejects Gemini 3.x; refresh the runners.py line anchor.
- bidi-demo: same model table in the README, the 3.1 option and the regional
location requirement in .env.example, and an expanded model comment in
agent.py. The default stays on 2.5 native audio because the demo exposes
proactivity and affective dialog toggles. Re-anchored the agent.py line
links in models.md, tools.md, and sessions.md.
* docs(live): align docs with current Live API model capabilities
Verified docs/live/ and docs/runtime/runconfig.md against the Gemini Live
API capabilities guide, the Agent Platform Live API docs, and ADK 2.6.3.
Model consistency:
- response_modalities=["TEXT"] was presented as a valid live configuration
in configuration.md, events.md and sessions.md. Every Live API model ADK
supports is a native audio model, and those accept AUDIO only. Reframed
around AUDIO plus output audio transcription, and kept TEXT where it is
actually correct: the run_async() / SSE path.
- docs/runtime/runconfig.md configured response_modalities=["AUDIO","TEXT"]
in all three language samples. A session accepts exactly one modality.
- events.md snippets read event.content.parts[0], which drops content on
gemini-3.1-flash-live-preview because it sends multiple parts per server
event -- the failure models.md already warns about. All four snippets now
iterate over parts.
- tools.md gave the streaming-tools root agent model="gemini-flash-latest",
which has no Live API support, so the example could not run under
run_live() on either platform. That alias is still used for the one-shot
generate_content call inside the tool, where it is correct.
- configuration.md "Standard Gemini Models (1.5 Series) Accessed via SSE"
described a retired model family and labelled gemini-pro-latest /
gemini-flash-latest as 1.5 with 2M context.
- sessions.md: document that send_client_content is seeding-only on Gemini
3.x Live, and that ADK reroutes single-part text to send_realtime_input.
- models.md: gemini-live-2.5-flash-native-audio is the only GA Live API
model on Agent Platform, not the only one.
Coverage and links:
- configuration.md: document explicit_vad_signal, translation_config,
avatar_config and model_input_context.
- voice.md: note that ADK picks the live API version (v1alpha / v1beta1),
so proactivity and affective dialog need no http_options.
- Replace redirecting upstream URLs with their current targets:
live-guide -> live-api/capabilities, live-session ->
live-api/session-management, live -> live-api, and
cloud.google.com/vertex-ai -> the Agent Platform equivalents.
Verified correct, left alone: session and context limits, audio and video
specs, the proactivity / affective dialog model matrix, thinking_level vs
thinking_budget, the support_cfc gemini-2 prefix check, and ADK's AUDIO
default in run_live().
* docs(live): trim the response-modality and SSE material
Every Live API model ADK supports is a native audio model, so a live
session's response modality is always AUDIO and there is nothing to
choose. Shrink the section to the one thing that still matters --
reading text off event.output_transcription.
StreamingMode is only read by run_async(); the SSE tutorial that grew
around it here (protocol diagrams, progressive-streaming walkthrough,
mode-selection table, 1.5-series model list) duplicates
runtime/runconfig.md and describes models that no longer exist. Keep
the inert-BIDI warning and the run_live()/run_async() split, drop the
rest.
Document explicit_vad_signal, translation_config, avatar_config and
model_input_context, which had no coverage at all.
* docs(live): cut duplicated and non-ADK material
Six sections carried weight that did not belong to them:
- sessions.md 'Best Practices for Live API Connection and Session
Management' restated the Session Resumption and Context Window
Compression sections verbatim, down to the RunConfig snippets.
Deleted.
- sessions.md 'Concurrency and Thread Safety' + 'Message Ordering
Guarantees' explained asyncio.Queue at length and reproduced the
upstream task already in custom-server.md. Condensed to the three
properties that actually affect calling code, with a pointer to
the private _queue attribute dropped.
- sessions.md 'Architectural Patterns for Managing Quotas' was an
ASCII decision tree and a comparison table for two patterns that
reduce to one sentence each.
- index.md 'Real-world applications' spent five industry vignettes
making one point.
- events.md 'Deserializing on the Client' pasted 80 lines of the
bidi-demo's UI code, calling helpers that no longer exist anywhere
in these docs. Reduced to the event-shape handling it was meant to
show.
- audio-video.md 'Handling Image Input at the Client' was 130 lines
of getUserMedia/canvas/FileReader boilerplate plus a seven-point
recap of it.
Also fix two dead absolute links: /agents/multi-agents/#workflow-agents-as-orchestrators
(the page now redirects to workflows/index.md and the anchor is gone)
and /live/streaming-tools/ (no such page; the content is in tools.md).
* docs(live): restructure the live docs around ADK ownership
The live section had accumulated content it did not own: backend limits
restated on capability pages, Web Audio API implementation presented as
ADK guidance, and shared concepts re-explained rather than linked.
Applies one rule throughout: if a fact would still be true with the ADK
source deleted, it belongs on models.md or behind an upstream link, not
on a capability page.
- audio-video.md is now the format contract only (505 -> 121). The
browser mic-capture, ring-buffer playback, and camera-frame code was
Web Audio API with no ADK in it, had no counterpart in adk-python, and
no test anywhere. Deleted rather than relocated. The twelve numbered
'Key Implementation Details' lists restated the code comments directly
above them; deleted. The streaming-tool lifecycle section duplicated
tools.md; replaced with a link.
- custom-server.md gains 'Connect a client': what adk web handles
(16 kHz capture, 24 kHz playback, 1 fps JPEG, transcripts, barge-in),
where it stops, and the /run_live wire protocol, which was previously
undocumented. Keeps the one JS snippet that shows ADK's event shape.
Drops 'Client-side patterns'.
- sessions.md hands its platform-limits table and quota numbers to
models.md, keeping the session-pool design guidance. The same figures
had been stated in three places across two pages.
- models.md gains 'Platform limits and quotas' as the single source, and
loses the 'Key characteristics' list that restated configuration.md.
- configuration.md drops the 'Platform Support' column, which read
'Both' on 13 of 15 rows and labelled the two exceptions as platform
constraints when they are model constraints.
- tools.md compresses 'Tool execution context' to the one fact that is
live-specific: an InvocationContext spans the whole run_live() loop,
not a single turn.
- workflows.md points at graphs/index.md, the ADK 2.0 graph workflow
page, rather than the v0.1.0 multi-agent umbrella.
- Six internal links used absolute paths, which mkdocs does not
validate, so --strict had been silently ignoring them. Now relative.
- Fixes class.="grid cards" in get-started/index.md, which was breaking
the card grid.
* docs(live): standardize page leads and cut duplicated RunConfig prose
Every live page opened by narrating its own table of contents ("This page
covers X, Y, and Z"), which duplicates the rendered TOC, ages badly when
a heading changes, and spends a paragraph before the reader gets a fact.
evaluation.md already did the better thing: state the shared baseline,
link the canonical page, then cover only the delta. That is now the
convention across the section.
- sessions.md, events.md, configuration.md, audio-video.md,
workflows.md, tools.md, models.md and get-started/index.md now name
their non-live counterpart in the lead instead of listing their own
headings. Three pages had no outbound link to the shared concept at
all: tools.md to Custom Tools, models.md to Models for agents, and
workflows.md pointed at the v0.1.0 umbrella rather than graph
workflows.
- configuration.md drops the custom_metadata section (85 lines) for a
pointer plus the one live-specific consequence: a run_live() call is a
single invocation, so metadata is stamped on the whole session rather
than one turn. runtime/runconfig.md already owns the field.
- configuration.md trims max_llm_calls and save_live_blob to the facts
that are live-specific — max_llm_calls does not apply to run_live() at
all, and save_live_blob writes ~1.92 MB per minute per session to two
services — and drops the generic use-case and best-practice lists.
- custom-server.md replaces 'Key concepts', which re-pasted all three
code blocks from the complete example directly above it, with prose
explaining why the two tasks must run concurrently.
Live section: 2820 -> 2211 lines.
* docs(live): reframe pages around capabilities, fix eval config key
* Apply batched suggestions from code review
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* Apply suggestion from @joefernandez
* Apply batched suggestions from code review
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
---------
Co-authored-by: Stephen Allen <stephenaallen@google.com>
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* Add Agents CLI quickstart to Get Started
Agents CLI is currently explained only under Deploy > Agent Runtime and in
the Coding with AI tutorial, so readers reach it either not at all or with
the impression that it only configures AI coding assistants. Add a
quickstart alongside the language quickstarts, and a card on the Get
Started index so the choice is made up front.
* Rework the quickstart around the coding agent path
Lead with the coding agent as the intended way to use Agents CLI, add the
lifecycle diagram and the seven skills, and say the CLI has more than 25
commands so the skills do not read as the whole product. Name the real
Phase 0 questions (tools, inputs and outputs, success criteria) and close
the loop in Next steps, where evaluation grades against those criteria.
Drop the manual command section in favour of the upstream manual workflow
tutorial, drop the playground production warning, and use Antigravity
rather than Antigravity CLI to match the rest of the docs.
* Address review feedback on Agents CLI quickstart
- Tighten intro to 3-4 sentences; drop the coding-agent-path paragraph,
the "optional / ordinary ADK agents" paragraph, and the seven-skills
table (kept the lifecycle diagram)
- Installation: state clearly that setup also installs the ADK Python
packages, not just the CLI
- Authenticate: swap the default to the Gemini API key path; move Google
Cloud into a linked note pointing to the Google Cloud setup guide
- Build your agent: replace prose in each tab with a command block
containing verification steps as comments; move "Any other agent" out
of the tabs into a note; "tell it" -> "tell the coding agent"
- Add explanatory sentence before the scaffold command block clarifying
that the coding agent runs the commands (and the reader can too)
- Get Started index: drop the language-quickstarts-vs-Agents-CLI framing
paragraph (unlikely to be read in that position)
* Update agents-cli.md
* Update agents-cli.md
* Delete docs/assets/agents-cli-lifecycle.png
---------
Co-authored-by: pierpaolo28 <pierpaolo28@users.noreply.github.com>
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* feat(search): replace the built-in search with Pagefind
Material's search ranked identifier queries badly, split one page across
a row per heading, and showed only the first handful of matches. Pagefind
indexes at build time, groups sub-results under their page, and pages
through the whole result set.
hooks/pagefind.py marks each page's content <article> with
data-pagefind-body and runs the indexer over the built site. It fails the
build on six conditions: the anchor missing, nothing marked, marked and
indexed counts disagreeing, an exclude selector matching no page, a UI
asset not emitted, and the ranking API gone from the bundle.
MKDOCS_PAGEFIND_SKIP=1 skips indexing for a faster `mkdocs serve`, warns
so that --strict fails pull requests, and is refused under gh-deploy,
which publishes without --strict.
The header hosts Pagefind's own modal and trigger components, so there is
little UI to own. overrides/main.html raises termSimilarity so "LlmAgent"
beats pages that merely say "agent" often, mirrors Material's colour
scheme onto data-pf-theme, clears the search input on close around an
upstream bug, and restores the / and s shortcuts that left with the old
plugin. The lunr-specific CSS is gone.
* Update header.html
* Update custom.css
* Update custom.css
---------
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* Add A2A consuming quickstart for Kotlin
adk-kotlin has been able to consume remote A2A agents since 0.6.0, and the docs
had no Kotlin page for it. This adds one alongside the Python, Go and Java
quickstarts, plus its nav entry.
A new page rather than a tab: docs/a2a has no tab groups at all, it is one page
per language, so this follows the section's own shape.
Two dependencies are needed, not one. The a2a artifact publishes the A2A SDK as
runtime-only, and A2AAgent's httpClient parameter defaults to JdkA2AHttpClient(),
so a2a-java-sdk-client has to be on the compile classpath as well. That number
was established by compiling, not by reading module metadata: the a2a artifact
alone fails with "Cannot access class 'A2AHttpClient'", and adding the client
artifact is sufficient -- spec and the jsonrpc transport arrive transitively.
Only the consuming side is documented, because that is all that exists: no
webserver source at v0.7.0 mentions a2a, so there is no Kotlin equivalent of the
exposing quickstarts. The page says so and links to the Python and Java ones.
A2AAgent is a suspending factory, and the implementation class behind it is
internal, so the factory is the only way to construct one. The snippet notes it.
Verified end to end rather than by compiling alone: served a real agent card
from a local server and ran the snippet, which fetched it, parsed it and wired
the remote agent in as a sub-agent --
"Root agent root_agent delegates to prime_agent".
* Correct the agent card claims and make the server step usable
A2AAgent does not read the remote's name from the card: the name is the
caller's, and independent of what the card advertises. It does not read the
transport either, which is hardcoded to JSON-RPC. What the card supplies is
the description and the streaming capability.
The server step told readers to start a server without saying how, and the
two obvious candidates do not work: adk-kotlin parses A2A 1.0 cards, which
require supportedInterfaces with a protocolBinding, and the adk-java and
adk-python samples both publish 0.3-style cards that A2AAgent rejects with
AgentCardResolutionError. State that, and give a minimal card verified by
running the snippet against it.
Also fix the root agent instruction, which referenced dice-rolling the agent
cannot do; match the Java snippet's prime-delegation wording.
* Point the A2A quickstart at the adk-python sample server
The page claimed neither the adk-java nor the adk-python sample works as the
server for this quickstart. The adk-python half is wrong. adk-python does not
serve its `agent.json` verbatim: `fast_api.py` parses it through
`_compat.parse_agent_card`, and under a2a-sdk 1.x that parse promotes the
legacy `url` and `preferredTransport` into `supportedInterfaces`. The dependency
is `a2a-sdk>=0.3.4,<2`, so a fresh install resolves to 1.x and the card on the
wire is A2A 1.0 - exactly what the Kotlin client requires.
So the page now names a server a reader can actually start, instead of asking
them to hand-write a card:
adk api_server --a2a --port 8001 \
contributing/samples/a2a/a2a_basic/remote_a2a
Its card is served under the agent's own prefix, and the snippet's agentCardUrl
follows it to http://localhost:8001/a2a/check_prime_agent. Confirmed the route
prefix in `attach_a2a_routes_to_app` and that the sample card's own `url`
already points there.
The adk-java half of the claim was correct and stays: `a2a_server` is pinned to
the 0.3.x A2A SDK and serves a 0.3 card. That, and the A2A 1.0 requirement it
illustrates, move into a note. The hand-written card survives as a collapsible
fallback for readers bringing their own server.
Reported by joefernandez in review of #2118.
The site rendered one language under two names. Tab labels were split
137 `TypeScript` / 53 `Typescript`, with three pages carrying both
spellings at once (custom-agents.md 7/7, patterns.md 1/7,
function-tools.md 4/1), and the language-support badges were split 67/18
the same way. Because pymdownx.tabbed slugifies tab labels to lowercase,
both variants rendered and linked fine, so no link check or build warning
ever flagged it -- it was visible only to readers, as two names for one
SDK.
Every user-visible occurrence is normalized to `TypeScript`, plus the two
inconsistencies that turned up while doing it. 80 changed lines, accounted
for exactly:
53 tab label === "Typescript" -> === "TypeScript"
18 badge span lst-typescript">Typescript -> TypeScript
3 prose mention cloud-run.md, mcp-tools.md, workflows/patterns.md
2 api-reference/index.md card heading and link text
1 badge div attr title="...Python and Typescript."
1 mkdocs.yml nav Typescript ADK -> TypeScript ADK
1 code fence ```javascript -> ```typescript on a .ts include
1 artifacts/index.md closing summary sentence
---
80
The first six rows are pure casing: 78 lines that differ from their
originals by nothing but `Typescript` -> `TypeScript`. The last two are
not, and are the reason this is not a `sed`:
llm-agents.md:872 fenced `--8<-- ".../capital_agent.ts"` as ```javascript.
It was the only javascript-fenced `.ts` include in docs/ (the other 189
TypeScript fences are correct), and it cost that one snippet its
TypeScript highlighting.
artifacts/index.md:1084 closed the page by naming languages and got the
list wrong. It described reaching the artifact methods "using Python's
context objects or directly interacting with the `BaseArtifactService` in
Java" -- a two-language enumeration at the end of a page that carries
Python, TypeScript, Go, Java and Kotlin tabs (11/10/10/10/11), and one
that contradicts :556, which correctly names four of them. The
enumeration is dropped rather than extended: the sentence now describes
the two ways to reach these methods -- through the context object, or
through `BaseArtifactService` -- which is what the page actually teaches
and does not rot when a sixth language is added.
docs/api-reference/index.md is included even though the rest of
docs/api-reference/ is generated output that must not be touched. That
tree holds 3,140 generated HTML files and exactly one hand-authored page:
this one. It is Markdown, it is the only api-reference entry mkdocs.yml
lists as `.md` rather than `index.html` (:272, :441), it uses Material
`grid cards` and `:fontawesome-*:` shortcodes, and it carries a
`CONTRIBUTORS:` note citing issues #1716 and #1717. Its TypeScript card
already said "TypeScript" twice in its body text while its heading and
link text said "Typescript"; those two are now consistent with the body.
No generated file is modified.
Not in this change: the broken `SseConnectionParams` sample in
mcp-tools.md (docs-ts/p6c-mcp-ts-sample) and the `@google/adk` example
version bumps (docs-ts/p6b-example-versions). Only the casing of the
prose line above that sample is touched here.
Verified: `mkdocs build` exits 0 with an empty warning set on both main
and this branch, and the two warning sets are identical. A rendered
before/after diff of the whole site shows every `__tabbed_*` id, every
tab radio id and every heading anchor unchanged. Zero `=== "Typescript"`
and zero `lst-typescript">Typescript` remain anywhere in the repo.
Co-authored-by: Amaad Martin <amaadmartin@google.com>
* Stop publishing homepage partials as standalone pages
The homepage is assembled from partials in docs/_includes/homepage/ via the
macros plugin. mkdocs.yml listed `/_includes/**` under `not_in_nav`, which only
suppresses the "not in nav" warning -- the partials were still built, published,
and indexed. All ten had live URLs, e.g. https://adk.dev/_includes/homepage/_eval/.
These pages are broken in isolation: the partials use paths relative to the site
root, so on their own URL links like `href="evaluate/"` resolve to
/_includes/homepage/_eval/evaluate/ (404) and images fail to load.
Move the pattern to `exclude_docs` so the partials are skipped by the build,
and delete _eval.md and _ai-dev-tools.md, which were dropped from index.md in
#1772 and are no longer included anywhere.
Verified with a local build: site/index.html is byte-identical before and after,
and the only difference across the entire output tree is the removal of the ten
_includes/ pages, which also disappear from sitemap.xml and the search index.
* Update mkdocs.yml
remove extended comments from config file; PR and blame records are sufficient explanation.
---------
Co-authored-by: Joe Fernandez <931947+joefernandez@users.noreply.github.com>
* docs(agents): scaffold managed agents page and nav entry
* docs(agents): add managed agents get-started and decision guidance
* docs(agents): complete managed agents page (how it works, limitations, resources)
* docs(agents): simplify managed agents "how it works" and refine copy
Replace the internals-heavy "How it works" paragraph with a high-level
description that links to the Interactions API, drop the scenario table
in favor of the two-bullet comparison, add a note on how ManagedAgent
maps to the Managed Agents API (data plane vs. control plane), and
remove em-dashes throughout.
* docs(agents): point Interactions API link to the Gemini API overview
* Clean up managed agents page naming, structure, bullets, and links, and add it to the agents overview
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs(integrations): rename Mimir Memory -> Perseus Vault Memory (supersedes #1877)
* docs(integrations): address review on perseus-vault memory page
- Restore "Use cases" section
- Add intro phrases before Installation and Use-with-agent code blocks
- Point the binary prereq at the Installation section
- Drop the non-existent `cargo install perseus-vault` step
- Remove the "(formerly Mimir/Mneme)" lineage note
- Add trailing newline
* docs(integrations): restore Perseus live context (optional) section
Carry over the optional [perseus] extra / perseus_context_agent section
from the original page, updated to the Perseus Vault names.
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* wip: temporary staging
* Consolidate Google Cloud and Agent Platform connection info
* remove gcp-mentions file
* adding links to central GCP connection page
* minor updates
* responded to review comments
* Move adk web Visual Builder page content into Runtime > adk web page
* Clarify Visual Builder in intro
* Fix casing for consistency
* More casing fixes
* Move Visual Builder page under Web Interface
* Fix link from runtime index page
* Keep Visual Builder file at original path, nest under Web Interface in nav
---------
Co-authored-by: Joe Fernandez <joefernandez@users.noreply.github.com>
* Add Kotlin to hero / front page
* Add quickstart page for Kotlin
* Complete Kotlin quickstart guide and fix hero code sample (#2)
* Replace GitHub repo links with language icons in header (#3)
* Fix header icon FOUC and homepage font weight regression (#4)
* Testing staging pipeline
* Revert test edit (for staging pipeline)
* Update language icon tooltips to indicate GitHub destination (#5)
* Add link to ADK Kotlin release notes (#7)
* Initial commit of ADK Kotlin API reference docs (#6)
* Add script to generate ADK Kotlin API reference docs (#8)
* Update links and link checker ignore list (temporarily) (#9)
* Add ADK Kotlin for Android getting started guide to Advanced setup page (#10)
* Add advanced setup page with steps to "Use ADK Kotlin in Android projects"
* Update temp link checker rules
* Add placeholder folder for adk-samples (#13)
* adding linter/compilation checks for kotlin snippets (#12)
* adding linter/compilation checks for kotlin snippets
* Add Kotlin validation scripts
* Initial commit of Kotlin sample agents for adk-samples (#15)
* Adding kotlin snippet for llm agents (#16)
* Adding kotlin snippets to Events (#17)
* Pull changes to docs/events/index.md from glaforge-kotlin-snippets
* fixing kotlin event timestamp and longRunningToolIds
* Fix language tags (#19)
* Fix language tags
* Update
* Fix wrapping
* Fix wrapping (again)
* Fix wrapping/format
* Fix language tag on integration page
* Enable check_paths in PyMdown Snippets Extension to make the build fail if a snippet can't be found (#20)
* Update mkdocs config (#21)
* Fix broken links, update URLs to adk.dev, and improve (temp) lychee config (#22)
* Add Kotlin/maven badge to README (#23)
* Adding Kotlin snippets for artifacts (#18)
* Pull Kotlin snippets for artifacts from glaforge-kotlin-snippets
* Add comprehensive Kotlin snippets for artifacts
* Refactor artifacts documentation to use external Kotlin snippets
* Update Kotlin model to gemini-flash-latest
* Fix GCS initialization in Kotlin artifact snippet
* afixi failing test with capital-agent added to files_to_check
* Fix snippet label syntax for MkDocs build
* Configure proper Gradle project for Kotlin snippets and fix dependencies
* Add KSP support and generated sources to Kotlin snippets build
* fixing capital_agent turnComplete
* Fix syntax error in build.gradle.kts by removing invalid placeholders (#25)
* Adding Kotlin snippets to google-gemini.md (#27)
Pulling kotlin changes to google-gemini.md from glaforge-kotlin-snippets
* Add a warning about not adding an api key to production code. (#28)
* Add a warning about not adding an api key to production code.
* Update note
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Add ADK Demo App sample showcasing Gemini-powered agents (#29)
This sample demonstrates how to use the Google ADK (Agent Development Kit) in an Android application to create a chat interface powered by a Gemini-based "Fun Facts" agent. The implementation features:
* Integration with the Kotlin ADK core and processor libraries.
* A `FunFactsAgent` defined using `LlmAgent` and the Gemini model.
* A `ChatViewModel` utilizing `InMemoryRunner` for asynchronous message streaming.
* A modern UI built with Jetpack Compose and Material 3.
* Build configuration logic for secure API key management via environment variables or `local.properties`.
* Update Kotlin docs and samples to align with adk-kotlin API changes (#30)
Rename GeminiModel to Gemini, @AdkTool/@AdkParam to @Tool/@Param,
adkTools() to generatedTools(), replace DebugRunner with InMemoryRunner,
fix AgentLoader import path, use SingleAgentLoader, bump Kotlin to
2.3.21 and KSP to 2.3.7, and update Android minSdk from 24 to 26.
* adding kotlin info to READMEs (#14)
* Reorganize Android sample agent and add READMEs (#31)
* Move Android sample agent
* Update repo README, add Android README, update sample agent README
* Minor edit to language support tags (#32)
* Remove blog post link (#33)
Will re-add after it's published
* Remove examples link (#34)
* Adding Kotlin snippets for Sessions docs (#26)
* initial kotlins snippets additions to sessions docs
* Updating memory docs with kotlin snippets
* Adding kotlin snippets to session state docs.
* update model to gemini-flash-latest
* sessions examples clean-up
* fixing sessions snippet markers
* adding kotlin session snippets to files to test
* adding callback to memory_example
* Fixing capital agent snippet (#35)
Fixing file name
Updating adkTool > Tool
Updating GeminiModel > Gemini
* Adding kotlin snippets for tools docs (#36)
* adding function tool kotlin snippets
* adding function_tools snippets to files to test
* Adding kotlin snippets to observability docs (#37)
* initial kotlin observability updates
* adding observability snippets to file check (#38)
* Adding Kotlin snippets to Callbacks docs (#39)
* kotlin callbacks snippets
* adding callbacks snippets to file check
* Align Kotlin and KSP versions with published 0.1.0 artifacts (#40)
* switch CLI entry points from InMemoryRunner to ReplRunner (#41)
* Switch CLI entry points from InMemoryRunner to ReplRunner
* Fix wording
* Update API reference docs for Kotlin, 2026-05-18 (#42)
* Remove ADK on Android note until published (#43)
* Update Kotlin code samples (#44)
* Rename GeminiModel to Gemini in Kotlin snippets and docs
* Remove broken SessionKey call and use sessionId directly in AgentTool snippet
* Rewrite Go hero snippet to use llmagent API
* Use isFinalResponse with safe access in CapitalAgent snippet
* Use Role.USER constant instead of raw string in SetupExample
* Use full semver v0.1.0 in Kotlin language support tags
* Remove Android setup steps, moving to new property (#45)
* Tutorial Kotlin agent (#46)
* Adding multi-tool-agent snippet and updating tutorial
* Fixing Go language order on tutorial page
* adding multi tool agent example to files to test
* Inline Kotlin get-started code sample
* Kotlin Multi agents snippets (#47)
* Multi-agent kotlin snippets
* Fixing docs tags in multiagent example
* Fix Kotlin language support tags, code samples, and google-gemini.md cleanup (#48)
* Add Kotlin v0.1.0 to language support tags across docs
* Fix MultiToolAgent.kt model string and argument style
* Update MultiAgentExample.kt to use gemini-flash-latest model string
* Fix google-gemini.md: add Kotlin sample, remove unsupported Java tabs
* Remove explicit apiKey from CallbackBasic.kt for consistency
* Standardize Gemini() constructor to use named args in all snippets
* Remove adk-samples directory (moved to google/adk-samples#1969)
* Remove adk-samples directory (moved to google/adk-samples#1969) (#49)
* Update API reference docs for ADK Kotlin 0.1.0 (#50)
* Remove adk-samples directory (moved to google/adk-samples#1969)
* Update API reference docs for ADK Kotlin 0.1.0
* Remove kotlin lycheeignore config (#51)
* Remove adk-samples directory (moved to google/adk-samples#1969)
* Remove Kotlin .lycheeignore config links
---------
Co-authored-by: Toni Klopfenstein <2359976+ToniCorinne@users.noreply.github.com>
Co-authored-by: Jolanda Verhoef <JolandaVerhoef@users.noreply.github.com>
* Add agent routing and model routing docs for RoutedAgent and RoutedLlm in ADK JS
* Update example code snippets
* Add renamed code sample files
* Update lychee link checker config
* Shorten docs and snippets paths and filenames
* Update titles
* Rework intros
* Rework intros
* Add notes about experimental status
* Move InMemoryRunner outside of code snippet regions since it's unused in rendered snippet
* Rename asp.md to agents-cli.md and update redirects
- Renamed docs/deploy/agent-runtime/asp.md to agents-cli.md
- Updated navigation reference in mkdocs.yml
- Added redirect rule: agent-runtime/asp.md → agents-cli.md
- Updated existing redirect: agent-engine/asp.md → agents-cli.md
The 'asp' name no longer makes sense as a page name now that we're
referencing Agent Starter Pack / agents-cli directly.
Note: This applies on top of PR #1673 which renamed:
- 'agent-engine' directory → 'agent-runtime'
- 'Agent Engine' product → 'Agent Runtime'
* Complete migration from Agent Starter Pack to agents-cli
This commit completes the migration from "Agent Starter Pack (ASP)"
terminology to "agents-cli" across documentation and updates references
to align with the new Agent Platform tooling.
Changes:
- Updated docs/deploy/agent-runtime/agents-cli.md: Replaced all "Agent
Starter Pack" and "ASP" references with "agents-cli", updated commands
from 'uvx agent-starter-pack enhance --adk -d agent_engine' to
'agents-cli scaffold enhance --deployment-target agent_engine', and
updated all documentation links to point to google.github.io/agents-cli/
- Updated docs/tutorials/coding-with-ai.md: Replaced "ADK Dev Skills"
section with "agents-cli" section, changed installation from
'npx skills add google/adk-docs/skills -y -g' to
'uvx google-agents-cli setup', updated skill names table to new
agents-cli skill names, and added CLI commands table
- Updated docs/deploy/agent-runtime/index.md: Changed "Agent Starter Pack
deployment" to "agents-cli deployment" and updated reference from
"The Agent Starter Pack (ASP)" to "agents-cli in Agent Platform"
- Deleted docs/skills/ directory: Skills have been migrated to the
agents-cli repository
* Fix agents-cli deployment instructions to use correct CLI commands
Replace incorrect make command references with agents-cli deploy and agents-cli infra single-project. Update deployment workflow to reflect actual agents-cli usage.
* Update navigation to use agents-cli instead of Agent Starter Pack
Replace "Agent Starter Pack" with "agents-cli" in the navigation menu. Redirects from old ASP URLs are already in place.
* Restore docs/skills/index.md - Agent Skills documentation
This file documents the Agent Skills feature (agentskills.io specification),
not ADK Dev Skills. It was mistakenly deleted in the ASP → agents-cli migration.
Agent Skills are a general ADK feature where agents can use modular,
self-contained units of functionality based on the Agent Skill specification.
* Fix terminology: Agent Engine runtime → Agent Runtime runtime
Update deployment path description to use consistent "Agent Runtime runtime"
terminology instead of "Agent Engine runtime".
* Fix broken agents-cli documentation links
Replace broken links to /guide/ (which 404s) with correct links to main
documentation page. The /guide/ URL is a directory listing that doesn't
exist in the agents-cli docs structure.
Changes:
- Line 31: "Development guide" link → "Guide" pointing to main docs
- Line 221: "Development guide" link → "agents-cli documentation" pointing to main docs
Both now correctly point to https://google.github.io/agents-cli/
* Delete ADK Dev Skills directory - migrated to agents-cli
Remove the entire skills/ directory containing ADK Dev Skills. These
skills have been migrated to the agents-cli repository and are now
distributed as part of the agents-cli package.
Users should now install skills via:
uvx google-agents-cli setup
Instead of the old method:
npx skills add google/adk-docs/skills -y -g
Deleted skills (now available in agents-cli):
- adk-dev-guide → google-agents-cli-workflow
- adk-cheatsheet → google-agents-cli-adk-code
- adk-eval-guide → google-agents-cli-eval
- adk-deploy-guide → google-agents-cli-deploy
- adk-observability-guide → google-agents-cli-observability
- adk-scaffold → google-agents-cli-scaffold
Total: 19 files removed across 6 skill directories
* Remove skills CI checks
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* docs: add MLflow AI Gateway model provider page
Adds a model provider page showing how to connect ADK agents to
MLflow AI Gateway via the LiteLlm wrapper with a custom api_base.
* docs: add Create Endpoint screenshot
* docs: move MLflow AI Gateway to integrations section
Per reviewer feedback: move the gateway page from agents/models/ to
integrations/ as a standalone integration page. Rename the existing
MLflow tracing page catalog_title to "MLflow Tracing" to distinguish
the two entries.
* Remove nav entry for integrations
* Additional cleanup / redirects / renames
* Additional edits
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Add ambient agents documentation
Document how to build event-driven ambient agents using ADK trigger
endpoints and the /run endpoint. Covers Pub/Sub, Eventarc (Standard
and Advanced), Cloud Scheduler, concurrency control, retry logic,
session lifecycle, and deployment to Cloud Run.
* Address reviewer feedback: clarify event processing flow
- Move "How events are processed" higher, right after trigger endpoints
intro, so the mental model comes before setup instructions
- Reword step 5: explicitly describe status code behavior (200 = ack,
500 = retry) instead of vague "determines whether to retry"
- Clarify that trigger endpoints auto-create sessions without needing
the --auto_create_session flag
- Restructure heading hierarchy under "Using trigger endpoints"
* Address reviewer feedback from koverholt
- Use named sections (--8<-- [start/end]) in code snippets to hide
license headers in doc embeds
- Change model to gemini-flash-latest alias
- Restructure: show example agent first, then enable instructions,
then "Try it locally" with step-by-step commands and curl test
- Fix port consistency (curl uses 8000 matching adk api_server default)
- Add curl example for /run endpoint
---------
Co-authored-by: Kristopher Overholt <koverholt@google.com>
* Update site_url to adk.dev in mkdocs.yml
* Add docs/CNAME for GitHub Pages custom domain
Required by MkDocs to preserve the custom domain configuration
across gh-deploy builds, which overwrite the gh-pages branch.
* Auto-generate Python REST API reference docs from FastAPI OpenAPI spec
* Fix link and llmstxt config
* Generate REST API docs with web=False
* Use simpler BaseLayout for generated REST API docs
* feat: introduce A2A Extension for V2 agent executor and document advanced configuration options in quickstart guides.
* docs: Update A2A Extension title, clarify ADK reference, and add link to activation mechanism.
* add spacing
* docs: Update A2A integration terminology and configuration parameters in quickstart guide
* docs: Enhance A2A Extension and V2 Agent Executor documentation by detailing benefits, usage, and configuration options, and update navigation.
* docs: Update output misclassification description from root agent to event thoughts.
* chore: remove extraneous blank line
* add extension details
* fix typo
* rewrote the intro for A2A extension
* Removed "V2 Implementation" from TOC
We don't want to specify version numbers in the TOC because this immediately makes the docs look out of date when the version changes.
* Update a2a-extension.md
* Moved A2A Extension up the TOC hierarchy so it's more visible
* docs: Simplify A2A Quickstart (Consuming) Python navigation entry in mkdocs.yml.
* fix typo
---------
Co-authored-by: Joe Fernandez <joefernandez@users.noreply.github.com>
* fix: change the tool name from ADK Bidi-streaming to ADK Gemini Live API Toolkit
fix: change the tool name from ADK Bidi-streaming to ADK Gemini Live API Toolkit
* fix: Rename "Bidi-streaming" to "Gemini Live API Toolkit" in nav, landing page, quickstart, and feature matrix
Updates mkdocs.yml navigation, streaming landing page card titles/links, quickstart cross-reference, and feature matrix entries.
* docs: update source references for ADK v1.26.0
Update all ADK source code references to point to the v1.26.0 commit
with corrected line numbers for drifted references.
---------
Co-authored-by: Joe Fernandez <joefernandez@users.noreply.github.com>
* docs: MCP pages, add tip pointer to Tools and integrations
* adding Integration tips
- also removing incorrect Plugin / ADK Web incompatibility issue
* docs: centralize 3P and 1P Integrations content
- move all content to integrations/
- frontmatter headings for all integration listings
* respond to review comments
* docs: Add grounding index page with RAG resources
Add an index page for the grounding section that provides an overview
of grounding approaches in ADK including Google Search, Vertex AI Search,
and Agentic RAG. Features links to documentation, blog posts, notebooks,
and sample agents.
* updates to improve grounding docs
---------
Co-authored-by: Joe Fernandez <joefernandez@google.com>
Co-authored-by: Joe Fernandez <joefernandez@users.noreply.github.com>