GYSTC v1.2.0 β€” stable / MCP server / persistent memory
FILE: index.html BUILD: 1.2.0 / 2026-05 TARGET: claude desktop / cli LICENSE: EXE/DMG FREE Β· SRC PATREON
+----------------------------+
|  MEM[Claude] = βˆ…           |
|  > start session #47       |
|  > "explain project again" |
|  > ...                     |
|  GYSTC.attach()            |
|  MEM[Claude] := vault/     |
|  > "based on march decs..."|
+----------------------------+

Get your shit together, Claude.

Your AI forgets everything. Every. Single. Session. This fixes that β€” a local MCP server that gives Claude a persistent long-term memory across sessions, projects, and months.

scroll ↓ local-first Β· no cloud Β· no telemetry 011 sections
// organized like a brain // works like a search engine // performs like neither existed before
[ 02 ] / THE PROBLEM

Every session is groundhog day.

>>>

You've explained your project structure to Claude 50 times. It forgets your architecture decisions. It doesn't know your conventions. Every session β€” finally productive β€” starts at zero.

// recurring symptoms β€” "remind me what stack you use"
β€” "what was that file called again?"
β€” "should I use tabs or spaces here?"
β€” "wait, who decided this?"
β€” repeats every ~1h.
[ 03 ] / HOW IT WORKS

Three steps. No accounts, no cloud.

STEP_010:00 β†’ 0:30
Install
Run the EXE (Windows) or open the DMG (macOS). The setup wizard registers the MCP server with Claude. No package manager, no PATH dance.
$ ./gystc-setup.exe
β†’
STEP_020:30 β†’ 0:45
Point at vault
One config field: the folder Claude should remember. Markdown, code, notes β€” anything textual.
vault_path = "D:/notes/work"
β†’
STEP_030:45 β†’ ∞
Forget about it
Every new session, Claude pulls relevant context automatically. You stop re-explaining.
claude > auto_context: ok
[ 04 ] / BEFORE Β· AFTER

Same prompt. Different memory.

before β€” vanilla claude Session #47
[ 14:02 ] you > let's keep working on the auth refactor.

[ 14:02 ] claude > Sure! Quick question β€” can you
explain your project structure again?
What auth library are you using? Where
do tokens live? Any conventions I
should follow?

[ 14:03 ] you > ......
after β€” with gystc Session #47
[ 14:02 ] you > let's keep working on the auth refactor.

[ 14:02 ] claude > Based on your architecture decisions
from March, you're using session
cookies (not JWT) and the helper lives
in lib/auth/session.ts. Want me to
extend the rotation logic we sketched
last Tuesday?
[ 05 ] / FEATURES

Eleven things it does right.

  1. 01Persistent memory across sessions and projects.CORE
  2. 02Semantic search β€” FAISS vector similarity.SEARCH
  3. 03Full-text search β€” SQLite FTS5.SEARCH
  4. 04Hybrid search with Reciprocal Rank Fusion.SEARCH
  5. 05Cross-encoder re-ranking β€” optional, off by default.PRECISION
  6. 0612 knowledge regions for structured organization.STRUCTURE
  7. 07Segmental search β€” queries target relevant regions, not the whole vault.PRECISION
  8. 08Smart chunking for long documents.INDEXER
  9. 09Content versioning with rollback.STORAGE
  10. 10Auto-context on session start.RUNTIME
  11. 11Background model loading β€” 6s cold start, zero event-loop blocking.RUNTIME
[ 06 ] / MCP TOOLS

8 tools. Zero bloat.

Every tool is exposed via Model Context Protocol. Claude calls them autonomously β€” no slash commands, no manual triggers. Consolidated from 16 to 8 in v1.1.0 for faster, more reliable responses.

brain_retrieve SEARCH

Unified search: semantic (FAISS), keyword (FTS5), and graph traversal in one call. Pass a query, file paths, or both. Falls back to keyword-only if the model is still loading.

When Claude needs knowledge about any topic, project, or prior decision.

brain_store WRITE

Save a new note to the vault. Automatically embeds it, classifies it into a brain region, versions old content, and indexes it for future retrieval.

When Claude discovers something worth remembering across sessions.

brain_related GRAPH

Explore connections from a specific note. Follows backlinks and embedding similarity to surface related knowledge you didn't explicitly search for.

When exploring how concepts connect or finding adjacent knowledge.

brain_recent SEARCH

List recently changed notes, ordered by modification time. Instant β€” no model needed. The go-to tool while the embedding model is still loading.

When Claude needs to understand recent vault activity or changes.

brain_status META

Fast health check β€” note count, vector count, model status, region distribution. Always instant, responds in under 10ms.

Quick sanity check that the MCP server and vault are operational.

brain_regions META

List all 12 brain regions with note counts, descriptions, and customization options. Shows how the vault is organized.

When Claude needs to understand the vault's structure or pick a region.

brain_classify ORGANIZE

Classify notes into brain regions using keyword rules (no API key needed). Supports single-note, batch reclassify, and feedback corrections β€” all via the action parameter.

When notes need to be assigned to or moved between brain regions.

brain_versions VERSION

View history, diff against previous versions, or rollback a note. All versioning in one tool via the action parameter.

When investigating changes or restoring a previous version.

[ 07 ] / REGIONS

Organized like a brain. Searched like an index.

The vault is partitioned into 12 named regions. Segmental search routes queries to the relevant ones β€” not a flat sweep over everything you've ever written. The metaphor is anatomical; the goal is structure and performance, not simulating a brain.

// 12 regions Β· 77 communities Β· ranked by recall on internal benchmark bar = relative segmental hit rate
[ 08 ] / README

README.md

What is GYSTC?

GYSTC is a local MCP server that gives Claude persistent long-term memory. It indexes your Obsidian vault (or any folder of markdown files), builds a semantic search index, and exposes tools that let Claude retrieve, store, and connect knowledge across sessions.

No cloud. No accounts. Everything runs on your machine, talks over stdio, and never phones home.

Requirements

  • Windows 10+ or macOS 12+
  • Claude Desktop or Claude Code (CLI)
  • An Obsidian vault (or any folder with .md files)

Installation

Download the EXE (Windows) or .app (macOS) from the release page. Run it. The setup wizard walks you through pointing at your vault and registering the MCP server with Claude.

That's it. Next time you open Claude, it has memory.

What Claude gets

  • brain_retrieve β€” hybrid search + file context + graph traversal (absorbed brain_context)
  • brain_store β€” save new knowledge as a note
  • brain_recent β€” see recently modified notes
  • brain_related β€” find connected topics via backlinks + embeddings
  • brain_classify β€” classify, reclassify, or teach the classifier (merged 3 tools)
  • brain_versions β€” history, diff, and rollback in one tool (merged 3 tools)
  • brain_regions β€” list all 12 regions with stats
  • brain_status β€” vault health check

How it organizes knowledge

Notes are classified into 12 brain regions by function, not topic. Architecture decisions go to the Prefrontal Cortex. API endpoints go to Motor Cortex. Config files go to Brainstem. When Claude searches, it targets the relevant regions first β€” not a flat sweep of everything.

Session auto-context

A SessionStart hook fires every time you open Claude. It reads your current git context and pulls relevant vault notes automatically. Claude starts every session already knowing what you're working on.

Dashboard

The EXE includes a 3D brain visualization built with Three.js. Your vault rendered as a force-directed graph β€” nodes are notes, edges are backlinks, colors are regions. Click any node to open the note in Obsidian.

Source code

The EXE is free. Source code access is available through Patreon β€” that's how this project gets funded. If you want to read the code, contribute, or self-host from source: that's the path.

[ 09 ] / CHANGELOG

CHANGELOG

v1.2.0 2026-05-12 latest
    // critical fix β€” mcp hang eliminated
  • wait_ready() moved from async event-loop to executor thread β€” this was the root cause of all MCP hangs
  • Model loading no longer blocks the event loop β€” server stays responsive during the full 6s startup
  • WAIT_READY_TIMEOUT increased 10s β†’ 20s (model load takes ~11s, timeout was too short)
  • Reranker _ready.set() moved to finally block β€” no more permanent hang on abnormal exit
  • // performance
  • HF_HUB_OFFLINE=1 β€” skips ~20 HTTP cache-validation requests on every startup
  • Model load time reduced from ~11s to ~6.4s (44% faster)
  • Library logging suppressed β€” clean stderr output in MCP mode
  • // safety
  • _handle_file_change now checks is_ready before embedding β€” prevents blocking on model lock
  • brain_store skips embedding cleanly when model not loaded (was silently broken)
v1.1.0 2026-05-10 consolidation
    // consolidation
  • 16 β†’ 8 MCP tools β€” merged context into retrieve, history/diff/rollback into versions, classify/reclassify/feedback into classify
  • Removed brain_reindex, brain_enrich, brain_autolink from MCP (CLI only now)
  • Cross-encoder re-ranker now off by default β€” enable via reranker: "cross-encoder" in config
  • // stability
  • FTS-only fallback when embedding model not ready β€” search always works
  • Reduced timeouts: 10s model wait, 30s tool timeout (was 60s/90s)
  • Empty query no longer triggers unnecessary model wait
  • is_ready check now detects failed model loads correctly
  • // instructions
  • Rewritten BRAIN_INSTRUCTIONS β€” explicit "when NOT to search" guidance to prevent Claude search loops
v1.0.2 2026-05-09 patch
    // stability
  • Event-loop hang fix β€” wait_ready() moved from async event-loop to executor thread
  • Embedder _load() now always signals readiness (via finally), even on crash
  • All async MCP tools wrapped in asyncio.wait_for(timeout=60) β€” returns error instead of hanging forever
  • Explicit is_ready check after wait_ready to detect failed model loading
v1.0.1 2026-05-09 patch
    // async
  • All embedding-heavy MCP tools moved to async + run_in_executor
  • brain_store skips embedding when model not loaded yet (graceful fallback)
v1.0.0 2026-05-08 initial release
    // release
  • First public release β€” EXE build for Windows, .app for macOS
  • Setup wizard with vault picker, API key config, one-click MCP + hooks install
  • GitHub Actions CI pipeline β€” automatic builds for Windows + macOS on every tag
  • // search
  • Cross-encoder re-ranker (ms-marco-MiniLM) β€” enabled by default for precision
  • Hybrid search with Reciprocal Rank Fusion (FAISS + FTS5)
  • Smart chunking β€” long notes split at headings, each chunk gets its own vector
  • SessionStart auto-context hook β€” Claude loads relevant vault notes on every session
  • // storage
  • Content-addressable versioning β€” brain_versions (history, diff, rollback)
  • Max 50 versions per note, deduplicated by content hash
  • // security
  • XSS fix in dashboard (innerHTML to textContent for untrusted content)
  • HTML sanitizer bypass fix β€” inner content of highlight spans now escaped
  • Path traversal guards on all file operations
  • Hook command path quoting for Windows paths with spaces
  • // dashboard
  • Flicker fix β€” --in-process-gpu Chromium flag (60fps preserved)
  • Obsidian toolbar button via QWebChannel bridge (replaces alert())
  • Full rebrand from Neural Brain to GYSTC
v0.4.0 2026-05-06 pre-release
    // features
  • Auto-classifier with weighted tiers for brain region assignment
  • brain_reclassify tool for manual region overrides
  • Local search with visual filter in dashboard
  • Settings UI panel with config API
  • // fixes
  • MCP cold-start hang β€” background startup with lifespan fix
  • Edge visibility overhaul β€” direct alpha-buffer replaces DataTexture
  • Region gravity with non-linear distance scaling
v0.3.0 2026-05-03 pre-release
    // features
  • Full MCP server with 16 tools (retrieve, store, context, recent, related, etc.)
  • FAISS vector index with L2-normalized cosine similarity
  • SQLite FTS5 full-text search with BM25 scoring
  • File watcher with self-write detection
  • Vault tagging script β€” assign brain regions to all notes
  • // security
  • Thread safety hardening, FAISS cleanup, FTS5 sanitization
  • Silent failure hardening β€” narrow exception types, add logging
v0.2.0 2026-04-28 pre-release
    // features
  • Three.js 3D brain visualization via QWebEngineView
  • Bloom, Fresnel-Rim, starfield, dormant synapse animation
  • Obsidian REST API integration β€” click nodes to open notes
  • // fixes
  • Serve web files via local HTTP server instead of file://
v0.1.0 2026-04-17 initial
    // foundation
  • Project scaffold with 12 brain region definitions
  • Force-directed physics engine with region gravity
  • Orbit camera with perspective projection
  • Ray-casting picker for 3D node selection
  • OpenGL widget with render loop
[ 10 ] / INSIDE

What it looks like when it's running.

./gystc β€” running FAISS Β· FTS5 Β· CrossEncoder ● indexing Β· 0 errors
GYSTC Dashboard β€” 3D brain visualization with 1853 nodes, 12 regions, live Claude Code terminal
// GYSTC Dashboard β€” 1853 nodes Β· 6379 edges Β· 12 brain regions Β· live Claude Code terminal Β· tweaks panel Β· minimap
[ 11 ] / TECH

For the devs who want to know.

// runtime
Python 3.11+
CPython, packaged as a single signed EXE.
// vector index
FAISS
L2-normalized cosine, IVF flat for vaults < 1M chunks.
// fts
SQLite FTS5
BM25 with custom tokenizer. WAL mode, embeddable.
// embeddings
SentenceTransformers
Lazy-loaded in background thread. Offline cache, ~6s cold start.
// transport
FastMCP
Speaks Model Context Protocol over stdio.
stack ::= Python Β· FAISS Β· SQLite FTS5 Β· SentenceTransformers Β· FastMCP Β· content-addressable storage with versioning.
[ 12 ] / GET IT

.

Stop re-explaining. Start where you left off.

Windows β€” gystc-windows.zip

Extract the ZIP, open the GYSTC Dashboard folder, run GYSTC Dashboard.exe. The setup wizard walks you through vault selection, MCP install, and hook registration. Requires Python 3.11+ for the MCP server.

macOS β€” gystc-macos.dmg

Open the DMG, drag GYSTC Dashboard.app to Applications. On first launch, the setup wizard configures your vault and installs the MCP server via pip. Requires Python 3.11+.

The app is and always will be free. No account, no telemetry, no upsell. Source code access lives behind Patreon β€” that's how this and the next projects get funded. If you can spare it: thanks. If not: the binary still works.