A2UI ADK extension
a2ui-adk connects the A2UI agent SDK to the
Agent Development Kit (ADK). It
provides the a2ui.adk package.
Installation
# ADK tools only
pip install a2ui-adk
# With the ADK-to-A2A converters and A2A subagent orchestration
pip install "a2ui-adk[a2a]"
The a2a extra installs a2ui-a2a and
google-adk[a2a].
Contents
Available with the base install:
SendA2uiToClientToolsetis an ADK toolset that lets an agent send A2UI to the client through a tool call. It takes whether A2UI is enabled and the request'sA2uiRequestProcessor, or callbacks (A2uiEnabledProvider,A2uiProcessorProvider) that return them per context. The processor holds everything else: the catalogs, the example turns, the inference format, and theRendererStatebound to it for Canvas UIs. The toolset adds the processor's prompt to the model's instructions, compiles each tool call with the processor's parser, and validates the resulting A2UI JSON messages before they are sent.A2uiInstructionis an ADK instruction provider for an agent that writes A2UI in its text response. Pass it asLlmAgent.instructionwith the agent's own instruction and the same processor or callbacks as the toolset. It appends the processor's prompt to the agent's instruction. ADK reads{name}session state templates out of a string instruction, and the A2UI prompt holds braces that are not state keys (${expression}in the basic catalog, data bindings in the examples), so a string instruction fails withKeyError: "Context variable not found: 'expression'.". As a provider,A2uiInstructionis used as it is, while the agent's own instruction keeps its{name}templates.A2uiProcessorStorekeeps each session'sA2uiRequestProcessorin memory, since ADK's session services save state as JSON and can't hold one. Itsis_enabledandgetmethods are the callbacks for the toolset,A2uiInstructionandA2uiEventConverter.
Available with the a2a extra:
A2uiPartConverterandA2uiEventConverter(also ina2ui.adk.a2a) convert ADK events and GenAI parts into A2A parts with A2UI data, using the request'sA2uiRequestProcessor.A2uiEventConvertergets the processor from itsa2ui_processorargument, such asA2uiProcessorStore.get. Pass it to ADK'sA2aAgentExecutor.A2uiSubagentMapandSurfaceIdAlreadyExistsError(also ina2ui.adk.orchestration) track which subagent owns each surface in an orchestrator that talks to its subagents over A2A.
Without the extra, import a2ui.adk still works. Reading one of these names
raises an ImportError that explains how to install the extra.
from a2ui.adk import A2uiEventConverter, A2uiInstruction, SendA2uiToClientToolset
Running tests
From the repository root:
uv run pytest python/a2ui_adk/tests
The conformance cases are in
conformance/extensions/adk.
Building
From the python/a2ui_adk directory:
uv build
Metadata
Release files for a2ui-adk 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| a2ui_adk-0.2.0.tar.gz | 37.0 kB | With provenance | Details for a2ui_adk-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| a2ui_adk-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for a2ui_adk-0.2.0-py3-none-any.whl |
Total release size: 62.2 kB
Release files / a2ui_adk-0.2.0.tar.gz
| Download URL | a2ui_adk-0.2.0.tar.gz |
|---|---|
| Size | 37.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6b81f24ef062327559b9bcf5d783aa014249abc56a6addc888597a8ff86ef1f6
|
|
BLAKE2b-256 checksum How to use checksums |
8332e9a013884bf95c6eb1478a3f755f5e749f8a85bb8205f21339c8a8d03b9e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by Google Cloud, verified by PyPI on Nov 2, 2026.
Transparency logRelease files / a2ui_adk-0.2.0-py3-none-any.whl
| Download URL | a2ui_adk-0.2.0-py3-none-any.whl |
|---|---|
| Size | 25.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0bfbb4dd352b160f068160902015451b285c995ba2e0bd12bc22ce3c7524a7c2
|
|
BLAKE2b-256 checksum How to use checksums |
38bc180c4bc8a5a26440251e27c622dd4b60a3c68419e28a3e8220d46d1e421a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.2.0 CPython/3.11.2
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by Google Cloud, verified by PyPI on Nov 2, 2026.
Transparency logSecurity for a2ui-adk 0.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for a2ui_adk-0.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by Google Cloud, verified by PyPI on Nov 2, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.