Skip to main content
Glama
neo37

holographic-memory

by neo37

🧠 Holographic Memory — MCP Server (Go)

🌐 Website: holo.ai3d.art  ·  Live (GitHub Pages): neo37.github.io/holographic-memory  ·  Open-source · Privacy-first · $5/mo cloud

The first fully open-source, privacy-first holographic long-term memory for AI agents. Built on Kanerva's Sparse Distributed Memory (SDM) — the associative memory that recent research (2021–2026) proved to be mathematically equivalent to the Attention mechanism inside Transformers (GPT-4, Claude).

Give Claude Desktop, Cursor and any MCP-compatible agent a memory that thinks by association, not by keyword match. Say "I don't like Python" today, ask "what should I write this script in?" next month — and the agent recalls "Go, because you don't like Python." Plain vector RAG can't do that. Interference-based recall can.


Table of Contents / Оглавление

#

English

Русский

1

Why Holographic Memory

Зачем голографическая память

2

How It Works

Как это работает

3

The Math

Математическая модель

4

MCP Tools

Инструменты MCP

5

Architecture

Архитектура

6

Editions & Pricing

Редакции и цены

7

Install

Установка

8

Tech Stack

Технологический стек

9

Roadmap

Дорожная карта

10

Documentation

Документация

11

License

Лицензия


Related MCP server: Memsolus MCP Server

1. Why Holographic Memory

Classic RAG is literal: no keyword overlap → no hit. SDM stores every fact as a high-dimensional binary vector ({0,1}ⁿ, n ≈ 10 000) smeared across many addresses. Recall reconstructs the signal by majority vote over everything inside the activation radius, so it survives noise, partial cues and vague prompts — and it surfaces connections the user only hinted at.

Vector RAG

Holographic Memory (SDM)

Match model

keyword / cosine similarity

associative interference

Vague query

misses

reconstructs from noise

Conflicting facts

silently coexist

flagged as interference

Foundation

ad-hoc embeddings

Kanerva SDM ≈ Transformer Attention

2. How It Works

flowchart LR
    A["Fact:<br/>'User dislikes Python'"] -->|encode| B["Hypervector<br/>{0,1}^10000"]
    B -->|"write into radius r"| C[(Distributed<br/>address cloud)]
    Q["Vague query:<br/>'what language?'"] -->|encode| D["Query vector"]
    D -->|"activate within r"| C
    C -->|"majority-rule read"| E["De-noised recall:<br/>'Use Go — you dislike Python'"]

A fact is not stored in one row — it is superposed across every hard location within a Hamming radius. Reading a noisy or vague cue re-collects those overlapping traces and votes them back into a clean answer.

3. The Math

Implemented in Go, straight from Kanerva's SDM:

  • Distance — Hamming: &nbsp; d(A, B) = Σᵢ (Aᵢ ⊕ Bᵢ)

  • Write — interference: activate every hard location within radius r of address X, then increment/decrement their counters (wave superposition): Activate(X) = { Y ∈ HardLocations | d(X, Y) ≤ r }

  • Read — associative recall: sum activated cells around query Q, apply the majority rule: Outputᵢ = sign( Σ_{Y ∈ Activate(Q)} CellContents(Y)ᵢ )

This reconstructs a 100%-clean context even from a noisy or partially forgotten query.

4. MCP Tools

Tool

What it does

store_holographic_snapshot

Store a structured memory (fact + context + emotional valence + importance + tags) as a superposed hypervector.

recall_by_association

Retrieve a de-noised "meaning cloud" from a vague or emotional cue.

interference_analysis

Detect when a new fact collides with an existing belief; return the conflict + confidence.

consolidate_and_prune

"Sleep": drop weak associations, reinforce frequently used ones, keep the store fast.

{
  "name": "recall_by_association",
  "arguments": { "query": "the project I worked on when I felt down", "association_depth": 3 }
}
{ "name": "interference_analysis", "arguments": { "new_fact": "I moved to Berlin" } }
// → { "conflict_detected": true, "previous_memory": "User lives in London", "confidence": 0.85 }

5. Architecture

flowchart TB
    subgraph Client["AI Agent — Claude Desktop / Cursor"]
        AG[LLM Agent]
    end
    subgraph Server["Holographic Memory Server (Go)"]
        MCP["MCP handler<br/>(stdio / JSON-RPC)"]
        LIC{"License gate<br/>LOCAL = free"}
        SDM["SDM Engine<br/>encode · write · recall"]
        STORE[("SQLite / binary<br/>association store")]
    end
    CLOUD["☁️ Cloud Sync (Pro $5/mo)<br/>encrypted cross-device"]

    AG <-->|"tools/call"| MCP
    MCP --> LIC --> SDM --> STORE
    SDM -. optional .-> CLOUD

6. Editions & Pricing

This project ships Open-Core: the engine is free and open, convenience is paid.

flowchart LR
    Free["🆓 Local — Free<br/>MIT/Apache-2.0<br/>Full SDM engine · 4 tools<br/>Local SQLite · 100% private"]
    Pro["⭐ Cloud / Pro — $5/mo<br/>Encrypted cross-device sync<br/>Managed hosting + backups<br/>Semantic-cloud viz"]
    Biz["🏢 Business<br/>Dual-licensing<br/>Custom SDM integrations"]
    Free --> Pro --> Biz
  • Local (Free) — runs 100% on your machine; your memories never leave your computer.

  • Cloud / Pro ($5/mo) — same memory in Claude at work and Cursor at home; managed, backed up, and visualized.

  • Business — closed-source embedding rights + bespoke integrations.

7. Install

# One command via Smithery
npx -y @smithery/cli install holographic-memory

Or add it manually to claude_desktop_config.json:

{
  "mcpServers": {
    "holographic-memory": {
      "command": "uvx",
      "args": ["holographic-memory-server"],
      "env": {
        "MEMORY_MODE": "LOCAL",
        "MEMORY_LICENSE_KEY": "optional — only for Cloud/Pro sync"
      }
    }
  }
}

MEMORY_MODE=LOCAL needs no key and is free forever. Set a MEMORY_LICENSE_KEY (get one at holo.ai3d.art) only to unlock encrypted cross-device sync.

8. Tech Stack

  • Go 1.24+ — fast, low RAM, single static binary

  • MCP over stdio (JSON-RPC)

  • Local storage — SQLite / binary association file implementing Kanerva SDM

  • Docker — multi-stage Alpine build

  • Payments — Lemon Squeezy (license keys + subscriptions)

9. Roadmap

Tier

Focus

Status

1

Long-term memory for Claude Desktop / Cursor

🚧 In progress

2

Game engines (Unity / Unreal) — NPC skeletal "muscle memory"

🔭 Planned

B2B

Logs / SIEM anomaly detection (patterns smeared across time)

🔭 Planned

Full timeline & Gantt: see docs/GTM_PLAN.md.

10. Documentation

11. License

Dual-licensed:

  • AGPL-3.0 (free) — personal, self-hosted, and open-source use. If you run a modified version as a network service, AGPL requires you to publish your corresponding source. See LICENSE.

  • Commercial License (paid) — required to embed this software in a closed-source or commercial product, or to run it inside a proprietary service without publishing your source. Get it at holo.ai3d.art. See COMMERCIAL-LICENSE.md.


"Smart long-term memory for Claude that doesn't forget the context of a chat from a week ago."

Available Tools

4 tools
consolidate_and_pruneC

Sleep: drop weak/unused associations, keep the store fast.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_loss_toleranceNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must disclose behavioral traits. It mentions dropping associations (destructive) and keeping the store fast, but does not explain what 'weak/unused' means, side effects, reversibility, or rate limits. The parameter max_loss_tolerance is not addressed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short but contains an unclear prefix 'Sleep' that detracts from clarity. It could be more concise without that word and still convey the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple schema (one optional param) and no output schema, the description is too vague. It fails to explain how max_loss_tolerance affects pruning or what the tool actually does in detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% coverage, and the description does not mention the parameter max_loss_tolerance at all. No meaning is added beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool drops weak/unused associations, indicating a pruning operation. This distinguishes it from sibling tools like interference_analysis or recall_by_association. However, the initial word 'Sleep' is confusing and suggests a different action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like interference_analysis or store_holographic_snapshot. The description does not specify context, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

interference_analysisB

Check whether a new fact collides with an existing belief; returns the conflict and confidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_factYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description must fully disclose behavior. It mentions returning conflict and confidence but omits whether the tool is read-only or has side effects, prerequisites, or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action. It is concise, though could benefit from more detail without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple structure (one parameter, no output schema), the description covers the return type (conflict and confidence) and basic purpose. However, it lacks context on whether the tool modifies state or behavior under different conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the only parameter 'new_fact'. The description adds basic meaning by calling it a 'new fact' to check, but fails to specify format constraints or what constitutes a valid fact, leaving ambiguity.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'check' and the resource 'collision between fact and belief', and distinguishes from siblings that focus on consolidation, recall, and storage. However, it lacks specificity on what 'collision' means and the exact output format, given no output schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for conflict detection, and sibling names suggest alternatives (e.g., recall_by_association for retrieval), but no explicit guidance on when to use or not use this tool is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recall_by_associationB

Retrieve a de-noised meaning cloud from a vague or emotional cue. Use when the user refers to the past indirectly.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesVague description or context
top_kNo
association_depthNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions 'de-noised' but fails to disclose behavioral traits like read-only, permissions, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded. Efficient but could include more parameter detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Missing output schema, no annotations, and parameter details lacking. Does not explain return values or parameter behavior, leaving gaps for a 3-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (query has description). top_k and association_depth lack descriptions. Description does not add meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves a de-noised meaning cloud from vague cues, using specific verbs and resources. It differentiates from sibling tools like consolidate_and_prune by focusing on indirect past references, though the term 'meaning cloud' may be jargon.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use when the user refers to the past indirectly,' giving clear context. Does not state when not to use or alternatives, but the guidance is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

store_holographic_snapshotB

Store a structured memory (fact + context + emotional valence + importance + tags) as a superposed hypervector.

ParametersJSON Schema
NameRequiredDescriptionDefault
factYesThe fact to remember
tagsNo
contextNoWhere/why this came up
valenceNopositive | neutral | negativeneutral
importanceNo0.0–1.0

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It does not mention side effects (e.g., overwriting), auth requirements, or what 'superposed hypervector' implies for behavior. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the purpose with no extraneous words. Every part is meaningful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, and no annotations, the description is too brief. It omits return value, usage examples, and behavioral details, leaving the tool underspecified for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 80% schema coverage, the schema already describes most parameters. The description adds conceptual context by grouping them into a 'structured memory' and 'superposed hypervector', which aids understanding beyond raw schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Store' and the resource 'structured memory', enumerating the components (fact, context, emotional valence, importance, tags). It distinguishes this tool from siblings like 'recall_by_association' and 'consolidate_and_prune' by focusing on storage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the siblings. It does not mention prerequisites, context, or exclusions, leaving the agent to infer usage from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a distinct purpose: storing, recalling, analyzing conflicts, and pruning. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores, making them predictable and readable.

Tool Count5/5

Four tools cover the core operations of a memory server without being too few or excessive.

Completeness4/5

The tools cover storage, retrieval, conflict analysis, and maintenance, but lack explicit delete or update operations, leaving minor gaps.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.
    14
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent long-term memory for AI agents through semantic search and automated knowledge graph extraction. It enables agents to store, recall, and reason over facts, preferences, and relationships across multiple conversations and sessions.
    14
    19
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to have persistent associative memory across sessions by storing memories, discovering associations, and retrieving them via spreading activation.
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/neo37/holographic-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server