Self-Learning Memory System
A Rust-based self-learning memory system with episodic memory, pattern extraction, and intelligent retrieval capabilities.
Overview
The Self-Learning Memory System provides:
- Episodic Memory: Store and retrieve task execution episodes with context
- Pattern Extraction: Automatically extract patterns from successful task completions
- Intelligent Retrieval: Semantic search with multiple embedding providers
- MCP Server: Model Context Protocol server for AI assistant integration
- CLI Tools: Command-line interface for all operations
Key Features
| Feature | Description |
|---|---|
| Episode Management | Create, log steps, and complete episodes |
| Pattern Recognition | Extract and use patterns for recommendations |
| Multi-provider Embeddings | OpenAI, Cohere, Ollama, local models |
| Dual Storage | Turso (persistent) + redb (cache) |
| MCP Protocol | Full MCP 2025-11-25 support |
Quick Start
# Install the CLI
cargo install do-memory-cli
# Start the MCP server
do-memory-mcp-server
# Create an episode
do-memory-cli episode create --task "My task"
Architecture
The system consists of several crates:
do-memory-core: Core types and logicdo-memory-storage-turso: Turso/libSQL backenddo-memory-storage-redb: redb cache backenddo-memory-mcp: MCP serverdo-memory-cli: Command-line interface
See the Getting Started chapter for details.
Getting Started
Installation
From crates.io
cargo install do-memory-cli
cargo install do-memory-mcp-server
From source
git clone https://github.com/d-o-hub/rust-self-learning-memory
cd rust-self-learning-memory
cargo build --release
Configuration
Environment Variables
| Variable | Description | Required |
|---|---|---|
TURSO_DATABASE_URL | Turso database URL | Yes (or local) |
TURSO_AUTH_TOKEN | Turso auth token | No (local dev) |
OPENAI_API_KEY | OpenAI API key | For embeddings |
Local Development
# Start local Turso
turso dev --db-file ./data/memory.db --port 8080
# Set environment
export TURSO_DATABASE_URL="http://127.0.0.1:8080"
export TURSO_AUTH_TOKEN=""
First Episode
# Create an episode
do-memory-cli episode create --task "Implement feature X"
# Log steps
do-memory-cli episode log-step --episode-id <ID> --step "Read requirements"
# Complete the episode
do-memory-cli episode complete --episode-id <ID> --outcome success
# Extract patterns
do-memory-cli pattern extract --episode-id <ID>
MCP Server
# Start the server
do-memory-mcp-server
# The server communicates via JSON-RPC over stdin/stdout