Give your Google ADK agent a June memory — a local-first MemoryService backed by a searchable, cited June knowledge canvas, plus a backfill CLI for existing session databases.
Project description
june-adk
Give your Google ADK agent a June memory. ADK already defines a pluggable
memory seam — BaseMemoryService — but its production implementation sends
your agent's conversations to Vertex AI RAG in Google's cloud.
june-adk implements the same seam against Junê
instead: your agent's history becomes a local-first, searchable, cited
knowledge graph, canvas-fenced like everything else in June.
your ADK agent ──▶ JuneMemoryService ──▶ June canvas (graph · search · citations)
(ADK's own seam) local by default — your machine, your data
The live seam — one object in your Runner
pip install june-adk
from google.adk.runners import Runner
from june_adk import JuneMemoryService
memory = JuneMemoryService(
june_url="http://127.0.0.1:8799", # the Junê desktop app's local engine
api_key="local",
canvas="agent-memory",
state_file=".june_adk_pushed.json", # dedupe ledger, survives restarts
)
runner = Runner(agent=agent, app_name="my-app",
session_service=session_service, memory_service=memory)
That's the whole integration. ADK's own memory tools (load_memory,
preload-memory) now read June, and add_session_to_memory /
add_events_to_memory write it. JuneMemoryService.from_env() builds from
the same JUNE_BASE_URL / JUNE_API_KEY / JUNE_CANVAS env vars that
june-mcp and june-langgraph use.
Contract fidelity, verified against the installed google-adk (not docs):
add_session_to_memory— ADK says a session "may be added multiple times during its lifetime"; we honor that with per-event delta dedup, so repeated adds never duplicate and only new events ship.add_events_to_memory— the incremental path, treated as a delta exactly as the base class demands.search_memory→SearchMemoryResponseofMemoryEntryitems, with June provenance (score, node id) incustom_metadata.- Fail-soft by default: a memory write must never crash the agent — June
being down logs one line and retries on the next add. Pass
strict=Trueto raise instead. All HTTP runs in a worker thread; the event loop is never blocked.
The backfill — history your app already saved
If your app persists sessions with ADK's DatabaseSessionService, the
history that already exists can be brought into June without touching your
code:
pip install "june-adk[db]"
june-adk sync --db sessions.db # one incremental catch-up pass
june-adk watch --db sessions.db # keep syncing (Ctrl+C to stop)
june-adk doctor --db sessions.db # PASS/FAIL every part of the setup
Discovery is metadata-only SQL (which app/user scopes exist); content is
always read through ADK's own DatabaseSessionService, so ADK deserializes
its events — never us. Bare file paths and sqlite:// URLs are quietly
upgraded to the async driver ADK 2.x requires. Server databases (Postgres,
MySQL) work too — pass --app and --user. Every pass is incremental via
the same ledger the live seam uses; re-running never duplicates.
What you get on the June side
The canvas behaves like any other: search it, ask cited questions over it in the Junê app, and point june-mcp at the same canvas so Claude (or any MCP agent) can answer over your ADK agent's entire history. One memory, every agent.
Part of a family: june-langgraph does the same for LangGraph checkpointers.
License
MIT. The Junê engine itself is a separate, closed-source product — this connector is the open part, by design.
Project details
Release history Release notifications | RSS feed
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 june_adk-0.1.0.tar.gz.
File metadata
- Download URL: june_adk-0.1.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e3ef461994dd9e35638c81f59fb3a0b8397f1d38c322d63a27189cd04b55cb3
|
|
| MD5 |
836033da209a7f406b8d7891881a9eae
|
|
| BLAKE2b-256 |
b51e56b6fba856ad64b7ac2f713a3d09b962d580dcb365cd57cf46d06601b382
|
Provenance
The following attestation bundles were made for june_adk-0.1.0.tar.gz:
Publisher:
publish.yml on Junemind/june-adk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
june_adk-0.1.0.tar.gz -
Subject digest:
1e3ef461994dd9e35638c81f59fb3a0b8397f1d38c322d63a27189cd04b55cb3 - Sigstore transparency entry: 2310437952
- Sigstore integration time:
-
Permalink:
Junemind/june-adk@e6dfd76fb91bf1f0cdfefcdfa46dae693c8664c0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Junemind
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e6dfd76fb91bf1f0cdfefcdfa46dae693c8664c0 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file june_adk-0.1.0-py3-none-any.whl.
File metadata
- Download URL: june_adk-0.1.0-py3-none-any.whl
- Upload date:
- Size: 16.2 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 |
ed25ec8b1e25f027e8f60db90d406086d3301419bb5e76baca3404c62f27f0cc
|
|
| MD5 |
6b21fa1064deb931e4a6c1f682642e05
|
|
| BLAKE2b-256 |
8c430a261e0a9cacc3d8b6780ecdadbf50b4f7987f4ebd9d36980cdeafee9f54
|
Provenance
The following attestation bundles were made for june_adk-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on Junemind/june-adk
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
june_adk-0.1.0-py3-none-any.whl -
Subject digest:
ed25ec8b1e25f027e8f60db90d406086d3301419bb5e76baca3404c62f27f0cc - Sigstore transparency entry: 2310437955
- Sigstore integration time:
-
Permalink:
Junemind/june-adk@e6dfd76fb91bf1f0cdfefcdfa46dae693c8664c0 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/Junemind
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@e6dfd76fb91bf1f0cdfefcdfa46dae693c8664c0 -
Trigger Event:
workflow_dispatch
-
Statement type: