GYSTC gives Claude shared local memory via one daemon, not one process per client
u/PlayfulCalendar4676 built GYSTC, an open-source local MCP memory server for Claude that runs a single shared daemon so all clients share one ~400 MB embedding model instead of each loading their own.
Score breakdown
The shared-daemon architecture eliminates the per-client ~400 MB embedding model load, meaning multiple Claude windows share a single in-memory model instance rather than each paying the full RAM cost independently.
- 01GYSTC provides Claude with persistent long-term memory over a folder of markdown files (e.g., an Obsidian vault).
- 02Exposes 8 MCP tools including hybrid retrieval using FAISS + SQLite FTS5 fused with Reciprocal Rank Fusion.
- 03Previous architecture loaded a separate ~400 MB embedding model per client; the new design shares one daemon across all clients.
GYSTC, shared by u/PlayfulCalendar4676 on r/mcp, is a free, open-source local MCP memory server designed to give Claude persistent long-term memory backed by a folder of markdown files — an Obsidian vault in the author's own setup. It exposes 8 MCP tools: hybrid retrieval combining FAISS and SQLite FTS5 fused via Reciprocal Rank Fusion, store with auto-classification and versioning, backlink graph traversal, and instant status/recent tools that function even while the model is still loading.
The central architectural contribution is the shift from a one-process-per-client model — where every Claude window loaded its own ~400 MB embedding model — to a shared daemon architecture.
The central architectural contribution is the shift from a one-process-per-client model — where every Claude window loaded its own ~400 MB embedding model — to a shared daemon architecture. A thin stdio-to-HTTP proxy (`serve`) connects all MCP clients to a single daemon running streamable-HTTP on 127.0.0.1. The proxy auto-spawns the daemon on first connection and respawns it if it dies mid-session, preventing client hangs. Security is handled via a per-run bearer token and an Origin allow-list to guard against DNS rebinding. Concurrency is managed with a single-writer file lock on the FAISS index, with automatic reader-to-writer promotion when the writer exits. An idle-shutdown mechanism frees the model from RAM after 30 minutes of inactivity.
The author notes the proxy/daemon lifecycle required three adversarial audit rounds to get right, and the test suite now stands at 408 tests. The project is fully local with no cloud dependency and no telemetry, and the full source is available at gystc.dev.
Key facts
- 01GYSTC provides Claude with persistent long-term memory over a folder of markdown files (e.g., an Obsidian vault).
- 02Exposes 8 MCP tools including hybrid retrieval using FAISS + SQLite FTS5 fused with Reciprocal Rank Fusion.
- 03Previous architecture loaded a separate ~400 MB embedding model per client; the new design shares one daemon across all clients.
- 04A thin stdio-to-HTTP proxy (`serve`) auto-spawns the daemon and respawns it if it crashes mid-session.
- 05Security includes a per-run bearer token and an Origin allow-list against DNS rebinding; daemon runs on 127.0.0.1.
- 06A single-writer file lock keeps the FAISS index consistent across concurrent clients, with automatic reader-to-writer promotion.
- 07Idle-shutdown frees the model from RAM after 30 minutes; the test suite has 408 tests; fully local, no cloud, no telemetry.
Topics
Summary and scoring are generated automatically from the original article. We always link back to the publisher and never republish images or paywalled content. Last processed Jun 11, 2026 · 08:34 UTC. How this works →