Summary
This issue proposes adding DakeraMemoryService, a new implementation of BaseMemoryService backed by a self-hosted Dakera server.
Motivation
The existing InMemoryMemoryService is an excellent starting point for development, but memories are discarded on process restart and do not scale beyond a single process. VertexAiMemoryBankService and VertexAiRagMemoryService cover the managed-cloud use case, but a growing number of ADK users need persistent, self-hosted memory without a dependency on Google Cloud.
Dakera is an open-deployment vector memory server that provides:
- Semantic search over stored memories via a built-in HNSW vector index and embedding model.
- Decay-weighted importance — memories that have not been accessed recently receive lower recall scores, mirroring how human memory fades.
- Cross-session persistence — memories survive process restarts and can be shared across multiple agent instances.
- Zero external-cloud dependency — the server runs as a single Docker container or binary on any Linux host.
Proposed API
from google.adk.memory import DakeraMemoryService
memory_service = DakeraMemoryService(
base_url="http://localhost:3000", # or DAKERA_API_URL env var
api_key="sk-...", # or DAKERA_API_KEY env var
top_k=10,
)
Plug it into any ADK Runner that accepts a memory_service parameter:
from google.adk.runners import Runner
runner = Runner(
agent=my_agent,
app_name="my_app",
session_service=session_service,
memory_service=memory_service,
)
Implementation plan
src/google/adk/memory/dakera_memory_service.py — DakeraMemoryService(BaseMemoryService) using httpx.AsyncClient
add_session_to_memory(session) → POST /v1/memories per event
search_memory(app_name, user_id, query) → POST /v1/memories/search → SearchMemoryResponse
src/google/adk/memory/__init__.py — lazy-import export alongside existing services
tests/unittests/memory/test_dakera_memory_service.py — unit tests with httpx mock transport
Self-hosting
docker run -p 3000:3000 dakera/dakera:latest
Full deployment guide: https://dakera.ai
Related
BaseMemoryService ABC in src/google/adk/memory/base_memory_service.py
InMemoryMemoryService — in-process reference implementation
Summary
This issue proposes adding
DakeraMemoryService, a new implementation ofBaseMemoryServicebacked by a self-hosted Dakera server.Motivation
The existing
InMemoryMemoryServiceis an excellent starting point for development, but memories are discarded on process restart and do not scale beyond a single process.VertexAiMemoryBankServiceandVertexAiRagMemoryServicecover the managed-cloud use case, but a growing number of ADK users need persistent, self-hosted memory without a dependency on Google Cloud.Dakera is an open-deployment vector memory server that provides:
Proposed API
Plug it into any ADK
Runnerthat accepts amemory_serviceparameter:Implementation plan
src/google/adk/memory/dakera_memory_service.py—DakeraMemoryService(BaseMemoryService)usinghttpx.AsyncClientadd_session_to_memory(session)→POST /v1/memoriesper eventsearch_memory(app_name, user_id, query)→POST /v1/memories/search→SearchMemoryResponsesrc/google/adk/memory/__init__.py— lazy-import export alongside existing servicestests/unittests/memory/test_dakera_memory_service.py— unit tests withhttpxmock transportSelf-hosting
Full deployment guide: https://dakera.ai
Related
BaseMemoryServiceABC insrc/google/adk/memory/base_memory_service.pyInMemoryMemoryService— in-process reference implementation