Cozo Memory

io.github.tobs-codePublished by GitHub account tobs-codev1.0.3Updated Oct 24, 2026

Local-first memory system for AI agents with hybrid search and graph reasoning

The publisher's own server: Memory.fit

Overview

AI-generated overview

A local-first memory server that gives an AI assistant a persistent CozoDB store with hybrid vector, full-text and graph search, plus time-travel history.

What you can do
Write and manage memory: create, update and delete entities, observations, relations, sessions and tasks, with tags and batch operations, and edit a global user profile of preferences and work style. Read and retrieve: hybrid search, advanced search, context lookup, Graph-RAG and graph walking, adaptive and agentic retrieval, and listing entities and sessions. Analyze the knowledge graph: explore, communities, PageRank, betweenness, HITS, shortest paths and semantic walks. Maintain the system: health, metrics, stats, export, import, cleanup, defrag, reflect and snapshots. Optional Ollama-backed actions add LLM cleanup, reflection, community summaries, compaction and query-intent routing.
When to use it
Use it when an assistant should remember past conversations and facts across sessions and reason over relationships between them, rather than doing plain document RAG. It suits users who want memory kept entirely on their own machine with versioned history and contradiction handling.
Requirements
Runs locally over stdio as an npm package (cozo-memory, via npx or a global install); Node.js 20+ recommended. About 1.7 GB RAM with the default embedding model, which downloads roughly 600 MB on first start; the EMBEDDING_MODEL variable selects a lighter model. Advanced actions need a local Ollama service; core CRUD, search and graph operations do not.
Before you install
It stores persistent memory and a user profile on your machine, and write actions can create, update and delete entities, observations and relations, including batch deletes. Changing the embedding model requires re-embedding existing data. Optional Ollama-backed actions send content to a local LLM service, and the README notes an optional Express API bridge.

Installation

In SourceWeft

  1. Open Cozo Memory in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

CozoDB Memory MCP Server

[npm] [Node] [License] [MCP Badge]

Why Cozo Memory?
LLMs have short-term memory limits. Standard RAG retrieves documents but can't connect facts across time. Cozo Memory gives your AI agent persistent, structured memory – it remembers past conversations, infers relationships, detects contradictions, and explores its knowledge graph – fully on your machine, with optional local LLM integration via Ollama for intelligent actions (cleanup, reflection, summarization, agentic routing).

Most memory stacks combine separate databases: SQLite for facts, Chroma for vector search, NetworkX for graphs. CozoDB replaces all of that with one embedded engine: relational, graph, vector, and full-text search in a single query language, one file, zero sync lag.

Local-first memory for Claude & AI agents with hybrid search, Graph-RAG, and time-travel – runs entirely on your machine. Optional Ollama integration enables LLM-powered actions (cleanup, reflect, summarize, agentic retrieval).

Table of Contents

Quick Start

Option 1: Install via npm (Recommended)

bash
# Install globallynpm install -g cozo-memory
# Or run directly with npx (no installation needed)npx cozo-memory

Option 2: Build from Source

bash
git clone https://github.com/tobs-code/cozo-memorycd cozo-memorynpm install && npm run buildnpm run start

Now add the server to your MCP client (e.g. Claude Desktop) – see Integration below.

Key Features

🔍 Hybrid Search - Combines semantic (HNSW), full-text (FTS), and graph signals via Reciprocal Rank Fusion for intelligent retrieval

🧠 Agentic Retrieval - Auto-routing engine analyzes query intent via local LLM to select optimal search strategy (Vector, Graph, or Community)

⏱️ Time-Travel Queries - Version all changes via CozoDB Validity; query any point in history with full audit trails

🎯 GraphRAG-R1-Inspired Adaptive Retrieval - Intelligent system with Progressive Retrieval Attenuation (PRA) and Cost-Aware F1 (CAF) scoring, conceptually inspired by GraphRAG-R1 (Yu et al., WWW 2026) and adapted for CozoDB, that learns from usage

⏳ Temporal Conflict Resolution - Automatic detection and resolution of contradictory observations with semantic analysis and audit preservation

🏠 100% Local - Embeddings via ONNX/Transformers; data stays on your machine. Some advanced features (cleanup, reflect, summarize, agentic search) require an optional Ollama service for local LLM inference — but the core search, CRUD, and graph operations work without any LLM.

🧠 Multi-Hop Reasoning - Logic-aware graph traversal with vector pivots for deep relational reasoning

🗂️ Hierarchical Memory - Multi-level architecture (L0-L3) with intelligent compression and LLM-backed summarization

→ See all features | Version History

Positioning & Comparison

Why CozoDB instead of SQLite + Chroma + NetworkX?

A common first question is: "Why not just combine existing tools?"

If you need...Typical separate stackCozoDB Memory
Structured data & relationsSQLite / PostgreSQL✅ Built-in relational engine
Semantic / vector searchChroma / Qdrant / Pinecone✅ HNSW + FTS + RRF in one engine
Graph traversal & reasoningNetworkX / Neo4j✅ Native graph queries + PageRank
Time-travel / versioningCustom audit tables✅ Built-in Validity time-travel
Unified query languageMultiple APIs + glue code✅ Single Datalog query across all dimensions

The core insight: Most memory stacks bolt vector search onto a graph DB, or graph search onto a vector DB. CozoDB is different: it is a single engine that natively combines relational, graph, vector, and full-text search. That means:

  • One query language (Datalog) reaches every dimension.
  • No sync lag between separate indexes.
  • No ETL bridge between "vector results" and "graph expansion."
  • Smaller operational surface: one database file, one process, one dependency chain.

Comparison with other memory solutions

Most "Memory" MCP servers fall into two categories:

  1. Simple Knowledge Graphs: CRUD operations on triples, often only text search
  2. Pure Vector Stores: Semantic search (RAG), but little understanding of complex relationships

This server fills the gap in between ("Sweet Spot"): A local, database-backed memory engine combining vector, graph, and keyword signals — powered by CozoDB's unified engine rather than a patchwork of separate databases.

FeatureCozoDB Memory (This Project)Official Reference (@modelcontextprotocol/server-memory)mcp-memory-service (Community)Database Adapters (Qdrant/Neo4j)
BackendCozoDB (Graph + Vector + Relational + FTS in one engine)JSON file (memory.jsonl)SQLite / CloudflareSpecialized DB (only Vector or Graph)
Search LogicAgentic (Auto-Route): Hybrid + Graph + SummariesKeyword only / Exact Graph MatchVector + KeywordMostly only one dimension
InferenceYes: Built-in engine for implicit knowledgeNoNo ("Dreaming" is consolidation)No (Retrieval only)
CommunityYes: Hierarchical Community SummariesNoNoOnly clustering (no summary)
Time-TravelYes: Queries at any point in time (Validity)No (current state only)History available, no native DB featureNo
MaintenanceJanitor: LLM-backed cleanupManualAutomatic consolidationMostly manual
DeploymentLocal (Node.js + Embedded DB)Local (Docker/NPX)Local or CloudOften requires external DB server

The core advantage is Intelligence and Traceability: By combining an Agentic Retrieval Layer with Hierarchical GraphRAG, the system can answer both specific factual questions and broad thematic queries with much higher accuracy than pure vector stores.

Installation

Prerequisites

  • Node.js 20+ (recommended)
  • RAM: 1.7 GB minimum (for default bge-m3 model)
    • Model download: ~600 MB
    • Runtime memory: ~1.1 GB
    • ⚡ Too heavy? Use EMBEDDING_MODEL=Xenova/all-MiniLM-L6-v2 – only ~400 MB RAM needed (see Embedding Model Options)
  • CozoDB native dependency is installed via cozo-node

Optional: Ollama for LLM-powered actions

Some advanced actions use a local LLM via Ollama for intelligent processing. The core server works without Ollama (CRUD, search, graph operations), but the following actions require it:

ActionPurpose
cleanupLLM-backed observation consolidation
reflectGenerate insights, detect contradictions
summarize_communitiesLLM-generated community summaries
compactSession / entity compaction with LLM summarization
agentic_searchQuery intent classification for auto-routing

Setup (if you need these features):

bash
# 1. Install Ollama from https://ollama.ai# 2. Pull a model (e.g. small + fast for dev):ollama pull demyagent-4b-i1:Q6_K# 3. Ollama runs automatically on http://localhost:11434

If Ollama is not running, the affected actions gracefully fall back to non-LLM behavior (where possible) or return a clear error message.

Via npm (Easiest)

bash
# Install globallynpm install -g cozo-memory
# Or use npx without installationnpx cozo-memory

From Source

bash
git clone https://github.com/tobs-code/cozo-memorycd cozo-memorynpm installnpm run build

Windows Quickstart

bash
npm installnpm run buildnpm run start

Notes:

  • On first start, @xenova/transformers downloads the embedding model (may take time)
  • Embeddings are processed on the CPU

Embedding Model Options

CozoDB Memory supports multiple embedding models via the EMBEDDING_MODEL environment variable:

ModelSizeRAMDimensionsBest For
Xenova/bge-m3 (default)~600 MB~1.7 GB1024High accuracy, production use
Xenova/all-MiniLM-L6-v2~80 MB~400 MB384Low-spec machines, development
Xenova/bge-small-en-v1.5~130 MB~600 MB384Balanced performance

Configuration Options:

Option 1: Using .env file (Easiest for beginners)

bash
# Copy the example filecp .env.example .env
# Edit .env and set your preferred modelEMBEDDING_MODEL=Xenova/all-MiniLM-L6-v2

Option 2: MCP Server Config (For Claude Desktop / Kiro)

json
{  "mcpServers": {    "cozo-memory": {      "command": "npx",      "args": ["cozo-memory"],      "env": {        "EMBEDDING_MODEL": "Xenova/all-MiniLM-L6-v2"      }    }  }}

Option 3: Command Line

bash
# Use lightweight model for developmentEMBEDDING_MODEL=Xenova/all-MiniLM-L6-v2 npm run start

Download Model First (Recommended):

bash
# Set model in .env or via command line, then:EMBEDDING_MODEL=Xenova/all-MiniLM-L6-v2 npm run download-model

Note: Changing models requires re-embedding existing data. The model is downloaded once on first use.

Integration

Claude Desktop

Using npx (Recommended)
json
{  "mcpServers": {    "cozo-memory": {      "command": "npx",      "args": ["cozo-memory"]    }  }}
Using global installation
json
{  "mcpServers": {    "cozo-memory": {      "command": "cozo-memory"    }  }}
Using local build
json
{  "mcpServers": {    "cozo-memory": {      "command": "node",      "args": ["C:/Path/to/cozo-memory/dist/index.js"]    }  }}

Framework Adapters

Official adapters for seamless integration with popular AI frameworks:

🦜 LangChain Adapter

bash
npm install @cozo-memory/langchain @cozo-memory/adapters-core
typescript
import { CozoMemoryChatHistory, CozoMemoryRetriever } from '@cozo-memory/langchain';
const chatHistory = new CozoMemoryChatHistory({ sessionName: 'user-123' });const retriever = new CozoMemoryRetriever({ useGraphRAG: true, graphRAGDepth: 2 });

🦙 LlamaIndex Adapter

bash
npm install @cozo-memory/llamaindex @cozo-memory/adapters-core
typescript
import { CozoVectorStore } from '@cozo-memory/llamaindex';
const vectorStore = new CozoVectorStore({ useGraphRAG: true });

Documentation: See adapters/README.md for complete examples and API reference.

CLI & TUI

CLI Tool

Full-featured CLI for all operations:

bash
# System operationscozo-memory system healthcozo-memory system metrics
# Entity operationscozo-memory entity create -n "MyEntity" -t "person"cozo-memory entity get -i <entity-id>
# Searchcozo-memory search query -q "search term" -l 10cozo-memory search agentic -q "agentic query"
# Graph operationscozo-memory graph pagerankcozo-memory graph communities
# Export/Importcozo-memory export json -o backup.jsoncozo-memory import file -i data.json -f cozo
# All commands support -f json or -f pretty for output formatting

See CLI help for complete command reference: cozo-memory --help

TUI (Terminal User Interface)

Interactive TUI with mouse support powered by Python Textual:

bash
# Install Python dependencies (one-time)pip install textual
# Launch TUInpm run tui# or directly:cozo-memory-tui

TUI Features:

  • 🖱️ Full mouse support (click buttons, scroll, select inputs)
  • ⌨️ Keyboard shortcuts (q=quit, h=help, r=refresh)
  • 📊 Interactive menus for all operations
  • 🎨 Rich terminal UI with colors and animations

Architecture Overview

mermaid
graph TB    Client[MCP Client<br/>Claude Desktop, etc.]    Server[MCP Server<br/>FastMCP + Zod Schemas]    Services[Memory Services]    Embeddings[Embeddings<br/>ONNX Runtime]    Search[Hybrid Search<br/>RRF Fusion]    Cache[Semantic Cache<br/>L1 + L2]    Inference[Inference Engine<br/>Multi-Strategy]    DB[(CozoDB SQLite<br/>Relations + Validity<br/>HNSW Indices<br/>Datalog/Graph)]        Client -->|stdio| Server    Server --> Services    Services --> Embeddings    Services --> Search    Services --> Cache    Services --> Inference    Services --> DB        style Client fill:#e1f5ff,color:#000    style Server fill:#fff4e1,color:#000    style Services fill:#f0e1ff,color:#000    style DB fill:#e1ffe1,color:#000

See docs/ARCHITECTURE.md for detailed architecture documentation

MCP Tools Overview

The interface is reduced to 5 consolidated tools:

ToolPurposeKey Actions
mutate_memoryWrite operationscreate_entity, update_entity, delete_entity, add_observation, create_relation, transactions, sessions, tasks, update_observation, batch_delete, manage_tags, batch
query_memoryRead operationssearch, advancedSearch, context, graph_rag, graph_walking, agentic_search, adaptive_retrieval, list_entities, get_entity_detail, get_session_context, list_sessions
analyze_graphGraph analysisexplore, communities, pagerank, betweenness, hits, shortest_path, semantic_walk
manage_systemMaintenancehealth, metrics, stats, export, import, cleanup, defrag, reflect, snapshots
edit_user_profileUser preferencesEdit global user profile with preferences and work style

See docs/API.md for complete API reference with all parameters and examples

Troubleshooting

Common Issues

First Start Takes Long

  • The embedding model download takes 30-90 seconds on first start (Transformers loads ~500MB of artifacts)
  • This is normal and only happens once
  • Subsequent starts are fast (< 2 seconds)

LLM-powered actions require Ollama

  • The following actions use a local LLM for intelligent processing: cleanup, reflect, summarize_communities, compact, agentic_search
  • Install Ollama from https://ollama.ai
  • Pull the desired model: ollama pull demyagent-4b-i1:Q6_K (or your preferred model)
  • Without Ollama, these actions fall back to non-LLM behavior or return a clear error
  • Core features (CRUD, search, graph, infer) work without any LLM

Windows-Specific

  • Embeddings are processed on CPU for maximum compatibility
  • RocksDB backend requires Visual C++ Redistributable if using that option

Performance Issues

  • First query after restart is slower (cold cache)
  • Use health action to check cache hit rates
  • Consider RocksDB backend for datasets > 100k entities

See docs/BENCHMARKS.md for performance optimization tips

Documentation

Development

Structure

  • src/index.ts: MCP Server + Tool Registration
  • src/memory-service.ts: Core business logic
  • src/db-service.ts: Database operations
  • src/embedding-service.ts: Embedding Pipeline + Cache
  • src/hybrid-search.ts: Search Strategies + RRF
  • src/inference-engine.ts: Inference Strategies
  • src/api_bridge.ts: Express API Bridge (optional)

Scripts

bash
npm run build        # TypeScript Buildnpm run dev          # ts-node Start of MCP Servernpm run start        # Starts dist/index.js (stdio)npm run bridge       # Build + Start of API Bridgenpm run benchmark    # Runs performance testsnpm run eval         # Runs evaluation suite

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

License

Apache 2.0 - See LICENSE for details.

Acknowledgments

Built with:

Research foundations:

  • GraphRAG-R1 (Yu et al., WWW 2026) - conceptual inspiration for adaptive retrieval
  • HopRAG (ACL 2025) - conceptual inspiration for multi-hop reasoning
  • T-GRAG (Li et al., 2025) - conceptual inspiration for temporal conflict resolution
  • FEEG Framework (Samuel et al., 2026) - conceptual inspiration for query intent classification
  • Allan-Poe (arXiv:2511.00855) - conceptual inspiration for dynamic fusion

Source: README.md at commit 341cd38

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.0.3LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Memory integrations