adk-itsuki
Itsuki memory for Google ADK: a native
BaseMemoryService, plus the automatic capture ADK does not ship.
Status: unpublished. This package has not been released to PyPI. The install command below will not work yet.
Why the plugin exists
ADK has a memory interface but nothing that fills it. Searching the framework
for add_session_to_memory finds exactly two call sites: a convenience method
your own callback can call, and an HTTP endpoint a client must invoke. The dev
UI never calls either. So an ADK app gets retrieval for free and remembers
nothing unless the application writes the plumbing.
ItsukiMemoryPlugin is that plumbing, placed where it fires once per
invocation rather than once per agent.
Requirements
google-adk |
2.5.0 – 2.7.x |
| Python | 3.10 – 3.13 |
| Runtime dependencies | itsuki, google-adk |
The floor is 2.5.0 for a specific reason: it is the first release whose normal
run path invokes after_run_callback under a run_error guard and exposes
on_run_error_callback. Below that, automatic capture and identity cleanup
cannot work. The ceiling is the highest minor actually tested, because ADK
ships breaking changes in minor releases.
Use
from google.adk.agents import LlmAgent
from google.adk.apps.app import App
from google.adk.runners import Runner
from google.adk.tools import preload_memory
from adk_itsuki import ItsukiMemoryService, ItsukiMemoryPlugin
memory = ItsukiMemoryService() # reads ITSUKI_API_KEY
agent = LlmAgent(name="assistant", model="gemini-2.0-flash", tools=[preload_memory])
app = App(name="my_app", root_agent=agent, plugins=[ItsukiMemoryPlugin(service=memory)])
runner = Runner(app=app, app_name="my_app", session_service=..., memory_service=memory)
preload_memory gives you recall before every model call; the plugin gives you
capture after every settled turn.
The itsuki:// URI route is partial
# services.py, next to your agent
import adk_itsuki
adk_itsuki.register()
adk web --memory_service_uri=itsuki://
This lets the CLI and dev UI construct the service. It does not attach
preload_memory or the capture plugin — ADK has no mechanism for a service to
do that. Treat it as a partial installation, not an automatic one.
What gets remembered
Only the user's message and the root agent's final answer. Specifically excluded: tool calls and their results, code execution, inline and file data, sub-agent intermediate output, partial streaming events, and anything from an invocation that errored or is still waiting on a long-running tool.
Attribution is by author name rather than by branch, because a SequentialAgent
child can keep the root branch. The root agent's name is recorded once per
invocation in session state (content-free) so that a restart, a delta import and
an explicit re-import all reach the same verdict. An invocation with no marker
is skipped rather than guessed at.
Honest limits
- Capture is durable to process life, not across restarts. Pending chunks
live in memory. Recovery is an explicit
add_session_to_memory(session), which regenerates identical idempotency keys, so re-importing costs nothing and duplicates nothing. - A root
SequentialAgent's children are not captured unless they author under the root's name. That is deliberate: guessing which sub-agent output a person actually saw would be worse than remembering less. add_memoryis not implemented. Direct memory writes are a surface we have not audited yet.user_idis whatever your application passes. Hashing it prevents encoding and delimiter attacks; it cannot prevent impersonation. Binduser_idto an authenticated principal in your own auth layer.- ADK 1.x is not supported.
Licence
Apache-2.0.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file adk_itsuki-0.1.0.tar.gz.
File metadata
- Download URL: adk_itsuki-0.1.0.tar.gz
- Upload date:
- Size: 30.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
54d8085661226f0cf1de9243d6b274c63479c0b1f655b3e86c118b396c36073e
|
|
| MD5 |
d779c22bb21cd1a57c90b93aa965ed11
|
|
| BLAKE2b-256 |
2897df11bfdb63d0174eaf082df7dfc116056813a2c56d33d702813964f2aad7
|
Provenance
The following attestation bundles were made for adk_itsuki-0.1.0.tar.gz:
Publisher:
publish-pypi.yml on 12ziyad/universal-memory-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adk_itsuki-0.1.0.tar.gz -
Subject digest:
54d8085661226f0cf1de9243d6b274c63479c0b1f655b3e86c118b396c36073e - Sigstore transparency entry: 2489145454
- Sigstore integration time:
-
Permalink:
12ziyad/universal-memory-engine@fdb09d0705777130d95ecb0a159ae29303332e48 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/12ziyad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@fdb09d0705777130d95ecb0a159ae29303332e48 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file adk_itsuki-0.1.0-py3-none-any.whl.
File metadata
- Download URL: adk_itsuki-0.1.0-py3-none-any.whl
- Upload date:
- Size: 36.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09af42c36fdb3cf55207f19787327d01d2a7992d89b18be469a1fe912db5e509
|
|
| MD5 |
a6aa3f7af6b3f68c730aecb7a27b57f8
|
|
| BLAKE2b-256 |
7905bd7b1bdedab8bd527079f2c9490dfd47eab1cb2aed07170edbeece748cf7
|
Provenance
The following attestation bundles were made for adk_itsuki-0.1.0-py3-none-any.whl:
Publisher:
publish-pypi.yml on 12ziyad/universal-memory-engine
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
adk_itsuki-0.1.0-py3-none-any.whl -
Subject digest:
09af42c36fdb3cf55207f19787327d01d2a7992d89b18be469a1fe912db5e509 - Sigstore transparency entry: 2489145468
- Sigstore integration time:
-
Permalink:
12ziyad/universal-memory-engine@fdb09d0705777130d95ecb0a159ae29303332e48 -
Branch / Tag:
refs/heads/master - Owner: https://github.com/12ziyad
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@fdb09d0705777130d95ecb0a159ae29303332e48 -
Trigger Event:
workflow_dispatch
-
Statement type: