| .. | ||
| bin | ||
| docs | ||
| src | ||
| test | ||
| .gitignore | ||
| DELETE_IMPLEMENTATION.md | ||
| DEPLOYMENT.md | ||
| IMPLEMENTATION_PLAN.md | ||
| NEXT_SESSION.md | ||
| package.json | ||
| PROTOTYPE.md | ||
| README.md | ||
| SPECIFICATION.md | ||
| STATUS.md | ||
LLMemory - AI Agent Memory System
A persistent memory/journal system for AI agents with grep-like search and fuzzy matching.
Overview
LLMemory provides AI agents with long-term memory across sessions. Think of it as a personal knowledge base with powerful search capabilities, designed specifically for agent workflows.
Key Features:
- 🔍 Grep-like search - Familiar query syntax for AI agents
- 🎯 Fuzzy matching - Handles typos automatically
- 🏷️ Tag-based organization - Easy categorization and filtering
- ⏰ Expiration support - Auto-cleanup of time-sensitive info
- 📊 Relevance ranking - Best results first, token-efficient
- 🔌 OpenCode integration - Plugin API for seamless workflows
Status
Current Phase: Planning Complete (Phase 0)
Next Phase: MVP Implementation (Phase 1)
This project is in the initial planning stage. The architecture and implementation plan are complete, ready for development.
Quick Start (Future)
# Installation (when available)
npm install -g llmemory
# Store a memory
memory store "Docker Compose uses bridge networks by default" \
--tags docker,networking
# Search memories
memory search "docker networking"
# List recent memories
memory list --limit 10
# Show agent documentation
memory --agent-context
Documentation
- SPECIFICATION.md - Complete technical specification
- IMPLEMENTATION_PLAN.md - Phased development plan
- ARCHITECTURE.md - System design (to be created)
- AGENT_GUIDE.md - Guide for AI agents (to be created)
Architecture
Three-Phase Implementation
Phase 1: MVP (2-3 days)
- Basic CLI with store/search/list/prune commands
- Simple LIKE-based search
- Tag filtering and expiration handling
- Target: <500 memories, <50ms search
Phase 2: FTS5 (3-5 days)
- Migrate to SQLite FTS5 for production search
- BM25 relevance ranking
- Boolean operators (AND/OR/NOT)
- Target: 10K+ memories, <100ms search
Phase 3: Fuzzy Layer (3-4 days)
- Trigram indexing for typo tolerance
- Levenshtein distance matching
- Intelligent cascade (exact → fuzzy)
- Target: 100K+ memories, <200ms search
Technology Stack
- Language: Node.js (JavaScript/TypeScript)
- Database: SQLite with better-sqlite3
- CLI: Commander.js
- Search: FTS5 + trigram fuzzy matching
- Testing: Vitest
Project Structure
llmemory/
├── src/
│ ├── cli.js # CLI entry point
│ ├── commands/ # Command implementations
│ ├── db/ # Database layer
│ ├── search/ # Search strategies (LIKE, FTS5, fuzzy)
│ ├── utils/ # Utilities (validation, formatting)
│ └── extractors/ # Auto-extraction (*Remember* pattern)
├── test/ # Test suite
├── docs/ # Documentation
├── bin/ # Executable wrapper
├── SPECIFICATION.md # Technical spec
├── IMPLEMENTATION_PLAN.md # Development roadmap
└── README.md # This file
Development
Setup
cd llmemory
npm install
npm test
Implementation Status
See IMPLEMENTATION_PLAN.md for detailed progress tracking.
Current Progress:
- Phase 0: Planning and documentation
- Phase 1: MVP (Simple LIKE search)
- Project setup
- Database layer
- Store command
- Search command
- List command
- Prune command
- CLI integration
- Testing
- Phase 2: FTS5 migration
- Phase 3: Fuzzy layer
Contributing
- Review SPECIFICATION.md for architecture
- Check IMPLEMENTATION_PLAN.md for next steps
- Pick an uncompleted task from the current phase
- Write tests first (TDD approach)
- Implement feature
- Update checkboxes in IMPLEMENTATION_PLAN.md
- Commit with clear message
Testing
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run specific test file
npm test search.test.js
# Coverage report
npm run test:coverage
Usage Examples (Future)
Storing Memories
# Basic storage
memory store "PostgreSQL VACUUM FULL locks tables, use VACUUM ANALYZE instead"
# With tags
memory store "Docker healthchecks need curl --fail for proper exit codes" \
--tags docker,best-practices
# With expiration
memory store "Staging server at https://staging.example.com" \
--tags infrastructure,staging \
--expires "2025-12-31"
# From agent
memory store "NixOS flake.lock must be committed for reproducible builds" \
--tags nixos,build-system \
--entered-by investigate-agent
Searching Memories
# Basic search
memory search "docker"
# Multiple terms (implicit AND)
memory search "docker networking"
# Boolean operators
memory search "docker AND compose"
memory search "docker OR podman"
memory search "database NOT postgresql"
# Phrase search
memory search '"exact phrase"'
# With filters
memory search "kubernetes" --tags production,k8s
memory search "error" --after "2025-10-01"
memory search "config" --entered-by optimize-agent --limit 5
Managing Memories
# List recent
memory list --limit 20
# List by tag
memory list --tags docker --sort created --order desc
# Show statistics
memory stats
memory stats --tags # Tag frequency
memory stats --agents # Memories per agent
# Prune expired
memory prune --dry-run # Preview
memory prune --force # Execute
# Export/import
memory export backup.json
memory import backup.json
Memory Format Guidelines
Good Memory Examples
# Technical detail
memory store "Git worktree: 'git worktree add -b feature ../feature' creates parallel working directory without cloning" --tags git,workflow
# Error resolution
memory store "Node.js ENOSPC: Increase inotify watches with 'echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p'" --tags nodejs,linux,troubleshooting
# Configuration pattern
memory store "Nginx reverse proxy: Set 'proxy_set_header X-Real-IP \$remote_addr' to preserve client IP through proxy chain" --tags nginx,networking
Anti-Patterns
# Too vague ❌
memory store "Fixed the bug"
# Better ✅
memory store "Fixed React infinite render loop by adding missing dependencies to useEffect array"
# Widely known ❌
memory store "Docker is a containerization platform"
# Specific insight ✅
memory store "Docker container networking requires explicit subnet config when using multiple custom networks"
OpenCode Integration (Future)
Plugin API
import llmemory from '@opencode/llmemory';
// Store from agent
await llmemory.api.store(
'Discovered performance bottleneck in database query',
{ tags: ['performance', 'database'], entered_by: 'optimize-agent' }
);
// Search
const results = await llmemory.api.search('performance', {
tags: ['database'],
limit: 5
});
// Auto-extract *Remember* patterns
const memories = await llmemory.api.extractRemember(agentOutput, {
agentName: 'investigate-agent',
currentTask: 'debugging'
});
Performance Targets
| Phase | Dataset Size | Search Latency | Storage Overhead |
|---|---|---|---|
| 1 (MVP) | <500 memories | <50ms | Base |
| 2 (FTS5) | 10K memories | <100ms | +30% (FTS5 index) |
| 3 (Fuzzy) | 100K+ memories | <200ms | +200% (trigrams) |
License
MIT
Credits
Planning & Design:
- Agent A: Pragmatic iteration strategy, OpenCode integration patterns
- Agent B: Technical depth, comprehensive implementation specifications
- Combined approach: Hybrid FTS5 + fuzzy matching architecture
Implementation: To be determined
Status: Phase 0 Complete - Ready for Phase 1 implementation
Next Step: Project setup and database layer (see IMPLEMENTATION_PLAN.md)
Estimated Time to MVP: 12-15 hours of focused development