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.
Metadata
Release files for june-adk 0.1.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 | |
|---|---|---|---|
| june_adk-0.1.0.tar.gz | 17.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| june_adk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.5 kB
Release files / june_adk-0.1.0.tar.gz
| Download URL | june_adk-0.1.0.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1e3ef461994dd9e35638c81f59fb3a0b8397f1d38c322d63a27189cd04b55cb3
|
|
BLAKE2b-256 checksum How to use checksums |
b51e56b6fba856ad64b7ac2f713a3d09b962d580dcb365cd57cf46d06601b382
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 GitHub Actions, verified by PyPI on Aug 1, 2026.
Transparency logRelease files / june_adk-0.1.0-py3-none-any.whl
| Download URL | june_adk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 16.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ed25ec8b1e25f027e8f60db90d406086d3301419bb5e76baca3404c62f27f0cc
|
|
BLAKE2b-256 checksum How to use checksums |
8c430a261e0a9cacc3d8b6780ecdadbf50b4f7987f4ebd9d36980cdeafee9f54
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 GitHub Actions, verified by PyPI on Aug 1, 2026.
Transparency log