* Upgrade Kotlin docs to adk-kotlin 0.9.0 and move off AdkWebServer
adk-kotlin 0.9.0 split the web server into AdkApiServer, which serves the agent
runtime contract headlessly, and AdkDevServer, which adds the development UI.
AdkWebServer is deprecated in that release and goes away at 1.0, so WebMain.kt
as written here stops compiling the day 1.0 ships.
The quickstart snippet now builds an AdkDevServer from an AdkServerConfig. That
drops three imports: AdkServerConfig.inMemory() supplies the agent loader and
the in-memory session and artifact services the old constructor took one by one.
Two behaviour notes come with the split. AdkWebServer pinned host to 0.0.0.0;
the new classes bind loopback, which is a visible change for anyone reaching the
server from a container or a remote box, so the page now says so and names the
host parameter in prose. It prints no worked example on purpose: the only value
such a snippet could carry is either 127.0.0.1, which overrides the default with
itself, or 0.0.0.0, which is a copyable way to publish an unauthenticated server
on every interface, and AdkDevServer construction is already shown in full
earlier on the page. And AdkApiServer is the headless half of the same config,
so it gets a short section rather than a bare mention - the bundled Kotlin API
reference is still generated at 0.5.0 and documents none of these classes, so a
link there would not have helped. The "not meant for production" warning now
sits directly after the screenshot, where go.md, java.md and python.md put it.
The dependency blocks readers copy from still pinned 0.8.0, and so did the
examples project. Verified on Maven Central that 0.9.0 is published for every
artifact named across these pages: -core, -processor, -webserver, -litertlm,
-a2a and -integrations. Checked the 0.9.0 POMs before bumping: Ktor still
resolves to 2.3.13 and a2a-java-sdk-client to 1.0.0.Final, so the explicit pins
stay correct and the two comments citing them only needed their version
reference moved. The `Kotlin v0.x` support badges are deliberately left alone:
they record the release a feature landed in, not the current version.
Verified by compiling: every snippet added here was compiled verbatim against
the published 0.9.0 artifacts on JDK 17, and the whole examples project still
builds at 0.9.0. As a negative control, the old snippet still compiles at 0.9.0
but emits the deprecation warning, which is what makes this a 1.0 break rather
than a present-day one. Note the Kotlin snippet check only builds .kt files
changed in the PR, so it will not cover a markdown-only change like this.
* Apply suggestion from @joefernandez
* Apply suggestion from @joefernandez
* Removing information bloat from the Get Started
see comments for where to locate this information
---------
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.
* Update ADK doc according to issue #1521 - 25
* Document suppression of experimental feature warnings
Added instructions to suppress experimental feature warnings in logs in a note, whole section deleted
* Document suppression of experimental warnings
Added information on suppressing experimental feature warnings in logs.
* Update quickstart-exposing.md
---------
Co-authored-by: Juan Carlos Gonzalez Resendiz <juancarlosgon@google.com>
Co-authored-by: Zyan <zyanya@google.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>
* docs: home page
* updates based on feedback
* respond to review feedback
* docs: update gemini selector strings to "flash-latest"
* Update homepage.css
* Replace google.github.io/adk-docs URLs and /adk-docs/ paths with adk.dev
Migrate all hardcoded documentation references to use the new custom
domain. Update root-relative links to remove the /adk-docs/ subpath
prefix since the site will be served from the root of adk.dev.
* Additional fixes
* 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>
* docs: Add Go language quickstart
* updates based on review comments
* fix tab stops
* update based on review comments
* sync with main
* update to tested version
* Added google_search snippet
* Fix: Address Go style guide issues in google_search.go
* Migrated to new API
* Fixed tool info in md file
* Added partial check
* Added function-tools sample
* Migrated to new API
* Added partial check
* Ran linter
* feat: add go fmt check
* Run go fmt only on changed files
* Added google_search snippet
* Fix: Address Go style guide issues in google_search.go
* Migrated to new API
* Added partial check
* Added function-tools sample
* Migrated to new API
* Added partial check
* Ran linter
* feat: add go fmt check
* Run go fmt only on changed files
* Feat: Add Golang example for LLM agents
* Added schema agent
* Added session support
* Migrated to new API
* Added back OutputKey
* Added missing snippets
* Moved snipped to its own package
* Minor cleanup
* Reverted llm-agents.md
* Added back correct changes to llm-agents.md
* Updated to newest API
* Ran linter
* WIP
* WIP: Added the rest of the agents
* Added sequential agent
* Migrated agents to new API
* Fixed snippet tags
* Updated parallel and sequential with OutputKey
* Updated loop agent
* Cleanup
* Fixed and ran linter
* Removed comment
* Ran linter
* Added custom agent snippets
* Migrated to new API
* Fixed incorrect info about channels since run returns an Iterator, not Channel
* Cleanup and renaming
* Ran linter
* Fixed md
* Added multi-agent docs
* Updated to use AgentTool
* Split snippets
* Added missing file
* Ran linter and fixed API
* Added Models snippets
* Migrated to new API
* Embedded imports
* Ran linter
* Added long running tool
* Ran linter and fixed API
* Switched to two-turn style
* Ran linter
* Added callback snippets
* Added back imports
* Added types of callbacks snippets
* feat(go): align callback snippets with other languages
* Ran linter and updated API
* Added tool callbacks
* Added artifact snippets
* Use story.pdf instead of random bytes
* Fixed issue with artifact loading
* Cleanup unneeded fixes
* Added back inadvertently removed GCS section
* Addressed PR comments
* Ran linter
* feat: Added context snippets
* Fixed callback signature
* Fixed additional callbacks
* Added remaining snippets
* Added conceptual runner example
* Removed duplicate code
* Clean up tags and imports
* Updated API
* Twaked text
* Ran linter
* Fixed broken API issues
* Updated to latest Go ADK API
* Added func param info
* Interleaved Py and Go
* Revert mistakes
* Removed extra newline
* Added example cloud run code and update md with Go (#41)
* Added example cloud run code and update md with Go
* Added a2a_agent_url and fixed future tense
* Moved Go before Java
---------
Co-authored-by: ivanmkc <ivanmkc@google.com>
* adding go snippets to runconfig docs
* realigning runconfig go examples with current state of adk-go.
* adding language support tags to individual runtime config fields
* removing unsupported supportcfc go examples
* removing unsupported streamingmode.bidi go snippets
* Added AgentTool examples (#31)
* Added AgentTool example
* Ran formatter
---------
Co-authored-by: ivanmkc <ivanmkc@google.com>
* adding initial go sessions.sessions snippets
* updating go session docs + session examples
* update go session snippets
* updating DatabaseSessionService language support tag
* cleaning up go vertex ai comments
* removing go.mod for session_management_example
* docs: add language support tags for Go
* initial go runtime sample updates
* fixing runtime go snippet formatting
* formatting updates to runtime go snippets
* updating runtime go examples to streamline to newer go features
* adding go snippets for events
* updating go snippets for events
* adding artifactdelta snippet for go
* minor java fixes, cleaning up go event.content
* Custom tools: Merging again (#44)
* Added missing custom-tools snippets
* Split user_preference runner code
* Split more files
* Tweaks
* Split session into 1 and 2 and added artifact saving
* Fixed conflict
---------
Co-authored-by: ivanmkc <ivanmkc@google.com>
* Fixed tab issue with cloud-run md (#45)
Co-authored-by: ivanmkc <ivanmkc@google.com>
* adding initial go snippets for memory services
* updating go memory sample, adding python formatting in docs to clarify current support.
* removing go replace for memory example
* removing go.sum from memory_example
* fixing go formatting for memory example
* fixing go memory snippets to streamline examples in docs
* removing unnecessary go.mod for memory_example.go and snippet cleanup
* adding go session state snippets."
* adding additional go state examples for state injection
* fixing go formatting
* fixing language ordering on session/state.md; removing unnecessary go.mod files
* reworking error functions in go session state samples
* fixing go formatting on session state samples
* initial go snippets for safety tools
* fixing go snippet formatting in safety/index.md
* temp storing safety example
* cleaning up go snippets in safety docs; deferring safety go full example
* cleaning up go safety snippets
* Added link to Go API docs (#47)
Co-authored-by: ivanmkc <ivanmkc@google.com>
* Added a2a_basic sample (#46)
* Added a2a_basic sample
* Removed dummy LLMs
* Added md
Fix inaccuracies in md
Ran formatter
* Cleaned up index
---------
Co-authored-by: ivanmkc <ivanmkc@google.com>
* Reverted to proper ToC and added missing links (#48)
Co-authored-by: ivanmkc <ivanmkc@google.com>
* Added missing get-started/go.md (#50)
Co-authored-by: ivanmkc <ivanmkc@google.com>
* Added missing JSON tags for Go structs (#51)
* Added json tags
* Added jsonschema and json tags
---------
Co-authored-by: ivanmkc <ivanmkc@google.com>
* Renamed Golang to Go (#52)
Co-authored-by: ivanmkc <ivanmkc@google.com>
---------
Co-authored-by: Joe Fernandez <joefernandez@google.com>
Co-authored-by: ivanmkc <ivanmkc@google.com>
Co-authored-by: Toni Klopfenstein <tklopfenstein@google.com>
* docs: add language support tags to pages
- replace img.shield tags
- add language support tags where missing
* update Agents page with general tags
* update language and version tagging
- response to review comments
- rename css styles to avoid style name conflicts
* add tags to api-server page
* docs: Update formatting of logging information
- Remove duplicates
* Fix formatting/spelling issues in Express Mode page
* Fix code formatting
* Rename "Google Cloud's" -> Google Cloud per branding guidelines
* Spelling fix on A2A
* Formatting fixes in a2a consuming
* Fix typo/formatting error on API Reference homepage
* Remove custom anchors in CONTRIBUTING.md because GFM doesn't support them
* Add imports to A2A Samples and update agent.json to agent-card.json
---------
Co-authored-by: Joe Fernandez <joefernandez@users.noreply.github.com>
* feat(docs): add init a2a documentation
* update docs based on feedback
* update incorrect syntax for to_a2a()
* added more context on to_a2a() vs adk api_server