github Rust re-analysis due

varun29ankuS/shodh-memory

github

Local, LLM-free memory for AI agents. A single offline Rust binary — deterministic and auditable — that learns from use, forgets the irrelevant, and strengthens what matters. No cloud, no API keys.

maintainer
varun29ankuS
license
Apache-2.0
first seen
2026-06-01
last seen
2026-08-14
releases · 30d
0
short id

Drift inferred · capture-to-capture

No drift recorded — single capability capture; advisories appear once its surface changes.

capabilities 0 tools
transport stdio · http verified reported listed in the official MCP registry counts 0 tools · 0 res · 0 prompts permission surface via code analysis

No tools enumerated yet for this server.

skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 5a8ea85 · analyzer v30 · 3d ago

skills & prompt files 3

danger signals1

code evidence vgliner-bi-edge-onnx-v1 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 400

filesystem 17

  • fs varun29ankuS-shodh-memory-5a8ea85/hooks/memory-hook.ts :43 const fs = require("fs");
  • fs varun29ankuS-shodh-memory-5a8ea85/mcp-server/api-key-store.ts :24 import * as fs from "fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/mcp-server/backend-lifecycle.ts :22 import * as fs from "fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/mcp-server/index.ts :29 import * as fs from "fs";
  • fs (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/scripts/postinstall.cjs :9 const fs = require('fs');
  • fs (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/scripts/setup-hooks.cjs :14 const fs = require('fs');
  • fs (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/tests/api-key-store.test.ts :2 import * as fs from "fs";
  • fs (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/tests/backend-lifecycle.test.ts :2 import * as fs from "fs";
  • fs (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/tests/ipc-client.test.ts :2 import { existsSync, rmSync } from "node:fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/mcp-server/version.ts :1 import fs from "fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/eval/lessons-ab.mjs :38 import { copyFileSync, existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/eval/memory-guidance-ab.mjs :86 import { copyFileSync, existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/eval/run-e2e.mjs :17 import { mkdtempSync, rmSync } from "node:fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/src/credentials.ts :22 import * as fs from "node:fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/src/index.ts :5 import * as fsp from "node:fs/promises";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/src/ledger.ts :21 import * as fs from "node:fs";
  • fs varun29ankuS-shodh-memory-5a8ea85/seat/src/store.ts :29 import * as fs from "node:fs";

shell / exec 8

  • shell varun29ankuS-shodh-memory-5a8ea85/mcp-server/index.ts :27 import { spawn, ChildProcess } from "child_process";
  • shell varun29ankuS-shodh-memory-5a8ea85/mcp-server/ipc-client.ts :2 import { spawn, type ChildProcessWithoutNullStreams } from "node:child_process";
  • shell (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/scripts/postinstall.cjs :12 const { execFileSync } = require('child_process');
  • shell (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/scripts/setup-hooks.cjs :17 const { execSync } = require('child_process');
  • shell (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/tests/backend-lifecycle.test.ts :5 import { spawnSync } from "child_process";
  • shell varun29ankuS-shodh-memory-5a8ea85/seat/eval/lessons-ab.mjs :37 import { spawn } from "node:child_process";
  • shell varun29ankuS-shodh-memory-5a8ea85/seat/eval/memory-guidance-ab.mjs :85 import { spawn } from "node:child_process";
  • shell varun29ankuS-shodh-memory-5a8ea85/seat/eval/run-e2e.mjs :16 import { spawn } from "node:child_process";

network 17

  • net varun29ankuS-shodh-memory-5a8ea85/demo/spatial-map/seed.js :5 const http = require('http');
  • net varun29ankuS-shodh-memory-5a8ea85/front/ui/src/lib/api/client.ts :51 res = await fetch(path, {
  • net varun29ankuS-shodh-memory-5a8ea85/front/ui/src/lib/seat/client.ts :66 const res = await fetch(`/seat/v1/providers/${encodeURIComponent(providerId)}/key`, {
  • net varun29ankuS-shodh-memory-5a8ea85/hooks/memory-hook.ts :263 const response = await fetch(`${SHODH_API_URL}${endpoint}`, {
  • net varun29ankuS-shodh-memory-5a8ea85/mcp-server/index.ts :680 const response = await fetch(`${API_URL}${endpoint}`, {
  • net varun29ankuS-shodh-memory-5a8ea85/mcp-server/ipc-client.ts :3 import { createConnection, type Socket } from "node:net";
  • net (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/scripts/postinstall.cjs :11 const https = require('https');
  • net (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/scripts/setup-hooks.cjs :116 const https = require('https');
  • net (weak) varun29ankuS-shodh-memory-5a8ea85/mcp-server/tests/ipc-client.test.ts :3 import { createServer, type Server, type Socket } from "node:net";
  • net varun29ankuS-shodh-memory-5a8ea85/seat/eval/fixture-model.mjs :24 import { createServer } from "node:http";
  • net varun29ankuS-shodh-memory-5a8ea85/seat/eval/lessons-ab.mjs :119 const res = await fetch(url, { signal: AbortSignal.timeout(2000) });
  • net varun29ankuS-shodh-memory-5a8ea85/seat/eval/memory-guidance-ab.mjs :436 const res = await fetch(url, { signal: AbortSignal.timeout(2000) });
  • net varun29ankuS-shodh-memory-5a8ea85/seat/eval/run-e2e.mjs :84 const res = await fetch(url, { headers, signal: AbortSignal.timeout(2000) });
  • net varun29ankuS-shodh-memory-5a8ea85/seat/eval/seed-demo-corpus.mjs :148 const res = await fetch(`${BASE}${path}`, { method: "POST", headers: H, body: JSON.stringify(body) });
  • net varun29ankuS-shodh-memory-5a8ea85/seat/src/backend.ts :253 response = await fetch(url, {
  • net varun29ankuS-shodh-memory-5a8ea85/seat/src/models-registry.ts :120 const response = await fetch(`${options.baseUrl}/models`, {
  • net varun29ankuS-shodh-memory-5a8ea85/seat/src/server.ts :32 import * as http from "node:http";

secrets 4

  • secrets (weak) varun29ankuS-shodh-memory-5a8ea85/front/ui/vite.config.ts :17 const API_KEY = process.env.SHODH_API_KEY ?? "";
  • secrets varun29ankuS-shodh-memory-5a8ea85/hooks/memory-hook.ts :40 if (process.env.SHODH_API_KEY) {
  • secrets varun29ankuS-shodh-memory-5a8ea85/mcp-server/index.ts :120 if (process.env.SHODH_API_KEY) {
  • secrets varun29ankuS-shodh-memory-5a8ea85/seat/eval/seed-demo-corpus.mjs :142 const KEY = process.env.SHODH_API_KEY ?? process.env.SHODH_API_KEYS?.split(",")[0]?.trim();

install hooks 2

  • postinstall varun29ankuS-shodh-memory-5a8ea85/mcp-server/package.json :18 node scripts/postinstall.cjs
  • prepublishOnly (suspicious) varun29ankuS-shodh-memory-5a8ea85/mcp-server/package.json :19 npm run build && node -e "require('fs').mkdirSync('hooks',{recursive:true});require('fs').copyFileSync('../hooks/memory-hook.ts','hooks/memory-hook.ts')"

declared dependencies 71

  • @modelcontextprotocol/sdk@^1.24.0
  • rmcp@1.4
  • @vitest/coverage-v8@^2.1.9
  • vitest@^2.1.8
  • spacy-rusty@*
  • clap@4.5
  • mimalloc@0.1
  • anyhow@1.0
  • thiserror@2.0
  • dotenvy@0.15
  • tokio@1.48
  • tokio-stream@0.1
  • tokio-util@0.7
  • futures@0.3
  • axum@0.8
  • tower@0.5
  • tower-http@0.6
  • tower_governor@0.8
  • serde@1.0
  • serde_json@1.0
  • form_urlencoded@1
  • postcard@1
  • bincode@2
  • bincode1@1.3
  • rmp-serde@1.3
  • lz4@1.28
  • parking_lot@0.12
  • dashmap@6.1
  • moka@0.12
  • uuid@1.19
  • chrono@0.4
  • lru@0.16.3
  • regex@1.12
  • rust-stemmers@1.2
  • dirs@6.0
  • dateparser@0.2
  • glob@0.3
  • yake-rust@1.0
  • tracing@0.1
  • tracing-subscriber@0.3
  • prometheus@0.14
  • tracing-opentelemetry@0.33
  • opentelemetry@0.32
  • opentelemetry-otlp@0.32
  • opentelemetry_sdk@0.32.1
  • ordered-float@5.0
  • memmap2@0.9
  • rand@0.8
  • ort@2.0.0-rc.11
  • tokenizers@0.21
  • ndarray@0.16
  • petgraph@0.8
  • tantivy@0.26
  • bloomfilter@3.0
  • base64@0.22
  • sha2@0.10
  • hex@0.4
  • aes-gcm@0.10
  • hmac@0.12
  • subtle@2.6
  • reqwest@0.12
  • ureq@3.0
  • zip@7.0
  • flate2@1.1
  • tar@0.4
  • pyo3@0.29
  • numpy@0.29
  • zenoh@1.1
  • criterion@0.5
  • http-body-util@0.1
  • tempfile@3.24

perm:untrusted 2

  • untrusted varun29ankuS-shodh-memory-5a8ea85/seat/eval/memory-guidance-ab.mjs :730 const health = await (await fetch(`${base}/healthz`)).json();
  • untrusted varun29ankuS-shodh-memory-5a8ea85/seat/eval/run-e2e.mjs :183 const models = await (await fetch(`${seatBase()}/v1/models?refresh=1`)).json();