Skip to content

Release Notes: v0.9.0

Release Date: 2026-06-28

Summary

This release adds the OmniMemory DynamoDB provider, bringing serverless memory storage capabilities to the omni-aws ecosystem. The provider enables multi-tenant memory management with automatic scaling, TTL support, and efficient tenant isolation using DynamoDB's single-table design pattern.

Highlights

  • DynamoDB provider for omnimemory with full Provider interface implementation
  • Multi-tenant isolation using partition keys (tenant_id) and composite sort keys (subject_id#memory_id)
  • Automatic memory expiration via DynamoDB TTL
  • In-memory vector search with cosine similarity for semantic queries
  • Auto-create table option for simplified development workflows
  • DynamoDB Local support for local development without AWS costs

What's New

Features

OmniMemory DynamoDB Provider

The new DynamoDB provider implements the omnimemory.Provider interface for serverless, scalable memory storage:

import (
    "github.com/plexusone/omnimemory"
    "github.com/plexusone/omnimemory/core"
    _ "github.com/plexusone/omni-aws/omnimemory/dynamodb"
)

client, err := omnimemory.NewClient(core.ClientConfig{
    Providers: []core.ProviderConfig{
        {
            Name: core.ProviderNameAWSDynamoDB,
            Options: map[string]any{
                "table_name": "omnimemory",
                "region":     "us-east-1",
            },
        },
    },
})

Key capabilities:

  • Serverless Storage: Fully managed DynamoDB backend with pay-per-request billing
  • Multi-Tenant Isolation: Partition key based isolation ensures complete data separation between tenants
  • Automatic TTL: Built-in support for memory expiration using DynamoDB's TTL feature
  • Vector Search: In-memory cosine similarity search for semantic memory retrieval
  • Development Mode: Auto-create table option and DynamoDB Local support for development

Single-Table Design

Optimized table schema for efficient queries and tenant isolation:

  • Partition Key (pk): tenant_id - isolates data by tenant
  • Sort Key (sk): subject_id#memory_id - enables efficient subject-based queries
  • TTL Attribute: expires_at - automatic memory expiration

Additional attributes include memory type, scope, content, embeddings, metadata, and timestamps.

Local Development Support

DynamoDB Local integration for development without AWS:

client, err := omnimemory.NewClient(core.ClientConfig{
    Providers: []core.ProviderConfig{
        {
            Name: core.ProviderNameAWSDynamoDB,
            Options: map[string]any{
                "table_name":   "omnimemory",
                "endpoint":     "http://localhost:8000",
                "create_table": true,
            },
        },
    },
})

Documentation

Comprehensive documentation for the DynamoDB provider includes:

  • Installation and basic usage examples
  • Configuration options and table schema details
  • Local development setup with DynamoDB Local
  • IAM permissions (minimal and with auto-create)
  • All CRUD operations (Add, Get, Update, Delete, List, Search, Recall)
  • Multi-tenancy explanation and examples
  • Semantic search implementation details

See docs/omnimemory/index.md for complete documentation.

Installation

go get github.com/plexusone/omni-aws@v0.9.0

Migration Guide

From v0.8.2

No breaking changes. This is a purely additive release introducing the new OmniMemory package.

To use the DynamoDB provider:

  1. Import the provider package (blank import for auto-registration):

    _ "github.com/plexusone/omni-aws/omnimemory/dynamodb"
    

  2. Configure the provider:

    client, err := omnimemory.NewClient(core.ClientConfig{
        Providers: []core.ProviderConfig{
            {
                Name: core.ProviderNameAWSDynamoDB,
                Options: map[string]any{
                    "table_name": "omnimemory",
                    "region":     "us-east-1",
                },
            },
        },
    })
    

  3. Ensure IAM permissions for DynamoDB operations (see documentation for details)

Full Changelog

See CHANGELOG.md for the complete list of changes.