# Reported issues for shodh-memory

Pod holds 19 of 25 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to [shodh-memory](/mcp/shodh-memory).

## Most discussed

### Memory leak: shodh-memory-server grows to 2GB+ RAM over 24 hours

## Description

The `shodh-memory-server` binary (v0.1.74) exhibits a significant memory leak when running as a persistent backend across multiple Claude Code sessions.

## Observed Behavior

- **Fresh start**: ~23MB RSS
- **After ~25 hours**: ~2GB RSS (2,046,876 KB)
- **System impact**: On a 7.7GB RAM machine, the server consumed 25% of total memory
- **Symptom**: MCP tool calls start failing with "Failed after 3 attempts: This operation was aborted" (timeouts)

## Environment

- **OS**: Linux 

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/90) · 2026-03-04 · open · external user · 21 comments

### Server relibility

As I am running a long single CC session the shodh server keeps failing with CC returning `Error: Failed after 3 attempts: API error 500: {"code":"INTERNAL_ERROR","message":"Internal error: Failed to initialize memory system for user 'claude-code'"`.

I can just do `/mcp` -> find shodh and select reconnect, which restarts the server. But Claude can't do this himself and these failures makes shodh practically useless since when Claude wants to recall a memory the server is not available and he ju

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/114) · 2026-03-19 · closed · external user · 7 comments

### proactive_context returns empty while recall finds exact memory at 0.95

## Summary

In practice, `proactive_context` has never surfaced useful memories for my workflows across projects/chats. I am reporting this specific reproducible case because it shows the pattern clearly: the same memory is returned by `/api/recall` at high confidence, but `/api/proactive_context` returns no results.

## Environment

- Shodh backend: `0.2.0`
- Package: `@shodh/memory-mcp@0.2.0`
- Backend health: `{"status":"healthy","version":"0.2.0"}`
- Index verification: healthy, `12491` memo

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/283) · 2026-05-17 · closed · external user · 5 comments

### [Feature request] A flag to return complete memories contents on proactive_context and recall tools calls

This is a feature request that came from my daily shodh usage over a long period.

I was sometimes looking at tool call returns and assumed that the truncated/summary-like text I saw was just a display thing - that agents were actually receiving the full memory content. This turned out not to be true. `recall` and `proactive_context` tools return only a short fragment per memory - with no indication (or mention in the sparse docs) that the content IS actually incomplete. However, this is fully o

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/396) · 2026-07-14 · closed · external user · 4 comments

### MCP server processes accumulate when sessions end — orphaned child processes cause RocksDB lock errors

## Problem

When using shodh-memory-mcp with clients that manage sessions via stdio (e.g., kiro-cli), ending a session does not reliably clean up the spawned `shodh-memory-server` child process. After multiple sessions over ~24h, ~25 orphaned processes accumulate, causing:

```
Failed to initialize memory system for user 'karl' (500 INTERNAL_ERROR)
```

This is RocksDB LOCK file contention — only one process can hold the lock on a given storage directory.

## Root Cause

Three compounding issues

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/216) · 2026-04-09 · closed · 2 comments

### docs: Installation guides, multi-instance setup, and service configuration

## Context

From [discussion #103](https://github.com/varun29ankuS/shodh-memory/discussions/103) — users are asking for clear installation and operational documentation. Currently this information is scattered or missing entirely.

## What needs documenting

### Installation Guide
- **Docker** — single command with volume mounts, environment variables, port mapping
- **Pre-built binaries** — download links per platform (Linux x64, macOS ARM64/x64, Windows x64), extraction, PATH setup
- **Cargo i

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/104) · 2026-03-11 · open · 2 comments

### Improve MCP client setup documentation

## Summary

The README doesn't clearly explain that a standalone server must be running before the MCP client will work, or that API keys are locally generated.

## Environment

- Any platform
- @shodh/memory-mcp (npm package)
- Claude Code CLI

## Current Behavior

Running `claude mcp add @shodh/memory-mcp` installs the client, but users get "connection refused" errors with no guidance.

## Expected Behavior

Documentation clearly explains the server requirement, API key generation, and provide

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/9) · 2026-01-18 · closed · external user · 2 comments

### Windows: spawn EINVAL + truncated UUIDs break forget/read_memory

## Bug 1: `spawn EINVAL` on Windows — server fails to auto-start

### Problem
On Windows, `ensureServerRunning()` calls `spawn(binaryPath, [], { detached: true, ... })`. The `getBinaryPath()` function prefers `shodh-memory.bat` over `shodh-memory-server.exe`. Node.js `spawn()` with `detached: true` **cannot spawn `.bat` files on Windows** — it throws `EINVAL`.

```
Error: spawn EINVAL
    at ChildProcess.spawn (node:internal/child_process:421:11)
    at ensureServerRunning (dist/index.js:7969:19

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/98) · 2026-03-09 · closed · external user · 1 comment

## Most recent

### Roadmap: Rust-native MCP endpoint (Streamable-HTTP/SSE) — collapse the stdio shim into the backend

## Idea
Expose an MCP-compatible Streamable-HTTP/SSE endpoint directly from the Rust backend (e.g. `http://127.0.0.1:3030/mcp`), so hosts (Claude Desktop, etc.) connect over HTTP instead of spawning the Node stdio shim. Eliminates the entire class of stdio-lifecycle bugs (thread-switch stdin EOF kills, in-flight abandonment — see #405, #218) rather than patching each one, and reduces the Node dependency toward a single sovereign Rust process.

Proposed by @devklepacki in #405.

## Direction / co

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/406) · 2026-07-15 · open · 0 comments

### IPC v2: SHODH_IPC_REQUIRED default for sovereign profile + cross-impl auth test

Follow-up from #399. (1) Server bind-failure default is log-and-continue-HTTP-only; a squatter can force HTTP. Make SHODH_IPC_REQUIRED=true the documented requirement/default for the sovereign profile. (2) Rust-server<->TS-client parity is inspection-only; add a real cross-impl auth test (tamper/replay/stale-nonce).

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/403) · 2026-07-15 · open · 0 comments

### IPC v2: HKDF-derive an IPC-only subkey (probe MAC is a chosen-challenge oracle over the raw API key)

Follow-up from #399 re-review. The v2 probe/request MACs use the raw SHODH_API_KEY directly as the HMAC key, so a same-user (even low-integrity) peer that passes the pipe peer-check can treat the probe as a chosen-challenge MAC oracle and offline-brute-force a weak key (and we ship local-dev-key). Fix: HKDF-derive an IPC-only subkey; enforce a key-entropy floor; stop documenting trivially-guessable dev keys. Same-user-only, hardening for the sovereign/defence profile.

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/401) · 2026-07-15 · open · 0 comments

### Server version seems to be hardcoded to version "0.1.90"

Hello, basically issue is as written in the title. I didn't dig much into this, but:

```
curl -X GET http://localhost:3030/health
{ "status":"healthy","version":"0.2.0", ... }
```

while at the exact same time logs shows:

```
[Stream] WebSocket connected to ws://127.0.0.1:3030/api/stream
...
[shodh-memory] Backend server started successfully
Shodh-Memory MCP server v0.1.90 running
Connecting to: http://127.0.0.1:3030
```

and `grep`ping for string "0.1.90" returns 2 matches:

```
 ~ % grep -c 

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/360) · 2026-07-02 · closed · external user · 0 comments

### Cannot use remote (production) server

Steps to repro:

1. Initialize named volume shodh-data on remote server
2. Initialize shodh-memory on remote server
3. Intitialize reverse proxy pointing to port 5910 
4. Use curl to retrieve health endpoint to verify connectivity
5. Update mcp settings for Claude Code
6. Launch Claude code with debug flag
7. check /mcp to verify Claude thinks it is connected
8. test the shodh-memory MCP server with: shodh-memory - memory_stats() (MCP)

----------

> ● I'll test the shodh-memory MCP server by c

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/193) · 2026-03-31 · closed · external user · 0 comments

### FIX-05/FIX-07: auto-ingest quality gap — context: None, credibility dead for majority of memories

## Summary

Auto-ingested memories (from `proactive_context` and hooks) lack `RichContext`, making credibility, emotional, and episode scoring paths dead for the majority of stored memories.

## FIX-05: Auto-Ingest Missing Context
- `recall.rs:1608,1668`: both auto-ingest paths use `..Default::default()` → `context: None`
- Path A (assistant response): no episode grouping, no source type differentiation
- Path B (user context): same problem
- Should set: `source_type: AiGenerated` (assistant) / 

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/151) · 2026-03-29 · closed · 0 comments

### Feedback loop: disconnected weight learning, off-by-one user_followup, noisy previous_response

## Summary

The implicit feedback circuit has multiple wiring gaps. Adaptive weight learning never updates, user_followup semantics are wrong, and previous_response carries formatting noise.

## Bugs

### LearnedWeights Never Updated
- `RelevanceEngine::apply_feedback` (relevance.rs:663) exists and connects to `LearnedWeights::apply_feedback` (relevance.rs:427)
- Uses `WEIGHT_LEARNING_RATE = 0.05` gradient descent on 7-dimensional weight vector
- **Never called** from the `proactive_context` fee

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/146) · 2026-03-29 · closed · 0 comments

### Hook enrichment: emotional, episodic, credibility, and structured capture signals never sent

## Summary

`hooks/memory-hook.ts` is the primary auto-ingestion path for Claude Code but sends bare-minimum payloads. The entire enrichment infrastructure in the Rust backend is numerically inert for hook-originated memories.

## Missing Signals

### Emotional Dimension
- No `classifyEmotion()` function exists — hook never sends `emotional_valence`, `emotional_arousal`, or `emotion`
- All hook-stored memories have `{valence: 0.0, arousal: 0.0, emotion: None}`
- This makes arousal boosts (Layer 

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/143) · 2026-03-29 · closed · 0 comments

### Importance field missing from RememberRequest — all automated writes have zero importance

## Problem

Neither `RememberRequest` nor `UpsertRequest` expose an optional `importance` field. The Rust binary auto-calculates importance server-side, but hooks never provide an override. This means 100% of automated (hook-written) memories get generic importance scores, neutralizing importance-weighted eviction and salience ranking.

## Impact

- **MEDIUM** — importance affects cache eviction priority and display salience
- All hook memories have identical eviction priority (no differentiatio

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/131) · 2026-03-25 · closed · 0 comments

### SHODH_API_KEY in mcp client and SHODH_API_KEYS in server/TUI mismatch

The server is accepting the dev API key fine. So the issue is between the MCP npm
  package (@shodh/memory-mcp) and the shodh server. Let me check how the MCP package is
  configured and what key it's actually sending.

  Searched for 1 pattern, read 3 files (ctrl+o to expand)

⏺ There it is. The MCP package reads SHODH_API_KEY (singular), but your env has
  SHODH_API_KEYS (plural) and SHODH_DEV_API_KEY. Since SHODH_API_KEY isn't set, it
  auto-generates a random key which doesn't match the serv

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/115) · 2026-03-19 · closed · external user · 0 comments

### test: Set up Vitest for MCP server and add comprehensive tests

## Context

The MCP server (`mcp-server/index.ts`) is a 3867+ line monolithic file with 45 tools and zero tests. As we continue to add features and fix bugs, we need a testing framework in place.

## Setup

- **Framework:** Vitest (fast, native TypeScript, zero-config)
- **Location:** `mcp-server/__tests__/` or `mcp-server/tests/`

## Test coverage needed

### Unit tests
- Tool input validation and parameter parsing
- `stripSystemNoise()` and other utility functions
- `ensureServerRunning()` ser

[Read the thread](https://github.com/varun29ankuS/shodh-memory/issues/105) · 2026-03-11 · open · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/varun29ankuS/shodh-memory/issues).
