by savantskie
A persistent local memory for AI, LLMs, or Copilot in VS Code.
# Add to your Claude Code skills
git clone https://github.com/savantskie/persistent-ai-memory๐ Community Call to Action: Have you made improvements or additions to this system? Submit a pull request! Every contributor will be properly credited in the final product.
GITHUB LINK - https://github.com/savantskie/persistent-ai-memory.git
Major Architectural Rewrite: OpenWebUI-Native Integration
Upgrade from v1.1.0: See CHANGELOG.md for migration guide.
No comments yet. Be the first to share your thoughts!
Choose your starting point:
| I want to... | Read this | Time | |---|---|---| | Get started quickly | REDDIT_QUICKSTART.md | 5 min | | Install the system | INSTALL.md | 10 min | | Understand configuration | CONFIGURATION.md | 15 min | | Check system health | TESTING.md | 10 min | | Use the API | API.md | 20 min | | Deploy to production | DEPLOYMENT.md | 15 min | | Fix a problem | TROUBLESHOOTING.md | varies | | See examples | examples/README.md | 15 min |
# Linux/macOS
pip install git+https://github.com/savantskie/persistent-ai-memory.git
# Windows (same command, just use Command Prompt or PowerShell)
pip install git+https://github.com/savantskie/persistent-ai-memory.git
python tests/test_health_check.py
Expected output:
[โ] Imported ai_memory_core
[โ] Found embedding_config.json
[โ] System health check passed
[โ] All health checks passed! System is ready to use.
Persistent AI Memory provides sophisticated memory management for AI assistants:
~/.ai_memory/
โโโ conversations.db # Chat messages and conversation history
โโโ ai_memories.db # Curated long-term memories
โโโ schedule.db # Appointments and reminders
โโโ mcp_tool_calls.db # Tool usage logs and reflections
โโโ vscode_project.db # Development session context
~/.ai_memory/
โโโ embedding_config.json # Embedding provider setup
โโโ memory_config.json # Memory system defaults
store_memory() - Save important information persistentlysearch_memories() - Find memories using semantic searchlist_recent_memories() - Get recent memories without searchingstore_conversation() - Store user/assistant messagessearch_conversations() - Search through conversation historyget_conversation_history() - Retrieve chronological conversationslog_tool_call() - Record MCP tool invocationsget_tool_call_history() - Analyze tool usage patternsreflect_on_tool_usage() - Get AI insights on tool patternsget_system_health() - Check databases, embeddings, providersbuilt-in health check - python tests/test_health_check.pyChoose your embedding service:
| Provider | Speed | Quality | Cost | |----------|-------|---------|------| | Ollama (local) | โกโก | โญโญโญ | FREE | | LM Studio (local) | โก | โญโญโญโญ | FREE | | OpenAI (cloud) | โกโก | โญโญโญโญโญ | $$$ |
See CONFIGURATION.md for setup instructions for each provider.
All memory operations require user_id and model_id parameters for data isolation and tracking.
This ensures:
By default, user_id and model_id are required. You can change this in memory_config.json:
{
"tool_requirements": {
"require_user_id": true,
"require_model_id": true,
"default_user_id": "default_user",
"default_model_id": "default_model"
}
}
require_user_id/require_model_id: true โ Strict mode (recommended for production, security-focused, or multi-user systems)require_user_id/require_model_id: false โ Use defaults instead (simpler for single-user/single-model setups)To make your AI automatically provide these values, add this to its system prompt:
When using memory system tools (store_memory, search_memories, etc.),
ALWAYS include these parameters:
- user_id='your_user_identifier' (e.g., 'nate_user_1')
- model_id='your_model_name' (e.g., 'llama-2:7b' or 'gpt-4')
If the actual values are unknown, use safe defaults:
- user_id='default_user'
- model_id='default_model'
This isolates memories per user and tracks which AI model generated each memory.
With user_id and model_id:
# Memories are stored with full isolation
await system.store_memory(
"User likes Python",
user_id="alice",
model_id="gpt-4"
)
# Search returns only this user's memories for this model
results = await system.search_memories(
"programming",
user_id="alice",
model_id="gpt-4"
)
Without strict requirements (if disabled):
# Uses defaults from memory_config.json
await system.store_memory("User likes Python") # user_id="default_user", model_id="default_model"
See API.md for complete parameter documentation.
Primary deployment method - Deep integration for sophisticated memory management:
ai_memory_short_term.py as an OpenWebUI FunctionInstallation:
ai_memory_short_term.py fileInlet (runs before model response)Use with any MCP-compatible AI assistant (Claude, custom integrations, etc.):
# Via mcpo
python -m ai_memory_mcp_server
# Or make streamable for OpenWebUI's alternative integration
# (OpenWebUI supports both plugin and streamable MCP methods)
Use memory capabilities directly in your Python code:
from ai_memory_core import AIMemorySystem
system = AIMemorySystem()
await system.store_memory("Important information", user_id="user1", model_id="model1")
results = await system.search_memories("query", user_id="user1", model_id="model1")
Ready-to-use examples:
python examples/basic_usage.py # Store and search memories
python examples/advanced_usage.py # Conversation tracking and tool logging
python examples/performance_tests.py # Benchmark operations
Full API reference: API.md
This is a significantly enhanced version of traditional memory systems:
| Feature | Traditional | AI Memory System | |---------|-------------|------------------| | Memory Extraction | Manual/Static | LLM-powered intelligent extraction | | Filtering | Simple keyword matching | Multi-layer semantic + relevance scoring | | Memory Injection | All available memories | Smart filtering - only