Fractal memory system for Claude Code
Project description
Oubli
Oubli: French for "forgetting." (Also a West African fruit so sweet it makes babies forget their mother's milk.)
A memory system that never forgets. Persistent fractal memory for Claude Code.
Features
- Core Memory - Essential facts about you (~2K tokens), loaded in every conversation
- Persistent Storage - Memories survive across sessions, stored locally in LanceDB
- Smart Import - Import your Claude.ai memory export with one command
- Auto-Save - Saves memories at session end and before context compaction
- Fractal Synthesis - Automatically consolidates raw memories into higher-level insights
- Proactive Memory - Claude searches and saves automatically, no prompting needed
- Quiet Operation - Memory operations happen silently in the background
- Local-First - No external services, no API keys, your data stays on your machine
Installation
pip install oubli
oubli setup
Then restart Claude Code.
Requirements
- Python 3.10+
- Claude Code CLI installed
Uninstall
oubli uninstall
pip uninstall oubli
What Gets Installed
| Component | Location | Description |
|---|---|---|
| MCP Server | claude mcp |
13 memory tools (save, search, synthesize, etc.) |
| Hooks | ~/.claude/settings.json |
UserPromptSubmit, PreCompact, Stop |
| Slash Command | ~/.claude/commands/ |
/clear-memories |
| Instructions | ~/.claude/CLAUDE.md |
How Claude should use the memory system |
| Data | ~/.oubli/ |
LanceDB database + Core Memory file |
Usage
After installation, restart Claude Code. Your Core Memory will be automatically loaded in every conversation.
Import Existing Memories
Paste your Claude.ai memory export and ask:
"Import this into my memory"
Claude will parse it into structured memories and optionally create your Core Memory.
Natural Interaction
Just talk naturally:
- "Remember that I prefer TypeScript over JavaScript"
- "What do you know about my work?"
- "I no longer work at Spotify, update your memory"
Slash Commands
/clear-memories- Clear all memories (requires confirmation)
How It Works
┌─────────────────────────────────────────┐
│ CORE MEMORY │
│ (~2K tokens, always in context) │
│ │
│ The essential "you" - personality, │
│ key preferences, life context, work │
└─────────────────────┬───────────────────┘
│ (distilled from)
▼
Level 1+ ○ "Deeply appreciates jazz guitar, especially fusion"
(insights) ╱╲
╱ ╲
Level 0 ○ ○ ○ ○ Raw memories from conversations
(raw)
- Core Memory: Always loaded, contains the most important stable facts
- Level 0: Raw memories from conversations with full context
- Level 1+: Synthesized insights from multiple raw memories
Data Storage
All data is stored locally in ~/.oubli/:
memories.lance/- LanceDB databasecore_memory.md- Your Core Memory (human-readable, editable)
MCP Tools
Oubli provides 13 MCP tools for memory operations:
| Tool | Description |
|---|---|
memory_save |
Save a new memory |
memory_search |
Search memories (prefers higher-level insights) |
memory_get |
Get full details including conversation text |
memory_get_parents |
Drill down from synthesis to source memories |
memory_list |
List memories by level |
memory_stats |
Get memory statistics |
memory_update |
Update an existing memory |
memory_delete |
Delete a memory |
memory_import |
Bulk import memories |
memory_synthesize |
Create Level 1+ insight from raw memories |
memory_get_synthesis_candidates |
Find topics ready for synthesis |
core_memory_get |
Get Core Memory content |
core_memory_save |
Save Core Memory content |
Development
# Clone and install in development mode
git clone https://github.com/dremok/oubli.git
cd oubli
pip install -e .
oubli setup
# Run tests
python -c "from oubli.storage import MemoryStore; store = MemoryStore(); print(store.get_stats())"
# Check MCP tools
python -c "from oubli.mcp_server import mcp; print([t.name for t in mcp._tool_manager._tools.values()])"
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oubli-0.1.10.tar.gz.
File metadata
- Download URL: oubli-0.1.10.tar.gz
- Upload date:
- Size: 19.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c23ea0912b563998fcae776846382de8ea878f8143b5ae675d824e6624aae980
|
|
| MD5 |
ffe63afc16b89b6706097f2fd0d54f44
|
|
| BLAKE2b-256 |
88e71e635c9740659d800d68f257f11497398ebe2425d33a065c95e5604b03d6
|
File details
Details for the file oubli-0.1.10-py3-none-any.whl.
File metadata
- Download URL: oubli-0.1.10-py3-none-any.whl
- Upload date:
- Size: 21.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3508583db0413cfde92fd7720dc9f5f00548da5fa8d9d1a2d96889d6499c590e
|
|
| MD5 |
e8596a9a946e0b4d5e1ca9a1acb6972c
|
|
| BLAKE2b-256 |
332d714952b3d81ec40a23b496239cbfdae4ee5429dfe1ad2d1d295ecbbb8314
|