Skip to content

Memory Vault

MCP Developer Tools
Python Latest v1.0.8 · 3d ago Security brief →

Features

  • Hybrid semantic + keyword search for persistent AI memories
  • MCP integration with recall, remember, forget, and status tools
  • Local LLM chat that shows sources for each answer
  • Automatic knowledge graph of entities and relationships

Recent releases

View all 9 releases →
No immediate action
v1.0.7 New feature

CLI pip‑installable

No immediate action
v1.0.6 Bug fix

OCI annotation casing fix

No immediate action
v1.0.4 New feature

MCP-only Docker image

No immediate action
v1.0.3 Maintenance

Routine maintenance and dependency updates.

v1.0.2 Security relevant
⚠ Upgrade required
  • Upgrade instructions: run `docker compose pull && docker compose up -d` or explicitly pull the image with `docker pull ghcr.io/mihaibuilds/memory-vault:1.0.2`.
  • All existing functionality remains unchanged; drop‑in replacement for v1.0.1.
Security fixes
  • High severity path traversal in unauthenticated SPA fallback route fixed via `_safe_static_path` validation using `os.path.commonpath` and `os.path.realpath`.
  • Medium severity information exposure in `/api/chat/stream` SSE error handler fixed by logging exceptions server‑side and sending a generic client message.
Full changelog

Security release — fixes from the M8 CodeQL pass. No API or behavioral changes; drop-in replacement for v1.0.1.

What's fixed

| CodeQL alert | Severity | File | Fix |
|---|---|---|---|
| alert 2 + 3 py/path-injection | High | src/api/app.py | New _safe_static_path helper |
| alert 1 py/stack-trace-exposure | Medium | src/api/routers/chat.py | Generic error message |

Path traversal in SPA fallback (High). The unauthenticated SPA fallback route accepted user-controlled paths and composed them with the static directory, allowing requests like GET /../../etc/passwd to escape. Fixed via _safe_static_path using os.path.commonpath + os.path.realpath plus pre-composition rejection of empty / null-byte / leading-slash / explicit-traversal inputs. Three independent layers of defense.

Information exposure in chat stream (Medium). The inner SSE error handler in /api/chat/stream interpolated raw exception text into the response. Fixed: server-side logger.exception(...), generic client message.

Out of scope

CodeQL flagged 3 partial-SSRF findings on the llm_url field in ChatRequest. These were dismissed as architectural — Memory Vault is single-tenant self-hosted with bearer-token auth; the llm_url field is intentional operator configuration. Hardening guidance for non-default deployments (publicly exposed cloud VMs, multi-user environments) is tracked in #18 for v1.1.

Full PR with test plan: #19.

Upgrade

docker compose pull
docker compose up -d

Or pin explicitly:

docker pull ghcr.io/mihaibuilds/memory-vault:1.0.2

170 tests passing in CI.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

About

Stars
57
Forks
9
Languages
Python TypeScript Shell

Install & Platforms

Install via
docker pip
Platforms
linux macos windows arm64

Beta — feedback welcome: [email protected]