Cognitive memory for AI agents — FSRS-6 spaced repetition, 29 brain modules, 3D dashboard, single 22MB Rust binary. MCP server for Claude, Cursor, VS Code, Xcode, JetBrains. https://github.com/samvallad33/vestige
Find a file
2026-01-25 13:33:33 -06:00
.github/workflows Fix CI: correct test names and remove undefined benchmarks 2026-01-25 01:41:40 -06:00
crates Add Prediction Error Gating and smart_ingest tool (26 tools total) 2026-01-25 13:30:03 -06:00
docs Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
packages Replace all engram references with vestige 2026-01-25 01:44:11 -06:00
tests/e2e Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
.gitignore Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
Cargo.lock Add Prediction Error Gating and smart_ingest tool (26 tools total) 2026-01-25 13:30:03 -06:00
Cargo.toml Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
CHANGELOG.md Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
CODE_OF_CONDUCT.md Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
CONTRIBUTING.md Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
demo.sh Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
LICENSE Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
LICENSE-APACHE Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
LICENSE-MIT Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
package.json Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
pnpm-lock.yaml Replace all engram references with vestige 2026-01-25 01:44:11 -06:00
pnpm-workspace.yaml Initial commit: Vestige v1.0.0 - Cognitive memory MCP server 2026-01-25 01:31:03 -06:00
README.md Remove comparison column from Why Vestige section 2026-01-25 13:33:33 -06:00

██╗   ██╗███████╗███████╗████████╗██╗ ██████╗ ███████╗
██║   ██║██╔════╝██╔════╝╚══██╔══╝██║██╔════╝ ██╔════╝
██║   ██║█████╗  ███████╗   ██║   ██║██║  ███╗█████╗
╚██╗ ██╔╝██╔══╝  ╚════██║   ██║   ██║██║   ██║██╔══╝
 ╚████╔╝ ███████╗███████║   ██║   ██║╚██████╔╝███████╗
  ╚═══╝  ╚══════╝╚══════╝   ╚═╝   ╚═╝ ╚═════╝ ╚══════╝

Vestige

Memory traces that fade like yours do

The only AI memory system built on real cognitive science.
FSRS-6 spaced repetition. Prediction Error Gating. Context-dependent recall.
29 MCP tools. 100% local. 100% free.

Quick Start | All 26 Tools | The Science | Comparison

Release License Build


Quick Start (2 minutes)

Step 1: Build & Install

git clone https://github.com/samvallad33/vestige
cd vestige
cargo build --release
sudo cp target/release/vestige-mcp /usr/local/bin/

That's it. Vestige is now globally available.

Step 2: Add to Claude Code

Add to your ~/.claude/settings.json:

{
  "mcpServers": {
    "vestige": {
      "command": "vestige-mcp"
    }
  }
}

Step 3: Add to Claude Desktop (Optional)

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "vestige": {
      "command": "vestige-mcp",
      "args": [],
      "env": {
        "VESTIGE_DATA_DIR": "~/.vestige"
      }
    }
  }
}

Step 4: Restart & Verify

Restart Claude Code/Desktop. You should see 29 Vestige tools available.


Why Vestige?

Feature What It Does
Prediction Error Gating Auto-decides create/update/supersede based on similarity
FSRS-6 Spaced Repetition Full 21-parameter algorithm trained on millions of reviews
Retroactive Importance Mark something important, past 9 hours of memories strengthen
Context-Dependent Recall Retrieval matches encoding context (Tulving 1973)
Memory States Active/Dormant/Silent/Unavailable accessibility model
100% Local No API keys, no cloud, no data leaves your machine

All 29 Tools

Core Memory (8 tools)

Tool Description
ingest Store a new memory
smart_ingest Prediction Error Gating - auto-decides CREATE/UPDATE/SUPERSEDE based on semantic similarity to existing memories
recall Semantic search with keyword matching
semantic_search Pure embedding-based similarity search
hybrid_search BM25 + semantic + RRF fusion (best retrieval quality)
get_knowledge Retrieve a specific memory by ID
delete_knowledge Remove a memory
mark_reviewed FSRS review with 1-4 rating (strengthens memory)

Feedback System (3 tools)

Tool Description
promote_memory Thumbs up - memory led to good outcome, increase retrieval strength
demote_memory Thumbs down - memory was wrong/unhelpful, decrease retrieval strength
request_feedback Ask user if a memory was helpful after using it

Stats & Maintenance (3 tools)

Tool Description
get_stats Memory system statistics (total nodes, retention, embeddings)
health_check System health status
run_consolidation Trigger memory consolidation cycle (decay, promote, embed)

Codebase Memory (3 tools)

Tool Description
remember_pattern Store a code pattern or convention
remember_decision Store an architectural decision with rationale
get_codebase_context Retrieve patterns and decisions for current project

Prospective Memory (5 tools)

Tool Description
set_intention Remember to do something in the future (time/context/event triggers)
check_intentions Check if any intentions should trigger based on current context
complete_intention Mark an intention as fulfilled
snooze_intention Delay an intention
list_intentions List all active intentions

Neuroscience (7 tools)

Tool Description
get_memory_state Check cognitive state (Active/Dormant/Silent/Unavailable)
list_by_state List memories filtered by cognitive state
state_stats Distribution of memories across states
trigger_importance Retroactively strengthen recent memories (Synaptic Tagging)
find_tagged Find memories with high retention (tagged/strengthened)
tagging_stats Synaptic tagging statistics
match_context Context-dependent retrieval (Tulving's Encoding Specificity)

Prediction Error Gating

The smart_ingest tool implements neuroscience-inspired memory gating:

New memory: "The API uses JWT tokens"
                    ↓
         [Prediction Error Gate]
                    ↓
┌────────────────────────────────────────────┐
│ Found similar: "API uses OAuth"            │
│ Similarity: 0.82 | Prediction Error: 0.18  │
│                                            │
│ Decision: UPDATE existing memory           │
│ (Not creating duplicate)                   │
└────────────────────────────────────────────┘

Thresholds:

  • >0.92 similarity → Reinforce (near-identical, just strengthen)
  • >0.75 similarity → Update/Merge (related, combine information)
  • <0.75 similarity → Create (sufficiently different, new memory)
  • Demoted memory + similar new → Supersede (replace bad with good)

This solves the "bad vs good similar memory" problem automatically.


The Science

FSRS-6 Algorithm (2024)

Free Spaced Repetition Scheduler version 6. Trained on 700M+ reviews:

const FSRS_WEIGHTS: [f64; 21] = [
    0.40255, 1.18385, 3.173, 15.69105, 7.1949,
    0.5345, 1.4604, 0.0046, 1.54575, 0.1192,
    1.01925, 1.9395, 0.11, 0.29605, 2.2698,
    0.2315, 2.9898, 0.51655, 0.6621, 0.1, 0.5
];

20-30% better retention than SM-2 (what Anki uses).

Bjork & Bjork Dual-Strength Model (1992)

Memories have two independent strengths:

  • Storage Strength: How well encoded (never decreases)
  • Retrieval Strength: How accessible now (decays with time)

Key insight: difficult retrievals increase storage strength more than easy ones.

Synaptic Tagging & Capture (Frey & Morris 1997)

When something important happens, it retroactively strengthens memories from the past several hours. Vestige implements this with a 9-hour capture window.

Encoding Specificity Principle (Tulving 1973)

Memory retrieval is most effective when the retrieval context matches the encoding context. The match_context tool scores memories by context similarity.

Ebbinghaus Forgetting Curve (1885)

Memory retention decays exponentially: R = e^(-t/S)

Where R = retrievability, t = time, S = stability.


Comparison

Feature Vestige Mem0 Zep Letta
Tools 29 ~5 ~8 ~10
Prediction Error Gating Yes No No No
FSRS-6 spaced repetition Yes No No No
Dual-strength memory Yes No No No
Retroactive importance Yes No No No
Memory states Yes No No No
Context-dependent recall Yes No No No
Local embeddings Yes No No No
100% local Yes No No No
Free & open source Yes Freemium Freemium Yes

Configuration

Environment Variables

Variable Description Default
VESTIGE_DATA_DIR Data storage directory ~/.vestige
VESTIGE_LOG_LEVEL Log verbosity (error, warn, info, debug, trace) info

Data Location

All data is stored in ~/.vestige/ by default:

  • vestige.db - SQLite database with FTS5
  • embeddings/ - Local embedding cache

Development

Prerequisites

  • Rust 1.75+

Building

git clone https://github.com/samvallad33/vestige
cd vestige
cargo build --release

Testing

cargo test --workspace

Installing Locally

sudo cp target/release/vestige-mcp /usr/local/bin/

Updating

cd vestige
git pull
cargo build --release
sudo cp target/release/vestige-mcp /usr/local/bin/

Restart Claude Code/Desktop to pick up changes.


Troubleshooting

"vestige-mcp: command not found"

Make sure you copied the binary:

sudo cp target/release/vestige-mcp /usr/local/bin/

"No tools showing in Claude"

  1. Check your config file syntax (valid JSON)
  2. Restart Claude Code/Desktop completely
  3. Check logs: VESTIGE_LOG_LEVEL=debug vestige-mcp

"Embeddings not generating"

First run downloads the embedding model (~100MB). Check your internet connection and wait for download to complete.


Contributing

Contributions welcome! Please open an issue or submit a pull request.


License

MIT OR Apache-2.0


Built with cognitive science and Rust.