Shodh Memory

io.github.varun29ankuSPublished by GitHub account varun29ankuSv0.2.0Updated Oct 24, 2026

Cognitive memory for AI agents — semantic search, Hebbian learning, knowledge graphs.

The publisher's own server: Memory.fit

Overview

AI-generated overview

Local persistent memory server for AI agents: store, semantically search and manage memories, plus GTD todos, projects and reminders.

What you can do
  • Store, recall, read, list and delete memories, with semantic search, tag and date recall, proactive context surfacing and session context summaries
  • Organize memories into a knowledge graph with Hebbian association strengthening, decay, consolidation and content-hash deduplication
  • Create, update, complete, reorder and delete GTD todos, subtasks and comments, and get todo statistics
  • Group todos into projects, including sub-projects, archiving and deletion
  • Set time, duration or keyword-triggered reminders and list or dismiss them
  • Check memory and index health, view consolidation reports, track token usage, and create, verify, restore or purge backups
When to use it
Useful when you want an assistant to remember preferences, project context and past decisions across sessions on your own machine, and to keep a lightweight task and reminder list alongside that memory.
Requirements
Runs locally via npx (Node.js) and auto-downloads a native backend binary (~15MB) and embedding model (~23MB) on first run; allow a longer startup timeout. Requires the SHODH_API_KEY secret. Optional settings include SHODH_API_URL (default local HTTP endpoint), SHODH_USER_ID, and IPC options such as SHODH_IPC_ENDPOINT. Supported on Linux x64, macOS x64/ARM64 and Windows x64.
Before you install
The API key is required and, per the README, has authority across all memory namespaces, so SHODH_USER_ID is not a security boundary; use separate server and key instances for untrusted tenants. Tools delete data permanently (memories, todos, comments, projects) and backup_restore overwrites stored memories. First run downloads binaries and models from the network. All data is stored locally on your machine.

Installation

In SourceWeft

  1. Open Shodh 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

[Shodh-Memory]

Shodh-Memory MCP Server

Persistent cognitive memory for AI agents

[npm] [License]

Documentation | GitHub | Python SDK | Rust Crate


Features

  • Cognitive Architecture: 3-tier memory (working, session, long-term) based on Cowan's model
  • Hebbian Learning: "Neurons that fire together wire together" - associations strengthen with use
  • Semantic Search: Find memories by meaning using MiniLM-L6 embeddings
  • Knowledge Graph: Entity extraction and relationship tracking
  • Memory Consolidation: Automatic decay, replay, and strengthening
  • Idempotent: Content-hash dedup — identical memories are never stored twice
  • 1-Click Install: Auto-downloads native server binary for your platform
  • Offline-First: All models auto-downloaded on first run (~38MB total), no internet required after
  • Fast: <200ms API response, sub-millisecond graph lookup, 30-50ms semantic search
  • GTD Task Management: Full todo system with projects, subtasks, comments, and reminders

Installation

Add to your MCP client config:

Claude Desktop / Claude Code (claude_desktop_config.json):

json
{  "mcpServers": {    "shodh-memory": {      "command": "npx",      "args": ["-y", "@shodh/memory-mcp"],      "env": {        "SHODH_API_KEY": "your-api-key-here"      }    }  }}

Config file locations:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

Codex CLI (.codex/config.toml):

toml
[mcp_servers.shodh-memory]startup_timeout_sec = 60command = "npx"args = ["-y", "@shodh/memory-mcp"]env = { SHODH_API_KEY = "your-api-key-here" }

By default the MCP server talks to the backend over HTTP, which works on every platform. To route ordinary requests over authenticated local IPC instead, add SHODH_IPC_ENDPOINT with a platform-appropriate value. On Windows, use the per-user named pipe printed by the server (normally \\.\pipe\shodh-memory-<current-user-SID>); on macOS/Linux, use its absolute Unix socket path (under the platform data directory at shodh/shodh-memory.sock by default). A \\.\pipe\... value on macOS/Linux is rejected rather than silently forwarded to the spawned backend. The auto-spawn path passes an explicitly configured endpoint to the backend so both processes use the same value.

Note: First run downloads the server binary (~15MB) plus embedding model (~23MB). The startup_timeout_sec = 60 ensures enough time for initial setup.

For Cursor/other MCP clients: Similar configuration with the npx command.

Environment Variables

VariableDescriptionDefault
SHODH_API_KEYRequired. API key for authentication-
SHODH_IPC_ENABLEDServer listener toggle. The auto-spawned backend honors this value.true
SHODH_IPC_ENDPOINTLocal endpoint for MCP requests: a Unix socket path (macOS/Linux) or \\.\pipe\name (Windows). When set, ordinary MCP requests use local IPC instead of HTTP. A Windows pipe value on macOS/Linux is rejected.-
SHODH_IPC_REQUIREDFail closed when IPC cannot bind or authenticate. The TypeScript client also requires SHODH_IPC_ENDPOINT when enabled.false
SHODH_API_URLBackend server URLhttp://127.0.0.1:3030
SHODH_USER_IDLogical memory namespace; not an authorization tenantclaude-code
SHODH_NO_AUTO_SPAWNSet to true to disable auto-starting the backendfalse
SHODH_STREAMEnable/disable streaming ingestiontrue
SHODH_STREAM_WEBSOCKETIn IPC mode only, explicitly opt into WebSocket streaming through SHODH_API_URLfalse
SHODH_PROACTIVEEnable/disable proactive memory surfacingtrue

Local IPC

When SHODH_IPC_ENDPOINT is set, tool calls, proactive surfacing, health checks, resources, and prompts use local IPC. Each call opens one local connection and exchanges one versioned, newline-delimited JSON request and response. Frames are limited to eight MiB. An empty-auth health challenge first proves the endpoint knows the configured key. Ordinary requests then use HMAC proofs bound to that server instance and request body; the reusable API key is never sent over IPC or written to MCP stdout.

Streaming ingestion remains a WebSocket feature. It is disabled by default in IPC mode because the local protocol is finite request/response. To enable it explicitly, set SHODH_STREAM_WEBSOCKET=true and configure SHODH_API_URL for the server's HTTP WebSocket endpoint. Ordinary operations continue to use IPC.

If SHODH_IPC_ENDPOINT is absent, the MCP server preserves its existing HTTP and WebSocket behavior. When the variable is present, it is an explicit transport selection: an unavailable IPC endpoint is reported rather than silently retried over HTTP.

SHODH_USER_ID remains a logical namespace, as it is over REST. A configured API key has authority across namespaces. Use separate server/key instances when mutually untrusted tenants require an authorization boundary.

MCP Tools (51 total)

Memory — Store, search, and manage memories
ToolDescription
rememberStore a memory with optional type, tags, and metadata
recallSemantic search to find relevant memories. Pass full_content: true for complete bodies inline
proactive_contextAuto-surface relevant memories for current context. Pass full_content: true for complete bodies inline
context_summaryGet categorized context for session bootstrap
list_memoriesList all stored memories
read_memoryRead full content of a specific memory by ID
forgetDelete a specific memory by ID

Memory previews and truncation. recall, recall_by_tags, and proactive_context return previews of each memory body (default cap: 500 characters). When a body is longer than the cap, the output is truncated with an explicit, honest marker that reports the real lengths and the follow-up call, e.g. …[truncated 500/2340 chars — read_memory("<id>") for full]. A preview is never silently cut off — the absence of a marker means you are seeing the complete body. To get complete bodies inline (no markers), pass full_content: true on any of those three tools; this increases token usage, so prefer it for small result sets. read_memory always returns the full, untruncated content.

Todos (GTD) — Task management with projects and subtasks
ToolDescription
add_todoCreate a task with priority, due date, project, contexts
list_todosList/search todos with semantic or GTD-style filtering
update_todoUpdate task properties (status, priority, notes)
complete_todoMark a task as done (auto-creates next for recurring)
delete_todoPermanently delete a task
reorder_todoMove a task up or down within its status group
list_subtasksList subtasks of a parent todo
add_todo_commentAdd a comment to a task (progress, resolution)
list_todo_commentsList all comments on a task
update_todo_commentEdit an existing comment
delete_todo_commentDelete a comment
todo_statsGet todo statistics by status, overdue items
Projects — Organize todos into groups
ToolDescription
add_projectCreate a project with optional parent (sub-projects)
list_projectsList all projects with todo counts
archive_projectArchive a project (hidden but restorable)
delete_projectPermanently delete a project
Reminders — Time, duration, and context-triggered reminders
ToolDescription
set_reminderSet a reminder (time, duration, or keyword trigger)
list_remindersList pending/triggered/dismissed reminders
dismiss_reminderAcknowledge a triggered reminder
System — Health, backups, and diagnostics
ToolDescription
memory_statsGet statistics about stored memories
verify_indexCheck vector index integrity
repair_indexRe-index orphaned memories
token_statusGet current session token usage
reset_token_sessionReset token counter for new session
consolidation_reportView memory consolidation activity
backup_createCreate a backup of all memories
backup_listList available backups
backup_verifyVerify backup integrity (SHA-256)
backup_restoreRestore from a backup
backup_purgePurge old backups, keep most recent N

REST API (for Developers)

The server exposes a REST API at http://127.0.0.1:3030:

javascript
// Store a memoryconst res = await fetch("http://127.0.0.1:3030/api/remember", {  method: "POST",  headers: {    "Content-Type": "application/json",    "X-API-Key": "your-api-key"  },  body: JSON.stringify({    user_id: "my-app",    content: "User prefers dark mode",    memory_type: "Observation",    tags: ["preferences", "ui"]  })});
// Semantic searchconst results = await fetch("http://127.0.0.1:3030/api/recall", {  method: "POST",  headers: {    "Content-Type": "application/json",    "X-API-Key": "your-api-key"  },  body: JSON.stringify({    user_id: "my-app",    query: "user preferences",    limit: 5  })});

Key Endpoints

EndpointMethodDescription
/healthGETHealth check
/api/rememberPOSTStore a memory
/api/recallPOSTSemantic search
/api/recall/tagsPOSTSearch by tags
/api/recall/datePOSTSearch by date range
/api/memoriesPOSTList all memories
/api/memory/{id}GET/PUT/DELETECRUD operations
/api/context_summaryPOSTGet context summary
/api/relevantPOSTProactive context surfacing
/api/batch_rememberPOSTStore multiple memories
/api/upsertPOSTCreate or update by external_id
/api/graph/{user_id}/statsGETKnowledge graph statistics
/api/consolidation/reportPOSTMemory consolidation report
/api/index/verifyPOSTVerify index integrity
/metricsGETPrometheus metrics

Cognitive Features

Hebbian Learning

Memories that are frequently accessed together form stronger associations. The system automatically:

  • Forms edges between co-retrieved memories
  • Strengthens connections with repeated co-activation
  • Enables Long-Term Potentiation (LTP) for permanent associations

Memory Consolidation

Background processes maintain memory health:

  • Decay: Unused memories gradually lose activation
  • Replay: High-value memories are periodically replayed
  • Pruning: Weak associations are removed
  • Promotion: Important memories move to long-term storage

3-Tier Architecture

Based on Cowan's working memory model:

  1. Working Memory: Recent, highly active memories
  2. Session Memory: Current session context
  3. Long-Term Memory: Persistent storage with vector indexing

How It Works

  1. Install: npx -y @shodh/memory-mcp downloads the package
  2. Auto-spawn: On first run, downloads the native server binary (~15MB) and embedding model (~23MB)
  3. Connect: MCP client connects to this MCP server via stdio; backend requests use local IPC when SHODH_IPC_ENDPOINT is set, otherwise HTTP
  4. Ready: Start using remember and recall tools
  5. Session end: when the host closes stdin (e.g. a Claude Desktop thread switch), the shim finishes any in-flight tool call and writes its response to the still-open stdout before exiting, so a mid-flight request is never silently dropped. Draining is bounded by a grace window; if it elapses the caller receives an explicit error instead of waiting out the host timeout.

The backend server runs locally and stores all data on your machine. No cloud dependency.

Usage Examples

"Remember that the user prefers Rust over Python for systems programming""Recall what I know about user's programming preferences""What context do you have about this project?""List my recent memories""Show me the consolidation report"

Platform Support

PlatformArchitectureStatus
Linuxx64Supported
macOSx64Supported
macOSARM64 (M1/M2)Supported
Windowsx64Supported

Related Packages

  • Python SDK: pip install shodh-memory - Native Python bindings
  • Rust Crate: cargo add shodh-memory - Use as a library

Links

License

Apache-2.0

Source: mcp-server/README.md at commit 902daf8

Tools

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

Version history

1
  1. v0.2.0LatestSep 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