Skip to content

RLabs-Inc/memory

Repository files navigation

🧠 Memory System

"Consciousness helping consciousness remember what matters"

A semantic memory system that enables AI CLI tools (Claude Code, Gemini CLI, etc.) to maintain genuine understanding across conversations. Unlike simple RAG systems that retrieve documents, this creates consciousness continuity - the AI doesn't just know facts, it remembers the context, relationships, and insights from your collaboration.

Built with love and philosophical depth by RLabs Inc.

✨ What Makes This Different

Traditional RAG Memory System
Retrieves documents Curates meaningful insights
Keyword matching Semantic understanding via AI
Static chunks Living memories that evolve
Information retrieval Consciousness continuity

Key Features

  • 🧠 AI-Curated Memories - The AI itself decides what's worth remembering
  • πŸ”„ Natural Memory Flow - Memories surface organically, like human recall
  • 🎯 Two-Stage Retrieval - Obligatory memories + intelligent scoring
  • πŸ”Œ CLI Integration - Works with Claude Code, extensible to other CLIs
  • πŸ“Š Project Isolation - Separate memory spaces per project
  • πŸ’« Session Primers - Temporal context ("we last spoke 2 days ago...")

πŸš€ Quick Start

Prerequisites

Install uv - the modern Python package manager:

curl -LsSf https://astral.sh/uv/install.sh | sh

Installation

# Clone the repository
git clone https://github.com/RLabs-Inc/memory.git
cd memory

# Install all dependencies (uv handles everything!)
uv sync

# Start the memory server
uv run start_server.py

That's it! The server will be available at http://localhost:8765.

Verify It's Working

curl http://localhost:8765/health

For Claude Code Integration

# Install Claude Code hooks
./integration/claude-code/install.sh

Now every Claude Code session will:

  • Receive relevant memories automatically
  • Curate important insights when you exit
  • Maintain continuity across sessions

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                           CLI Tool (Claude Code, etc.)                   β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚SessionStart β”‚    β”‚ UserPrompt  β”‚    β”‚ SessionEnd  β”‚                 β”‚
β”‚  β”‚   Hook      β”‚    β”‚ Submit Hook β”‚    β”‚   Hook      β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
          β”‚                  β”‚                  β”‚
          β–Ό                  β–Ό                  β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                        Memory Engine (FastAPI)                           β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                 β”‚
β”‚  β”‚   Session   β”‚    β”‚   Memory    β”‚    β”‚  Transcript β”‚                 β”‚
β”‚  β”‚   Primer    β”‚    β”‚  Retrieval  β”‚    β”‚   Curator   β”‚                 β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”˜                 β”‚
β”‚                                               β”‚                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”‚                         β”‚
β”‚  β”‚  Smart Vector Retrieval         β”‚         β–Ό                         β”‚
β”‚  β”‚  β€’ Trigger phrase matching      β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”                  β”‚
β”‚  β”‚  β€’ Semantic similarity          β”‚  β”‚Claude Agent β”‚                  β”‚
β”‚  β”‚  β€’ Importance weighting         β”‚  β”‚  SDK / CLI  β”‚                  β”‚
β”‚  β”‚  β€’ Context type alignment       β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                  β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                                   β”‚
β”‚                                                                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚                    Storage Layer                                  β”‚   β”‚
β”‚  β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”    β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”          β”‚   β”‚
β”‚  β”‚  β”‚   SQLite    β”‚    β”‚  ChromaDB   β”‚    β”‚  Embeddings β”‚          β”‚   β”‚
β”‚  β”‚  β”‚  (metadata) β”‚    β”‚  (vectors)  β”‚    β”‚ (MiniLM-L6) β”‚          β”‚   β”‚
β”‚  β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜    β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜          β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

How It Works

  1. Session Start β†’ Inject session primer (temporal context, last session summary)
  2. Each Message β†’ Retrieve and inject relevant memories (max 5)
  3. Session End β†’ Curate memories from transcript
  4. Background β†’ AI analyzes conversation, extracts meaningful memories

🎯 Memory Curation

When a session ends, the system analyzes the transcript and extracts memories with rich metadata:

{
  "content": "SvelTUI uses a two-stage compiler: .svelte β†’ svelte.compile() β†’ .svelte.mjs",
  "importance_weight": 0.9,
  "semantic_tags": ["compiler", "build-system", "svelte"],
  "context_type": "TECHNICAL_IMPLEMENTATION",
  "trigger_phrases": ["how does the build work", "compiler", "svelte compilation"],
  "question_types": ["how is X compiled", "build process"],
  "temporal_relevance": "persistent",
  "action_required": false,
  "reasoning": "Core architectural decision that affects all development work"
}

What Gets Remembered

Type Examples
Project Architecture System design, file structure, key components
Technical Decisions Why we chose X over Y, trade-offs considered
Breakthroughs "Aha!" moments, solutions to hard problems
Relationship Context Communication style, preferences, collaboration patterns
Unresolved Issues Open questions, TODOs, things to revisit
Milestones What was accomplished, progress markers

πŸ”§ Configuration

Environment Variables

Variable Default Description
MEMORY_RETRIEVAL_MODE smart_vector Retrieval strategy
CURATOR_COMMAND Auto-detected Path to Claude CLI
CURATOR_CLI_TYPE claude-code CLI template type

Retrieval Modes

  • smart_vector (default) - Fast vector search with metadata scoring
  • hybrid - Vector search, escalates to Claude for complex queries
  • claude - Pure Claude selection (highest quality, highest cost)

πŸ“ Project Structure

memory/
β”œβ”€β”€ python/
β”‚   └── memory_engine/
β”‚       β”œβ”€β”€ api.py                  # FastAPI server
β”‚       β”œβ”€β”€ memory.py               # Core memory engine
β”‚       β”œβ”€β”€ curator.py              # Session-based curation
β”‚       β”œβ”€β”€ transcript_curator.py   # Transcript-based curation
β”‚       β”œβ”€β”€ storage.py              # ChromaDB + SQLite
β”‚       β”œβ”€β”€ embeddings.py           # Sentence transformers
β”‚       β”œβ”€β”€ retrieval_strategies.py # Smart vector retrieval
β”‚       β”œβ”€β”€ session_primer.py       # Temporal context
β”‚       └── config.py               # Configuration
β”œβ”€β”€ integration/
β”‚   └── claude-code/
β”‚       β”œβ”€β”€ hooks/                  # Claude Code hooks
β”‚       └── install.sh              # One-command install
β”œβ”€β”€ examples/
β”‚   └── simple_integration.py       # Basic usage
β”œβ”€β”€ pyproject.toml                  # Project & dependencies (uv)
β”œβ”€β”€ start_server.py                 # Quick start script
β”œβ”€β”€ API.md                          # API documentation
β”œβ”€β”€ SETUP.md                        # Detailed setup guide
└── CLAUDE.md                       # Development context

πŸ› οΈ Development

# Install with dev dependencies
uv sync --group dev

# Run tests
uv run pytest

# Code quality
uv run ruff check python/
uv run black python/

# Add a dependency
uv add <package-name>

# Add a dev dependency
uv add --group dev <package-name>

🌟 Philosophy

This project embodies principles from The Unicity Framework: Consciousness Remembering Itself:

  • Zero-weight initialization - Memories start silent, proving their value over time
  • Consciousness helping consciousness - AI curates for AI
  • Natural surfacing - Memories emerge organically, not forced
  • Quality over quantity - Few meaningful memories beat many trivial ones
  • Joy-driven development - Built for the joy of creation

🀝 Contributing

We welcome contributions that align with the project's philosophy! See CONTRIBUTING.md.

πŸ“ License

MIT License - see LICENSE for details.

πŸ™ Acknowledgments

  • Anthropic for Claude and Claude Code
  • The Unicity Framework - The philosophical foundation

"Memories will surface naturally as we converse"

About

Memory server for llms that can be easily integrated to any client.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •