Skip to content

Release history

Memory Vault releases

All releases

9 shown

No immediate action
v1.0.8 Maintenance

Routine maintenance and dependency updates.

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.5 Maintenance

Routine maintenance and dependency updates.

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.

v1.0.1 Bug fix
⚠ Upgrade required
  • Run `git pull && docker compose pull && docker compose up -d` after updating to v1.0.1.
  • First‑run now pulls the prebuilt image (`ghcr.io/mihaibuilds/memory-vault:1.0.1`) instead of building locally.
Full changelog

Patch release — fixes the bundled docker-compose.yml to use the published multi-arch image instead of building from source.

What changed

  • docker-compose.yml now references ghcr.io/mihaibuilds/memory-vault:1.0.1 instead of build: .
  • First-run on a fresh clone is now ~30 seconds (image pull) instead of ~5 minutes (local build)
  • The README's "one-command Docker" promise is now actually one command

Recommended starting point

Use v1.0.1 — it's the same code as v1.0.0 with a faster install path. If you've already cloned v1.0.0, run:

git pull
docker compose pull && docker compose up -d

Quick start (fresh clone)

git clone https://github.com/MihaiBuilds/memory-vault
cd memory-vault
cp .env.example .env
docker compose up -d

Open http://localhost:8000 and you're running.

v1.0 capabilities

Same as v1.0.0 — no functionality changes.

v1.0.0 New feature
⚠ Upgrade required
  • Docker Compose in v1.0.0 builds the image from source causing slower first run; upgrade to v1.0.1 for published multi‑arch image.
Notable features
  • Hybrid search combining pgvector HNSW and tsvector GIN with Reciprocal Rank Fusion
  • MCP server exposing `recall`, `remember`, `forget`, and `status` endpoints for Claude Desktop/Claude Code integration
  • Knowledge graph built with spaCy NER and co‑occurrence, visualized via Cytoscape
Full changelog

Memory Vault v1.0 — first stable release.

A long-term memory layer for AI assistants and the apps you build on top of them. Postgres + pgvector underneath, hybrid search on top, MCP server so Claude can read and write directly, knowledge graph without an LLM bill, local LLM chat with retrieved-source citations. Self-hosted. MIT-licensed. No API keys, no cloud, no telemetry.

What's in v1.0

  • Hybrid search — pgvector HNSW + tsvector GIN, merged with Reciprocal Rank Fusion
  • MCP serverrecall, remember, forget, status for Claude Desktop / Claude Code
  • Knowledge graph — spaCy NER + co-occurrence, no LLM cost, Cytoscape visualization
  • Local LLM chat — LM Studio with a sources panel showing retrieved chunks per answer
  • REST API — FastAPI, bearer auth, OpenAPI at /docs
  • Memory spaces — namespacing for different contexts (work, personal, projects)
  • One-command Docker — multi-arch image (linux/amd64 + linux/arm64)
  • 163 tests passing in CI against a real Postgres + pgvector service container

Quick start

git clone https://github.com/MihaiBuilds/memory-vault
cd memory-vault
cp .env.example .env
docker compose up -d

Open http://localhost:8000 and you're running.

Docs

  • README — quick start, MCP setup, REST API, dashboard
  • ARCHITECTURE.md — schema, hybrid search internals, design decisions
  • Launch blog post — the full v1.0 writeup with architectural reasoning

Known limitation

The bundled docker-compose.yml in v1.0.0 builds the image from source instead of pulling the published image. First-run is slower than the README implies. Fixed in v1.0.1 — recommended starting point.

Beta — feedback welcome: [email protected]