Skip to content

feat(memory): add DatabaseMemoryService with SQL backend and agent scratchpad #99

@Raman369AI

Description

@Raman369AI

Feature Request

Add a durable, SQL-backed DatabaseMemoryService to google-adk-community as a self-hosted alternative to the volatile InMemoryMemoryService.

Problem

The existing InMemoryMemoryService is explicitly test-only and loses all data on process restart. Developers not using Vertex AI RAG or Memory Bank have no persistent, self-hosted memory option out of the box.

Related: #46 (Add self-hosted option to manage working memory)

Proposed Solution

A DatabaseMemoryService backed by SQLAlchemy async — the same ORM pattern already used by DatabaseSessionService in the core ADK. This enables any SQLAlchemy-compatible async database (SQLite, PostgreSQL, MySQL, MariaDB) as a memory backend.

Components

  • DatabaseMemoryService — implements BaseMemoryService with lazy table creation, idempotent session ingest (add_session_to_memory), and delta event ingestion (add_events_to_memory)
  • MemorySearchBackend ABC + KeywordSearchBackend — pluggable search with LIKE/ILIKE and AND-first → OR-fallback tokenisation
  • Scratchpad subsystem — KV store + append-only log exposed as four BaseTool subclasses (ScratchpadGetTool, ScratchpadSetTool, ScratchpadAppendLogTool, ScratchpadGetLogTool) for agent intermediate working memory

Usage

from google.adk_community.memory import DatabaseMemoryService
from google.adk_community.tools import scratchpad_get_tool, scratchpad_set_tool

# SQLite (zero config)
memory_service = DatabaseMemoryService("sqlite+aiosqlite:///agent_memory.db")

# PostgreSQL
memory_service = DatabaseMemoryService(
    "postgresql+asyncpg://user:pass@host/dbname"
)

Origin

This was originally submitted to google/adk-python (#4736) and redirected here by maintainer @rohityan.

Implementation

PR: #98

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions