What’s new here
The Strands Agents SDK defines a unified Storage interface: write, read, delete, list, namespace. This package implements that interface on top of DynamoDB and ships in both Python and TypeScript with identical semantics. The interesting part is what it does with the key shape: slash-separated keys map to DynamoDB’s partition-plus-sort key model, so every point read is a single GetItem and every list(prefix) is a Query with begins_with, not a scan. Optional vector search runs against a DynamoDB vector index on the same table, so there is no separate vector store to provision or sync.
What it does
Pass one DynamoDBStorage instance to an Agent and every subsystem that accepts a Storage, including the session manager and the context offloader, shares it. Subsystems without their own storage inherit the agent-level store, each namespaced under its own prefix (session/, offloader/).
Specific capabilities, both languages:
- Session persistence. Snapshot session state to DynamoDB; reload it on the next turn.
- Context offload (opt-in). With an S3 bucket configured, values that exceed DynamoDB’s item-size limit are transparently offloaded to S3; a pointer item stays in DynamoDB. Callers see one byte contract regardless of item size.
- TTL (optional). When a TTL is set, writes stamp an
expireAtepoch-seconds attribute. DynamoDB reaps expired items natively; reads also filter them in the window before physical deletion. - Semantic search (optional). The table must be created with a vector index.
search()callsSearchVectorsagainst a DynamoDB vector index scoped to the caller’s partition. The store does not embed text; callers supply pre-computed vectors. - Multi-tenant prefixes. A constructor-bound prefix namespaces every key, enforced on both point operations and prefix queries.
- Optional gzip compression. Applied before the S3 offload size check; each item records whether it was compressed.
Who it’s for
Teams running Strands agents on ephemeral AWS compute, such as Lambda or Bedrock AgentCore Runtime, who want session state, long-term memory, and semantic search stored in their own AWS account without operating a separate vector database. Also useful for anyone using the Strands SDK who needs multi-tenant session isolation or self-expiring state.
Try it
AWS credentials must be configured through the standard SDK chain (environment variables, instance profile, or an injected client) before running these commands.
Create a DynamoDB table with partition key pk and sort key sk:
aws dynamodb create-table \
--table-name agent-storage \
--attribute-definitions AttributeName=pk,AttributeType=S AttributeName=sk,AttributeType=S \
--key-schema AttributeName=pk,KeyType=HASH AttributeName=sk,KeyType=RANGE \
--billing-mode PAY_PER_REQUESTPython (requires 3.10+):
pip install strands-dynamodb-storagefrom strands import Agent
from strands.session import SnapshotSessionManager
from strands_dynamodb_storage import DynamoDBStorage
storage = DynamoDBStorage("agent-storage", region_name="us-east-1")
# Persist the agent's session to DynamoDB — nothing else to wire.
agent = Agent(session_manager=SnapshotSessionManager("s1", storage=storage))
agent("Remember that my favorite color is blue.")TypeScript (requires Node.js 20+):
npm install strands-dynamodb-storage @strands-agents/sdk @aws-sdk/client-dynamodb @aws-sdk/lib-dynamodbimport { Agent, SessionManager } from '@strands-agents/sdk'
import { DynamoDBStorage } from 'strands-dynamodb-storage'
const storage = new DynamoDBStorage('agent-storage', { region: 'us-east-1' })
// Persist the agent's session to DynamoDB — nothing else to wire.
const agent = new Agent({ sessionManager: new SessionManager({ sessionId: 's1', storage }) })
await agent.invoke('Remember that my favorite color is blue.')How mature is it
Created August 2026; 17 stars, 5 forks, 5 contributors. 5 releases; latest is typescript-v0.1.2 from September 1, 2026. 66 commits in the past 90 days. No open issues and 12 open pull requests. Licensed Apache-2.0. Both Python and TypeScript packages carry CI workflows and live integration suites that run against real DynamoDB and S3.