stellavault 0.8.4 → 0.8.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,372 +1,470 @@
1
- # Stellavault
2
-
3
- [![CI](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml/badge.svg)](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/stellavault)](https://www.npmjs.com/package/stellavault) [![tests](https://img.shields.io/badge/tests-245%20passing-brightgreen)]() [![node](https://img.shields.io/badge/node-%E2%89%A520-339933?logo=node.js&logoColor=white)]() [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
4
-
5
- > **Drop anything. It compiles itself into knowledge.** Claude remembers everything you know.
6
-
7
- Self-compiling knowledge base with a full-featured editor, 3D neural graph, AI-powered search, and spaced repetition — available as a **desktop app**, **CLI**, **Obsidian plugin**, and **MCP server**. Your vault files are never modified.
8
-
9
- <p align="center">
10
- <img src="images/screenshots/graph-main-2.png" alt="3D Knowledge Graph" width="800" />
11
- <br><em>Your vault as a neural network. Local-first, no cloud required.</em>
12
- </p>
13
-
14
- ## Contents
15
-
16
- [Install](#install) · [Editor](#editor) · [Pipeline](#the-pipeline) · [Intelligence](#intelligence-what-makes-stellavault-unique) · [Search & Ranking](#search--ranking) · [MCP Integration](#mcp-integration-21-tools) · [3D Visualization](#3d-visualization) · [Configuration](#configuration) · [Performance](#performance) · [Tech Stack](#tech-stack) · [Security](#security) · [Troubleshooting](#troubleshooting)
17
-
18
- ## Install
19
-
20
- ### Desktop App (Recommended — one click)
21
-
22
- <table>
23
- <tr>
24
- <td align="center"><a href="https://github.com/Evanciel/stellavault/releases/download/desktop-v0.1.0/Stellavault-win32-x64-0.1.0.zip"><br/><b>⬇ Download for Windows</b><br/><sub>x64 · 116 MB · ZIP</sub></a></td>
25
- <td align="center"><a href="https://github.com/Evanciel/stellavault/releases/download/desktop-v0.1.0/Stellavault-linux-x64-0.1.0.zip"><br/><b>⬇ Download for Linux</b><br/><sub>x64 · 107 MB · ZIP</sub></a></td>
26
- <td align="center"><br/><b>macOS</b><br/><sub>Coming soon</sub></td>
27
- </tr>
28
- </table>
29
-
30
- > Download → Unzip → Run `stellavault.exe` (Windows) or `stellavault` (Linux) → Pick your notes folder → Done.
31
-
32
- ### CLI (for developers)
33
-
34
- ```bash
35
- npm install -g stellavault # or: npx stellavault
36
- stellavault init # Interactive setup (3 min): index vault + connect AI clients
37
- stellavault setup # Connect to Claude Code/Desktop, Cursor, Windsurf, VS Code (one command)
38
- stellavault graph # Launch 3D graph in browser
39
- ```
40
-
41
- > Requires Node.js 20+. Run `stellavault doctor` to diagnose issues.
42
-
43
- ### Obsidian Plugin
44
-
45
- 1. Download `main.js` + `manifest.json` + `styles.css` from [stellavault-obsidian releases](https://github.com/Evanciel/stellavault-obsidian/releases/latest)
46
- 2. Place in `.obsidian/plugins/stellavault/`
47
- 3. Enable in Settings → Community plugins
48
- 4. Start API: `npx stellavault graph` in your vault folder
49
-
50
- ---
51
-
52
- ## Editor
53
-
54
- Full-featured markdown editor on par with Obsidian.
55
-
56
- | Feature | Status |
57
- |---------|--------|
58
- | Bold, Italic, Underline, Strikethrough | ✅ |
59
- | Headings 1–6 | ✅ |
60
- | Bullet, Numbered, Task lists (nested checkboxes) | ✅ |
61
- | Tables (create, resize columns, add/remove rows & cols) | ✅ |
62
- | Code blocks with syntax highlighting (40+ languages) | ✅ |
63
- | Images (URL, clipboard paste, drag & drop) | |
64
- | KaTeX math rendering (`$E=mc^2$` inline, `$$...$$` display) | ✅ |
65
- | `/Slash commands` (12 block types, fuzzy search) | ✅ |
66
- | `[[Wikilink]]` autocomplete | ✅ |
67
- | Split view (vertical + horizontal, Ctrl+\\) | ✅ |
68
- | Text alignment (left / center / right) | ✅ |
69
- | Highlight, Superscript, Subscript | ✅ |
70
- | Smart typography (curly quotes, em/en dashes) | ✅ |
71
- | Horizontal rules | |
72
-
73
- ---
74
-
75
- ## The Pipeline
76
-
77
- ```
78
- Capture ──→ Organize ──→ Distill ──→ Express
79
-
80
- Drop anything auto-extract → raw/ → compile → _wiki/ → draft
81
- ```
82
-
83
- Inspired by Karpathy's self-compiling knowledge architecture.
84
-
85
- ### Ingest 14 Formats
86
-
87
- | Input | How |
88
- |-------|-----|
89
- | PDF, DOCX, PPTX, XLSX | `stellavault ingest report.pdf` |
90
- | JSON, CSV, XML, YAML, HTML, RTF | `stellavault ingest data.json` |
91
- | YouTube | `stellavault ingest https://youtu.be/...` — transcript + timestamps |
92
- | URL | `stellavault ingest https://...` — HTML → markdown |
93
- | Text | `stellavault ingest "quick thought"` |
94
- | Folder | `stellavault ingest ./papers/` — batch all files |
95
- | Desktop / Web UI | Drag & drop files directly |
96
-
97
- ### Express: Get Knowledge Out
98
-
99
- ```bash
100
- stellavault draft "AI" --format blog # Blog post from your vault
101
- stellavault draft "AI" --format outline # Structured outline
102
- stellavault draft "AI" --ai # Claude API enhanced ($0.03)
103
- ```
104
-
105
- Or use the **Express tab** in the desktop app enter a topic, pick a format, and generate a draft grounded in your vault. Save to `_drafts/` and edit inline.
106
-
107
- ---
108
-
109
- ## Intelligence (What Makes Stellavault Unique)
110
-
111
- These features do **not exist** in Obsidian — even with plugins.
112
-
113
- | Feature | Command / Desktop | Description |
114
- |---------|-------------------|-------------|
115
- | **Memory Decay** | `stellavault decay` / Memory tab | FSRS-based — shows which real notes you are forgetting |
116
- | **Knowledge Gaps** | `stellavault gaps` | Detects weak connections between topic clusters |
117
- | **Contradictions** | `stellavault contradictions` | Finds conflicting statements across your vault |
118
- | **Duplicates** | `stellavault duplicates` | Near-identical notes with similarity score |
119
- | **Health Check** | `stellavault lint` | Aggregated vault health score (0–100) |
120
- | **Learning Path** | `stellavault learn` | AI-personalized review recommendations |
121
- | **Daily Brief** | Desktop app home screen | Push-type: top decaying notes + stats on app open |
122
- | **Auto-Tagging** | Automatic on ingest | Content-based keyword extraction + category rules |
123
- | **Self-Compiling** | `stellavault compile` | raw/ _wiki/ with extracted concepts + backlinks |
124
-
125
- ---
126
-
127
- ## Search & Ranking
128
-
129
- Hybrid retrieval that fuses multiple signals with **weighted Reciprocal Rank Fusion (RRF)** — tuned for a personal knowledge vault, fully local, zero API keys:
130
-
131
- | Signal | What it captures | Default weight |
132
- |--------|------------------|---------------:|
133
- | **Semantic** (dense) | meaning; multilingual (50+ languages) | `1.0` |
134
- | **BM25** (keyword) | exact terms, code, names | `1.0` |
135
- | **Entity-linking** | your `[[wikilinks]]`, `#tags`, headings, titles the curated graph | `1.5` |
136
- | **FSRS recency** | gently surfaces notes you're actively using / forgetting | `±10%` |
137
-
138
- - **Entity matching** resolves natural-language queries via fuzzy substring + punctuation-normalized matching (Korean / CJK friendly), with a **per-document diversity cap** so one large note can't flood the top results.
139
- - **Recency** reuses the same FSRS memory model as the decay engine (not raw file mtime) — a note you're forgetting resurfaces; a mastered evergreen note isn't buried just for being old.
140
- - **Adaptive rerank** (long-running MCP server) further boosts results by your current session context (recent tags / paths).
141
- - Every weight is **tunable** per vault or via env vars — see [Configuration](#configuration).
142
-
143
- ---
144
-
145
- ## MCP Integration (21 Tools)
146
-
147
- ```bash
148
- stellavault setup # one command Claude Code, Claude Desktop, Cursor, Windsurf, VS Code
149
- # or, for Claude Code only:
150
- claude mcp add stellavault -- stellavault serve
151
- ```
152
-
153
- Claude can search, ask, draft, lint, and analyze your vault directly. Search runs
154
- the full hybrid pipeline — **weighted RRF** over semantic + BM25 + entity-linking,
155
- plus **FSRS recency** and session-adaptive reranking (see [Search & Ranking](#search--ranking)).
156
-
157
- | Tool | What it does |
158
- |------|-------------|
159
- | `search` | Weighted RRF (semantic + BM25 + entity) + FSRS recency + adaptive rerank |
160
- | `ask` | Vault-grounded Q&A |
161
- | `generate-draft` | AI drafts from your knowledge |
162
- | `get-decay-status` | Memory decay report (FSRS) |
163
- | `detect-gaps` | Knowledge gap analysis |
164
- | `create-knowledge-node` | AI creates wiki-quality notes |
165
- | `federated-search` | P2P search across vaults |
166
- | + 14 more | Documents, topics, decisions, snapshots, export |
167
-
168
- ---
169
-
170
- ## 3D Visualization
171
-
172
- - Neural graph with cluster coloring (React Three Fiber)
173
- - Constellation view (MST star patterns)
174
- - Heatmap overlay + Timeline slider + Decay overlay
175
- - Multiverse view your vault as a universe in a P2P network
176
- - Dark/Light theme
177
-
178
- ---
179
-
180
- ## Try It Now (Demo Vault)
181
-
182
- ```bash
183
- npx stellavault index --vault ./examples/demo-vault # Index 10 sample notes
184
- npx stellavault search "vector database" # Semantic search
185
- npx stellavault graph # 3D graph visualization
186
- ```
187
-
188
- The demo vault includes interconnected notes about Vector Databases, Knowledge Graphs, Spaced Repetition, RAG, MCP, and more — perfect for exploring all features instantly.
189
-
190
- ---
191
-
192
- ## Getting Started Guide
193
-
194
- ### Desktop App
195
-
196
- 1. **Download** Unzip Run
197
- 2. First launch asks you to pick your notes folder
198
- 3. Your notes appear in the sidebar — click to open
199
- 4. Press `Ctrl+P` for quick file switching
200
- 5. Click in the title bar for AI panel (semantic search, stats, draft)
201
- 6. Click ◉ for 3D graph
202
-
203
- ### CLI
204
-
205
- ```bash
206
- npm install -g stellavault
207
- stellavault init # Setup wizard
208
- stellavault search "machine learning" # Semantic search
209
- stellavault ingest paper.pdf # Add knowledge
210
- stellavault graph # 3D graph in browser
211
- stellavault brief # Morning briefing
212
- stellavault decay # What are you forgetting?
213
- ```
214
-
215
- ### Keyboard Shortcuts (Desktop)
216
-
217
- | Shortcut | Action |
218
- |----------|--------|
219
- | `Ctrl+P` | Quick Switcher (fuzzy file search) |
220
- | `Ctrl+Shift+P` | Command Palette (all actions) |
221
- | `Ctrl+S` | Save current note |
222
- | `Ctrl+\` | Toggle split view |
223
- | `Ctrl+B` | Bold |
224
- | `Ctrl+I` | Italic |
225
- | `Ctrl+U` | Underline |
226
- | `Ctrl+E` | Inline code |
227
- | `/` | Slash commands (at start of line) |
228
- | `[[` | Wikilink autocomplete |
229
-
230
- ### Quick Reference
231
-
232
- | Action | Desktop | CLI |
233
- |--------|---------|-----|
234
- | Search notes | Ctrl+P or AI panel | `stellavault search "query"` |
235
- | Add a note | + Note button or drag & drop | `stellavault ingest "text"` |
236
- | See 3D graph | button | `stellavault graph` |
237
- | Memory decay | AI panel Memory | `stellavault decay` |
238
- | Generate draft | AI panel Draft | `stellavault draft "topic"` |
239
- | Health check | AI panel → Stats | `stellavault lint` |
240
-
241
- ---
242
-
243
- ## Configuration
244
-
245
- Stellavault reads `./.stellavault.json` (or `~/.stellavault.json`). Search ranking is fully tunable — sensible defaults work out of the box:
246
-
247
- ```jsonc
248
- {
249
- "search": {
250
- "rrfK": 60,
251
- "weights": { "semantic": 1.0, "bm25": 1.0, "entity": 1.5 },
252
- "recencyWeight": 0.2, // FSRS recency strength; 0 = off
253
- "entityAliases": { "k8s": ["kubernetes"] } // synonym / cross-lingual groups (exact-only)
254
- }
255
- }
256
- ```
257
-
258
- Environment variables override config (parsed with guards):
259
-
260
- | Env var | Effect |
261
- |---------|--------|
262
- | `STELLAVAULT_W_SEMANTIC` / `_BM25` / `_ENTITY` | per-signal RRF weight (e.g. `STELLAVAULT_W_ENTITY=2.0` for aggressive entity surfacing) |
263
- | `STELLAVAULT_RECENCY_WEIGHT` | recency strength `0`–`1` (`0` disables) |
264
- | `STELLAVAULT_DB_PATH` | override the index DB location |
265
- | `STELLAVAULT_WATCH` | `0` to disable the auto-reindex file watcher while `serve` runs |
266
-
267
- > Note: cross-lingual recall (e.g. a Korean query finding English notes) is handled automatically by the multilingual embedding model — `entityAliases` is an optional precision boost for the curated entity graph (tags / wikilinks) and abbreviations.
268
-
269
- ---
270
-
271
- ## Performance
272
-
273
- Tested on synthetic vaults — all operations under 1 second for typical use cases:
274
-
275
- | Operation | 100 docs | 500 docs | 1000 docs |
276
- |-----------|----------|----------|-----------|
277
- | Store init | 15ms | 15ms | 16ms |
278
- | Bulk upsert | 12ms | 102ms | ~200ms |
279
- | Search (BM25) | <1ms | <1ms | <1ms |
280
- | Get all docs | <1ms | 2ms | ~4ms |
281
- | 124K dot products | | 36ms | |
282
-
283
- Run your own benchmarks:
284
-
285
- ```bash
286
- node tests/stress.mjs 500 # Test with 500 synthetic documents
287
- ```
288
-
289
- Key optimizations:
290
- - **HNSW graph building** — sqlite-vec KNN for 200+ docs (O(n·K·log n) vs O(n²))
291
- - Pre-normalized vectors: cosine similarity → single dot product
292
- - Batched embedding loading (500/batch, prevents RAM overflow)
293
- - Upper-triangle brute-force for small vaults (< 200 docs)
294
- - O(n) K-Means centroid updates with typed arrays
295
-
296
- ---
297
-
298
- ## Tech Stack
299
-
300
- | Layer | Tech |
301
- |-------|------|
302
- | Desktop | Electron + React + TipTap (15 extensions) + Zustand |
303
- | Runtime | Node.js 20+ (ESM, TypeScript) |
304
- | Vector Store | SQLite-vec (local, zero config) |
305
- | Embedding | MiniLM-L12-v2 (local, 50+ languages, batch processing) |
306
- | Search | Weighted RRF (semantic + BM25 + entity) + FSRS recency |
307
- | Math | KaTeX (inline + display) |
308
- | Code | lowlight / highlight.js (40+ languages) |
309
- | 3D | React Three Fiber + Three.js |
310
- | AI | MCP (21 tools) + Anthropic SDK |
311
- | P2P | Hyperswarm (optional, differential privacy) |
312
- | CI | GitHub Actions (Node 20 + 22) |
313
-
314
- ---
315
-
316
- ## Security
317
-
318
- - **Local-first** no data leaves your machine unless you use `--ai`
319
- - **Vault files never modified** indexes into SQLite, originals untouched
320
- - **Electron sandbox enabled** renderer runs with reduced OS privileges
321
- - **IPC path validation** all file operations stay inside vault root
322
- - **API auth token** per-session, header-only (`X-Stellavault-Token`). Token endpoint is same-origin-only
323
- - **CORS allow-list** — `localhost` / `127.0.0.1` only by default; MCP HTTP transport opt-in
324
- - **SSRF protection** — private IPs blocked on URL ingest
325
- - **E2E encryption** — AES-256-GCM for cloud sync
326
-
327
- ### Federation (experimental, off by default)
328
-
329
- Peer-to-peer semantic search is shipped as an **opt-in experimental feature**. The default install does **not** join any swarm and never shares data.
330
-
331
- Enable explicitly:
332
-
333
- ```bash
334
- # PowerShell
335
- $env:STELLAVAULT_FEDERATION_EXPERIMENTAL = "1"
336
-
337
- # bash / zsh
338
- export STELLAVAULT_FEDERATION_EXPERIMENTAL=1
339
-
340
- stellavault federate join
341
- ```
342
-
343
- When enabled, federation uses Ed25519 identities with signed envelopes, mutual challenge-response handshake, per-envelope replay nonces, handshake timeout, per-peer rate limiting, and a receive-only sharing default (`myNodeLevel=0`). Run `set-level 1+` in the federation prompt to actually share titles/snippets with peers.
344
-
345
- > **Upgrade note (v0.7.4)** federation wire format bumped from v2.0 to v2.1 (envelope-level nonce). v0.7.3 federation nodes are not compatible. Existing `~/.stellavault/federation/sharing.json` files are **not** auto-downgraded to the safer defaults; review your `myNodeLevel` if you previously opted in.
346
-
347
- See [SECURITY.md](SECURITY.md) for full details.
348
-
349
- ## Troubleshooting
350
-
351
- ```bash
352
- stellavault doctor # Check config, vault, DB, model, Node version
353
- ```
354
-
355
- Common issues:
356
- - **"Command not found"** `npm i -g stellavault@latest`
357
- - **"API server not found"** → `npx stellavault graph`
358
- - **Empty graph** `stellavault index`
359
- - **Slow first run** → AI model downloads ~30MB once
360
-
361
- ## License
362
-
363
- MIT full source code available for audit.
364
-
365
- ## Links
366
-
367
- - **[⬇ Download Desktop App](https://github.com/Evanciel/stellavault/releases/tag/desktop-v0.1.0)**
368
- - [Landing Page](https://evanciel.github.io/stellavault/)
369
- - [Obsidian Plugin](https://github.com/Evanciel/stellavault-obsidian)
370
- - [npm](https://www.npmjs.com/package/stellavault)
371
- - [GitHub Releases](https://github.com/Evanciel/stellavault/releases)
372
- - [Security Policy](SECURITY.md)
1
+ <div align="center">
2
+
3
+ <img src="images/banner.svg" alt="Stellavault drop anything, it compiles itself into knowledge" width="100%" />
4
+
5
+ **The local-first second brain that Claude remembers.**<br/>
6
+ Karpathy's self-compiling wiki × Zettelkasten — fully local, vault-safe, and MCP-native.
7
+
8
+ [![MCP server](https://img.shields.io/badge/MCP-server-2761e8?logo=anthropic&logoColor=white)](#mcp-integration-21-tools) [![npm](https://img.shields.io/npm/v/stellavault)](https://www.npmjs.com/package/stellavault) [![CI](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml/badge.svg)](https://github.com/Evanciel/stellavault/actions/workflows/ci.yml) [![tests](https://img.shields.io/badge/tests-700%2B%20passing-brightgreen)]() [![node](https://img.shields.io/badge/node-%E2%89%A520-339933?logo=node.js&logoColor=white)]() [![license](https://img.shields.io/badge/license-MIT-blue)](LICENSE)
9
+
10
+ **English** · [한국어](README.ko.md) · [日本語](README.ja.md) · [简体中文](README.zh.md)
11
+
12
+ [**🤖 Add to Claude / Cursor**](#mcp-integration-21-tools) · [**⬇ Desktop App**](https://github.com/Evanciel/stellavault/releases/tag/desktop-v0.3.0) · [**⚡ Quickstart**](#install) · [**🌐 Live Demo**](https://evanciel.github.io/stellavault/)
13
+
14
+ </div>
15
+
16
+ > **One command to let Claude read your vault:**
17
+ >
18
+ > ```bash
19
+ > npx -y stellavault setup # wires the MCP server into Claude Code / Desktop, Cursor, Windsurf, or VS Code
20
+ > ```
21
+
22
+ **A second brain that compiles itself.** Stellavault fuses two ideas about how knowledge should live and grow:
23
+
24
+ - 🧠 **Karpathy's self-compiling wiki** — drop in anything (a PDF, a YouTube link, a passing thought) and it's auto-extracted into `raw/`, then **compiled** into a clean `_wiki/` of concepts and backlinks. Your knowledge re-compiles itself as it grows, instead of rotting in a folder.
25
+ - 🕸️ **Zettelkasten** — atomic notes, `[[wikilinks]]`, and emergent connections, so a *web of ideas* (not a folder tree) becomes the real structure of how you think.
26
+
27
+ The result is one local-first knowledge tool — a full markdown editor, a 3D neural graph, hybrid AI search, and spaced-repetition memory decay — shipped as a **desktop app**, **CLI**, **Obsidian plugin**, and **MCP server** that lets **Claude read your entire vault**. No cloud, no API keys, and your original files are never modified.
28
+
29
+ <p align="center">
30
+ <img src="images/screenshots/graph-main-2.png" alt="3D Knowledge Graph" width="820" />
31
+ <br><em>Your vault as a neural network. Local-first, no cloud required.</em>
32
+ </p>
33
+
34
+ ## Contents
35
+
36
+ [Highlights](#highlights) · [Why Stellavault?](#why-stellavault) · [Install](#install) · [Editor](#editor) · [Pipeline](#the-pipeline) · [Intelligence](#intelligence-what-makes-stellavault-unique) · [Search & Ranking](#search--ranking) · [MCP Integration](#mcp-integration-21-tools) · [3D Visualization](#3d-visualization) · [Configuration](#configuration) · [Performance](#performance) · [Tech Stack](#tech-stack) · [Security](#security) · [Troubleshooting](#troubleshooting)
37
+
38
+ ## Highlights
39
+
40
+ - 🧠 **It compiles itself.** Drop in a PDF, a YouTube link, or a half-formed thought — Stellavault extracts it to `raw/`, then *compiles* a clean `_wiki/` with concepts and backlinks. Knowledge that organizes itself as it grows.
41
+ - 🔍 **Search that actually finds it.** Hybrid retrieval fuses semantic meaning, exact keywords (BM25), and your own `[[wikilinks]]` / `#tags` with **weighted RRF**, then re-ranks by an FSRS memory model so what you're *actually* using resurfaces. 50+ languages, fully local, zero API keys.
42
+ - 🌌 **Your mind, in 3D.** A real-time neural graph (React Three Fiber) — cluster coloring, constellations, heatmaps, a timeline, and a multiverse P2P view. A way to *see* the shape of what you know.
43
+ - 🤖 **Claude reads your entire vault.** A first-class **MCP server** (21 tools): Claude can search, ask, draft, lint, and analyze your knowledge from Claude Code, Claude Desktop, Cursor, Windsurf, or VS Code.
44
+ - ⏳ **It never *silently* forgets.** FSRS memory decay surfaces the real notes you're about to lose — plus gap, contradiction, and duplicate detection across the whole vault.
45
+ - 🔒 **Local-first. Vault-safe. Zero keys.** Local embeddings, an on-device vector store, and your original files are **never modified**. Nothing leaves your machine unless you opt in.
46
+
47
+ ## Why Stellavault?
48
+
49
+ Most tools make you choose between *writing*, *searching*, and *remembering*. Stellavault does all three — locally, and in a way Claude can read.
50
+
51
+ | | **Stellavault** | Obsidian | Notion | Plain RAG script |
52
+ |---|:---:|:---:|:---:|:---:|
53
+ | Local-first, works offline | ✅ | ✅ | ☁️ cloud | ⚠️ usually cloud |
54
+ | Semantic search, no API key | ✅ | ⚠️ plugin + key | 💰 paid AI | ⚠️ needs key |
55
+ | Original files never modified | ✅ | ✅ | ❌ proprietary | ➖ |
56
+ | Self-compiling (ingest → wiki) | | ❌ | ❌ | ❌ |
57
+ | 3D knowledge graph | ✅ | 2D / plugin | ❌ | ❌ |
58
+ | Spaced-repetition decay (FSRS) | ✅ | ⚠️ plugin | ❌ | ❌ |
59
+ | Gap / contradiction / dup detection | ✅ | ❌ | ❌ | ❌ |
60
+ | MCP-native (Claude reads your vault) | ✅ | ➖ community | ☁️ cloud | ➖ |
61
+
62
+ > [!NOTE]
63
+ > Not either/or Stellavault even runs **inside Obsidian** as a [plugin](https://github.com/Evanciel/stellavault-obsidian). Keep your editor; add a brain.
64
+
65
+ ## Install
66
+
67
+ ### Desktop App (Recommended one click)
68
+
69
+ <table>
70
+ <tr>
71
+ <td align="center"><a href="https://github.com/Evanciel/stellavault/releases/download/desktop-v0.3.0/Stellavault-win32-x64-0.3.0.zip"><br/><b>⬇ Download for Windows</b><br/><sub>x64 · 273 MB · ZIP</sub></a></td>
72
+ <td align="center"><a href="https://github.com/Evanciel/stellavault/releases/download/desktop-v0.3.0/Stellavault-linux-x64-0.3.0.zip"><br/><b>⬇ Download for Linux</b><br/><sub>x64 · 243 MB · ZIP</sub></a></td>
73
+ <td align="center"><br/><b>macOS</b><br/><sub>Coming soon</sub></td>
74
+ </tr>
75
+ </table>
76
+
77
+ > [!TIP]
78
+ > Download Unzip Run `stellavault.exe` (Windows) or `stellavault` (Linux) → Pick your notes folder → Done.
79
+
80
+ ### CLI (for developers)
81
+
82
+ ```bash
83
+ npm install -g stellavault # or: npx stellavault
84
+ stellavault init # Interactive setup (3 min): index vault + connect AI clients
85
+ stellavault setup # Connect to Claude Code/Desktop, Cursor, Windsurf, VS Code (one command)
86
+ stellavault graph # Launch 3D graph in browser
87
+ ```
88
+
89
+ > Requires Node.js 20+. Run `stellavault doctor` to diagnose issues.
90
+
91
+ ### Obsidian Plugin
92
+
93
+ 1. Download `main.js` + `manifest.json` + `styles.css` from [stellavault-obsidian releases](https://github.com/Evanciel/stellavault-obsidian/releases/latest)
94
+ 2. Place in `.obsidian/plugins/stellavault/`
95
+ 3. Enable in Settings Community plugins
96
+ 4. Start API: `npx stellavault graph` in your vault folder
97
+
98
+ ---
99
+
100
+ ## Editor
101
+
102
+ Full-featured markdown editor on par with Obsidian.
103
+
104
+ <details>
105
+ <summary><b>Full formatting & block support</b>tables, code, KaTeX, slash commands, wikilinks, split view… <i>(click to expand)</i></summary>
106
+
107
+ <br/>
108
+
109
+ | Feature | Status |
110
+ |---------|--------|
111
+ | Bold, Italic, Underline, Strikethrough | |
112
+ | Headings 1–6 | ✅ |
113
+ | Bullet, Numbered, Task lists (nested checkboxes) | |
114
+ | Tables (create, resize columns, add/remove rows & cols) | ✅ |
115
+ | Code blocks with syntax highlighting (40+ languages) | |
116
+ | Images (URL, clipboard paste, drag & drop) | |
117
+ | KaTeX math rendering (`$E=mc^2$` inline, `$$...$$` display) | |
118
+ | `/Slash commands` (12 block types, fuzzy search) | |
119
+ | `[[Wikilink]]` autocomplete | |
120
+ | Split view (vertical + horizontal, Ctrl+\\) | |
121
+ | Text alignment (left / center / right) | |
122
+ | Highlight, Superscript, Subscript | |
123
+ | Smart typography (curly quotes, em/en dashes) | |
124
+ | Horizontal rules | ✅ |
125
+
126
+ </details>
127
+
128
+ ---
129
+
130
+ ## The Pipeline
131
+
132
+ ```
133
+ Capture ──→ Organize ──→ Distill ──→ Express
134
+
135
+ Drop anything auto-extract raw/ compile _wiki/ draft
136
+ ```
137
+
138
+ Inspired by Karpathy's self-compiling knowledge architecture.
139
+
140
+ ### Ingest 14 Formats
141
+
142
+ | Input | How |
143
+ |-------|-----|
144
+ | PDF, DOCX, PPTX, XLSX | `stellavault ingest report.pdf` |
145
+ | JSON, CSV, XML, YAML, HTML, RTF | `stellavault ingest data.json` |
146
+ | YouTube | `stellavault ingest https://youtu.be/...` — transcript + timestamps |
147
+ | URL | `stellavault ingest https://...` — HTML → markdown |
148
+ | Text | `stellavault ingest "quick thought"` |
149
+ | Folder | `stellavault ingest ./papers/` — batch all files |
150
+ | Desktop / Web UI | Drag & drop files directly |
151
+
152
+ ### Express: Get Knowledge Out
153
+
154
+ ```bash
155
+ stellavault draft "AI" --format blog # Blog post from your vault
156
+ stellavault draft "AI" --format outline # Structured outline
157
+ stellavault draft "AI" --ai # Claude API enhanced ($0.03)
158
+ ```
159
+
160
+ Or use the **Express tab** in the desktop app — enter a topic, pick a format, and generate a draft grounded in your vault. Save to `_drafts/` and edit inline.
161
+
162
+ ---
163
+
164
+ ## Intelligence (What Makes Stellavault Unique)
165
+
166
+ These features do **not exist** in Obsidian even with plugins.
167
+
168
+ | Feature | Command / Desktop | Description |
169
+ |---------|-------------------|-------------|
170
+ | **Memory Decay** | `stellavault decay` / Memory tab | FSRS-based — shows which real notes you are forgetting |
171
+ | **Knowledge Gaps** | `stellavault gaps` | Detects weak connections between topic clusters |
172
+ | **Contradictions** | `stellavault contradictions` | Finds conflicting statements across your vault |
173
+ | **Duplicates** | `stellavault duplicates` | Near-identical notes with similarity score |
174
+ | **Health Check** | `stellavault lint` | Aggregated vault health score (0–100) |
175
+ | **Learning Path** | `stellavault learn` | AI-personalized review recommendations |
176
+ | **Daily Brief** | Desktop app home screen | Push-type: top decaying notes + stats on app open |
177
+ | **Auto-Tagging** | Automatic on ingest | Content-based keyword extraction + category rules |
178
+ | **Self-Compiling** | `stellavault compile` | raw/ → _wiki/ with extracted concepts + backlinks |
179
+
180
+ ---
181
+
182
+ ## Search & Ranking
183
+
184
+ Hybrid retrieval that fuses multiple signals with **weighted Reciprocal Rank Fusion (RRF)** — tuned for a personal knowledge vault, fully local, zero API keys:
185
+
186
+ | Signal | What it captures | Default weight |
187
+ |--------|------------------|---------------:|
188
+ | **Semantic** (dense) | meaning; multilingual (50+ languages) | `1.0` |
189
+ | **BM25** (keyword) | exact terms, code, names | `1.0` |
190
+ | **Entity-linking** | your `[[wikilinks]]`, `#tags`, headings, titles — the curated graph | `1.5` |
191
+ | **FSRS recency** | gently surfaces notes you're actively using / forgetting | `±10%` |
192
+
193
+ - **Entity matching** resolves natural-language queries via fuzzy substring + punctuation-normalized matching (Korean / CJK friendly), with a **per-document diversity cap** so one large note can't flood the top results.
194
+ - **Recency** reuses the same FSRS memory model as the decay engine (not raw file mtime) — a note you're forgetting resurfaces; a mastered evergreen note isn't buried just for being old.
195
+ - **Adaptive rerank** (long-running MCP server) further boosts results by your current session context (recent tags / paths).
196
+ - Every weight is **tunable** per vault or via env vars — see [Configuration](#configuration).
197
+
198
+ ---
199
+
200
+ ## MCP Integration (21 Tools)
201
+
202
+ ```bash
203
+ stellavault setup # one command → Claude Code, Claude Desktop, Cursor, Windsurf, VS Code
204
+ # or, for Claude Code only:
205
+ claude mcp add stellavault -- stellavault serve
206
+ ```
207
+
208
+ <details>
209
+ <summary>Manual config (any MCP client) — copy-paste JSON</summary>
210
+
211
+ ```json
212
+ {
213
+ "mcpServers": {
214
+ "stellavault": {
215
+ "command": "npx",
216
+ "args": ["-y", "stellavault", "serve"]
217
+ }
218
+ }
219
+ }
220
+ ```
221
+
222
+ Listed on the [MCP registry](https://registry.modelcontextprotocol.io) as `io.github.Evanciel/stellavault` (also discoverable via Glama, Smithery, and mcp.so).
223
+ </details>
224
+
225
+ Claude can search, ask, draft, lint, and analyze your vault directly. Search runs
226
+ the full hybrid pipeline — **weighted RRF** over semantic + BM25 + entity-linking,
227
+ plus **FSRS recency** and session-adaptive reranking (see [Search & Ranking](#search--ranking)).
228
+
229
+ | Tool | What it does |
230
+ |------|-------------|
231
+ | `search` | Weighted RRF (semantic + BM25 + entity) + FSRS recency + adaptive rerank |
232
+ | `ask` | Vault-grounded Q&A |
233
+ | `generate-draft` | AI drafts from your knowledge |
234
+ | `get-decay-status` | Memory decay report (FSRS) |
235
+ | `detect-gaps` | Knowledge gap analysis |
236
+ | `create-knowledge-node` | AI creates wiki-quality notes |
237
+ | `federated-search` | P2P search across vaults |
238
+ | + 14 more | Documents, topics, decisions, snapshots, export |
239
+
240
+ ---
241
+
242
+ ## 3D Visualization
243
+
244
+ - Neural graph with cluster coloring (React Three Fiber)
245
+ - Constellation view (MST star patterns)
246
+ - Heatmap overlay + Timeline slider + Decay overlay
247
+ - Multiverse view — your vault as a universe in a P2P network
248
+ - Dark/Light theme
249
+
250
+ <table>
251
+ <tr>
252
+ <td width="50%"><img src="images/screenshots/graph-heatmap.png" alt="Heatmap overlay" /><br/><sub><b>Heatmap</b> connection density across clusters</sub></td>
253
+ <td width="50%"><img src="images/screenshots/graph-timeline.png" alt="Timeline slider" /><br/><sub><b>Timeline</b> watch your vault grow over time</sub></td>
254
+ </tr>
255
+ <tr>
256
+ <td><img src="images/screenshots/search-active.png" alt="Semantic search highlight" /><br/><sub><b>Search</b> — semantic matches highlighted in-graph</sub></td>
257
+ <td><img src="images/screenshots/multiverse-view.png" alt="Multiverse P2P view" /><br/><sub><b>Multiverse</b> — federated vaults as orbiting universes</sub></td>
258
+ </tr>
259
+ </table>
260
+
261
+ ---
262
+
263
+ ## Try It Now (Demo Vault)
264
+
265
+ ```bash
266
+ npx stellavault index --vault ./examples/demo-vault # Index 10 sample notes
267
+ npx stellavault search "vector database" # Semantic search
268
+ npx stellavault graph # 3D graph visualization
269
+ ```
270
+
271
+ The demo vault includes interconnected notes about Vector Databases, Knowledge Graphs, Spaced Repetition, RAG, MCP, and more — perfect for exploring all features instantly.
272
+
273
+ ---
274
+
275
+ ## Getting Started Guide
276
+
277
+ ### Desktop App
278
+
279
+ 1. **Download** Unzip Run
280
+ 2. First launch asks you to pick your notes folder
281
+ 3. Your notes appear in the sidebar click to open
282
+ 4. Press `Ctrl+P` for quick file switching
283
+ 5. Click in the title bar for AI panel (semantic search, stats, draft)
284
+ 6. Click ◉ for 3D graph
285
+
286
+ ### CLI
287
+
288
+ ```bash
289
+ npm install -g stellavault
290
+ stellavault init # Setup wizard
291
+ stellavault search "machine learning" # Semantic search
292
+ stellavault ingest paper.pdf # Add knowledge
293
+ stellavault graph # 3D graph in browser
294
+ stellavault brief # Morning briefing
295
+ stellavault decay # What are you forgetting?
296
+ ```
297
+
298
+ ### Keyboard Shortcuts (Desktop)
299
+
300
+ | Shortcut | Action |
301
+ |----------|--------|
302
+ | `Ctrl+P` | Quick Switcher (fuzzy file search) |
303
+ | `Ctrl+Shift+P` | Command Palette (all actions) |
304
+ | `Ctrl+S` | Save current note |
305
+ | `Ctrl+\` | Toggle split view |
306
+ | `Ctrl+B` | Bold |
307
+ | `Ctrl+I` | Italic |
308
+ | `Ctrl+U` | Underline |
309
+ | `Ctrl+E` | Inline code |
310
+ | `/` | Slash commands (at start of line) |
311
+ | `[[` | Wikilink autocomplete |
312
+
313
+ ### Quick Reference
314
+
315
+ | Action | Desktop | CLI |
316
+ |--------|---------|-----|
317
+ | Search notes | Ctrl+P or AI panel | `stellavault search "query"` |
318
+ | Add a note | + Note button or drag & drop | `stellavault ingest "text"` |
319
+ | See 3D graph | button | `stellavault graph` |
320
+ | Memory decay | AI panel Memory | `stellavault decay` |
321
+ | Generate draft | AI panel Draft | `stellavault draft "topic"` |
322
+ | Health check | AI panel Stats | `stellavault lint` |
323
+
324
+ ---
325
+
326
+ ## Configuration
327
+
328
+ Stellavault reads `./.stellavault.json` (or `~/.stellavault.json`). Search ranking is fully tunable — sensible defaults work out of the box:
329
+
330
+ ```jsonc
331
+ {
332
+ "search": {
333
+ "rrfK": 60,
334
+ "weights": { "semantic": 1.0, "bm25": 1.0, "entity": 1.5 },
335
+ "recencyWeight": 0.2, // FSRS recency strength; 0 = off
336
+ "entityAliases": { "k8s": ["kubernetes"] } // synonym / cross-lingual groups (exact-only)
337
+ }
338
+ }
339
+ ```
340
+
341
+ Environment variables override config (parsed with guards):
342
+
343
+ | Env var | Effect |
344
+ |---------|--------|
345
+ | `STELLAVAULT_W_SEMANTIC` / `_BM25` / `_ENTITY` | per-signal RRF weight (e.g. `STELLAVAULT_W_ENTITY=2.0` for aggressive entity surfacing) |
346
+ | `STELLAVAULT_RECENCY_WEIGHT` | recency strength `0`–`1` (`0` disables) |
347
+ | `STELLAVAULT_DB_PATH` | override the index DB location |
348
+ | `STELLAVAULT_WATCH` | `0` to disable the auto-reindex file watcher while `serve` runs |
349
+
350
+ > Note: cross-lingual recall (e.g. a Korean query finding English notes) is handled automatically by the multilingual embedding model — `entityAliases` is an optional precision boost for the curated entity graph (tags / wikilinks) and abbreviations.
351
+
352
+ ---
353
+
354
+ ## Performance
355
+
356
+ Tested on synthetic vaults all operations under 1 second for typical use cases:
357
+
358
+ | Operation | 100 docs | 500 docs | 1000 docs |
359
+ |-----------|----------|----------|-----------|
360
+ | Store init | 15ms | 15ms | 16ms |
361
+ | Bulk upsert | 12ms | 102ms | ~200ms |
362
+ | Search (BM25) | <1ms | <1ms | <1ms |
363
+ | Get all docs | <1ms | 2ms | ~4ms |
364
+ | 124K dot products | — | 36ms | — |
365
+
366
+ Run your own benchmarks:
367
+
368
+ ```bash
369
+ node tests/stress.mjs 500 # Test with 500 synthetic documents
370
+ ```
371
+
372
+ Key optimizations:
373
+ - **HNSW graph building** — sqlite-vec KNN for 200+ docs (O(n·K·log n) vs O(n²))
374
+ - Pre-normalized vectors: cosine similarity → single dot product
375
+ - Batched embedding loading (500/batch, prevents RAM overflow)
376
+ - Upper-triangle brute-force for small vaults (< 200 docs)
377
+ - O(n) K-Means centroid updates with typed arrays
378
+
379
+ ---
380
+
381
+ ## Tech Stack
382
+
383
+ | Layer | Tech |
384
+ |-------|------|
385
+ | Desktop | Electron + React + TipTap (15 extensions) + Zustand |
386
+ | Runtime | Node.js 20+ (ESM, TypeScript) |
387
+ | Vector Store | SQLite-vec (local, zero config) |
388
+ | Embedding | MiniLM-L12-v2 (local, 50+ languages, batch processing) |
389
+ | Search | Weighted RRF (semantic + BM25 + entity) + FSRS recency |
390
+ | Math | KaTeX (inline + display) |
391
+ | Code | lowlight / highlight.js (40+ languages) |
392
+ | 3D | React Three Fiber + Three.js |
393
+ | AI | MCP (21 tools) + Anthropic SDK |
394
+ | P2P | Hyperswarm (optional, differential privacy) |
395
+ | CI | GitHub Actions (Node 20 + 22) |
396
+
397
+ ---
398
+
399
+ ## Security
400
+
401
+ - **Local-first** — no data leaves your machine unless you use `--ai`
402
+ - **Vault files never modified** — indexes into SQLite, originals untouched
403
+ - **Electron sandbox enabled** — renderer runs with reduced OS privileges
404
+ - **IPC path validation** — all file operations stay inside vault root
405
+ - **API auth token** — per-session, header-only (`X-Stellavault-Token`). Token endpoint is same-origin-only
406
+ - **CORS allow-list** — `localhost` / `127.0.0.1` only by default; MCP HTTP transport opt-in
407
+ - **SSRF protection** — private IPs blocked on URL ingest
408
+ - **E2E encryption** — AES-256-GCM for cloud sync
409
+
410
+ ### Federation (experimental, off by default)
411
+
412
+ Peer-to-peer semantic search is shipped as an **opt-in experimental feature**. The default install does **not** join any swarm and never shares data.
413
+
414
+ Enable explicitly:
415
+
416
+ ```bash
417
+ # PowerShell
418
+ $env:STELLAVAULT_FEDERATION_EXPERIMENTAL = "1"
419
+
420
+ # bash / zsh
421
+ export STELLAVAULT_FEDERATION_EXPERIMENTAL=1
422
+
423
+ stellavault federate join
424
+ ```
425
+
426
+ When enabled, federation uses Ed25519 identities with signed envelopes, mutual challenge-response handshake, per-envelope replay nonces, handshake timeout, per-peer rate limiting, and a receive-only sharing default (`myNodeLevel=0`). Run `set-level 1+` in the federation prompt to actually share titles/snippets with peers.
427
+
428
+ > [!WARNING]
429
+ > **Upgrade note (v0.7.4)** — federation wire format bumped from v2.0 to v2.1 (envelope-level nonce). v0.7.3 federation nodes are not compatible. Existing `~/.stellavault/federation/sharing.json` files are **not** auto-downgraded to the safer defaults; review your `myNodeLevel` if you previously opted in.
430
+
431
+ See [SECURITY.md](SECURITY.md) for full details.
432
+
433
+ ## Troubleshooting
434
+
435
+ ```bash
436
+ stellavault doctor # Check config, vault, DB, model, Node version
437
+ ```
438
+
439
+ Common issues:
440
+ - **"Command not found"** → `npm i -g stellavault@latest`
441
+ - **"API server not found"** → `npx stellavault graph`
442
+ - **Empty graph** → `stellavault index`
443
+ - **Slow first run** → AI model downloads ~30MB once
444
+
445
+ ## Contributing
446
+
447
+ Issues and pull requests are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) to get started, and [SECURITY.md](SECURITY.md) to report a vulnerability responsibly.
448
+
449
+ ## License
450
+
451
+ MIT — full source code available for audit.
452
+
453
+ ## Links
454
+
455
+ - **[⬇ Download Desktop App](https://github.com/Evanciel/stellavault/releases/tag/desktop-v0.3.0)**
456
+ - [Landing Page](https://evanciel.github.io/stellavault/)
457
+ - [Obsidian Plugin](https://github.com/Evanciel/stellavault-obsidian)
458
+ - [npm](https://www.npmjs.com/package/stellavault)
459
+ - [GitHub Releases](https://github.com/Evanciel/stellavault/releases)
460
+ - [Security Policy](SECURITY.md)
461
+
462
+ ---
463
+
464
+ <div align="center">
465
+
466
+ **Found this useful?** ⭐ [**Star Stellavault**](https://github.com/Evanciel/stellavault) — it genuinely helps the project reach more people who think in connected notes.
467
+
468
+ <sub>Built with ✦ for second-brain builders. · <a href="https://github.com/Evanciel/stellavault/releases">Download</a> · <a href="#mcp-integration-21-tools">Connect Claude</a> · <a href="https://github.com/Evanciel/stellavault/issues">Report an issue</a></sub>
469
+
470
+ </div>