stellavault 0.5.4 → 0.6.1

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
@@ -2,249 +2,297 @@
2
2
 
3
3
  > **Drop anything. It compiles itself into knowledge.** Claude remembers everything you know.
4
4
 
5
- Self-compiling Zettelkasten MCP server. Ingest PDFs, YouTube, documentsauto-organized into linked wiki. Claude accesses your entire knowledge base. **Your vault files are never modified.**
5
+ Self-compiling knowledge base with 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.
6
6
 
7
7
  <p align="center">
8
8
  <img src="images/screenshots/graph-main-2.png" alt="3D Knowledge Graph" width="800" />
9
9
  <br><em>Your vault as a neural network. Local-first, no cloud required.</em>
10
10
  </p>
11
11
 
12
- ## Two Core Ideas
12
+ ## Three Ways to Use Stellavault
13
13
 
14
- **1. "Drop it and forget it"** (Inspired by Karpathy's Self-Compiling Knowledge)
15
- ```
16
- Any input → auto-classify → raw/ → compile → wiki → connected knowledge
17
- ```
18
- PDF, DOCX, PPTX, XLSX, YouTube (with transcript), URL, text — everything goes through the same pipeline. You never manually organize.
14
+ ### 1. Desktop App (Recommended)
19
15
 
20
- **2. "Claude remembers what you know"** (MCP Integration)
21
- ```bash
22
- claude mcp add stellavault -- stellavault serve
23
- ```
24
- Claude searches, asks, drafts from your vault directly. Local-first no data leaves your machine.
16
+ Download and run no terminal needed.
17
+
18
+ | Platform | Download | Size |
19
+ |----------|----------|------|
20
+ | **Windows x64** | [Stellavault-win32-x64-0.1.0.zip](https://github.com/Evanciel/stellavault/releases/download/desktop-v0.1.0/Stellavault-win32-x64-0.1.0.zip) | 116 MB |
21
+ | **Linux x64** | [Stellavault-linux-x64-0.1.0.zip](https://github.com/Evanciel/stellavault/releases/download/desktop-v0.1.0/Stellavault-linux-x64-0.1.0.zip) | 107 MB |
22
+ | macOS | Coming soon (requires Apple code signing) | — |
25
23
 
26
- ## 5-Minute Setup
24
+ **What you get:**
25
+ - Full markdown editor with WYSIWYG toolbar
26
+ - File tree sidebar with search filter
27
+ - `[[wikilink]]` autocomplete as you type
28
+ - Multi-tab editing with Ctrl+S save
29
+ - 3D knowledge graph panel
30
+ - AI panel — semantic search, vault stats, re-index
31
+ - Backlinks panel — see who links to your note
32
+ - Quick Switcher (Ctrl+P) and Command Palette (Ctrl+Shift+P)
33
+ - Dark/light theme
34
+
35
+ ### 2. CLI + Web Graph
36
+
37
+ For developers and power users.
27
38
 
28
39
  ```bash
29
- npm install -g stellavault
30
- stellavault init # Interactive setup + vault indexing
31
- stellavault graph # Launch 3D graph + API server
40
+ npm install -g stellavault # or: npx stellavault
41
+ stellavault init # Interactive setup wizard
42
+ stellavault graph # Launch 3D graph in browser
32
43
  ```
33
44
 
34
- > **Prerequisites**: Node.js 20+
35
- >
36
- > **Upgrading from 0.4.x / 0.5.0 / 0.5.1 / 0.5.2 / 0.5.3?** Earlier releases had three showstopper packaging bugs: the `stellavault` bin shim wasn't created after install (0.4.x–0.5.1), the 3D graph UI wasn't bundled (0.4.x–0.5.2), and the SPA fallback was hijacking `/sw.js` and `/manifest.json` causing PWA install errors (0.5.3). **v0.5.4 fixes all of these and is verified end-to-end with Playwright (9/9 checks)** — install, bin link, graph UI, node click, federation toggle, PWA assets, zero console errors. Reinstall: `npm i -g stellavault@latest`.
45
+ > **Prerequisites**: Node.js 20+. Run `stellavault doctor` to diagnose setup issues.
46
+
47
+ ### 3. Obsidian Plugin
48
+
49
+ Use Stellavault intelligence inside Obsidian.
50
+
51
+ 1. Download from [stellavault-obsidian releases](https://github.com/Evanciel/stellavault-obsidian/releases/latest)
52
+ 2. Place `main.js`, `manifest.json`, `styles.css` in `.obsidian/plugins/stellavault/`
53
+ 3. Enable in Settings → Community plugins
54
+ 4. Start the API server: `npx stellavault graph` in your vault folder
55
+
56
+ **Features:** Semantic search modal, memory decay sidebar, learning path suggestions, auto-indexing on file changes.
57
+
58
+ ---
37
59
 
38
60
  ## The Pipeline
39
61
 
40
62
  ```
41
63
  Capture ──→ Organize ──→ Distill ──→ Express
42
64
 
43
- stellavault ingest <anything> # PDF, DOCX, URL, YouTube, text
44
- → auto-extract text # unpdf, mammoth, yt-dlp
45
- → raw/ (fleeting) # Zettelkasten inbox
46
- → compile → _wiki/ # Auto: concepts + backlinks
47
- → stellavault draft "topic" # Blog, report, or outline
65
+ Drop anything auto-extract raw/ → compile → _wiki/ → draft
48
66
  ```
49
67
 
50
- ### Ingest Anything
68
+ Inspired by [Karpathy's self-compiling knowledge](https://karpathy.ai/) architecture. Every input flows through the same four-stage pipeline.
69
+
70
+ ### Ingest Anything (14 formats)
51
71
 
52
72
  | Input | How |
53
73
  |-------|-----|
54
- | PDF, DOCX, PPTX, XLSX | `stellavault ingest report.pdf` — auto text extraction |
55
- | JSON, CSV, XML, YAML | `stellavault ingest data.json` — structured format preserved |
56
- | HTML, RTF | `stellavault ingest page.html` — clean text extraction |
74
+ | PDF, DOCX, PPTX, XLSX | `stellavault ingest report.pdf` |
75
+ | JSON, CSV, XML, YAML, HTML, RTF | `stellavault ingest data.json` |
57
76
  | YouTube | `stellavault ingest https://youtu.be/...` — transcript + timestamps |
58
- | URL | `stellavault ingest https://...` — HTML → clean text |
77
+ | URL | `stellavault ingest https://...` — HTML → markdown |
59
78
  | Text | `stellavault ingest "quick thought"` |
60
79
  | Folder | `stellavault ingest ./papers/` — batch all files |
61
- | Web UI | Drag & drop files in browser (mobile too) |
80
+ | Desktop / Web UI | Drag & drop files directly |
62
81
 
63
82
  ### Express: Get Knowledge Out
64
83
 
65
84
  ```bash
66
85
  stellavault draft "AI" # Rule-based scaffold (free)
67
- stellavault draft "AI" --ai # Claude API writes full draft ($0.03)
68
- stellavault draft "AI" --format report # Formal report format
69
- stellavault draft --format outline # All-knowledge outline
86
+ stellavault draft "AI" --ai # Claude API writes full draft
87
+ stellavault draft "AI" --format report # Formal report
88
+ stellavault draft --format instagram # Social media format
70
89
  ```
71
90
 
72
- Or in Claude Code: *"Write a blog post about machine learning from my notes"* — Claude uses MCP `generate-draft` tool (free, no API key).
91
+ ## MCP Integration (21 Tools)
73
92
 
74
- ## Self-Evolving Memory (Karpathy's Compounding Loop)
75
-
76
- ```
77
- Session → session-save → daily-log → flush → wiki
78
- ↑ ↓
79
- └──── Claude reads wiki via MCP (20 tools) ←─┘
80
- ```
81
-
82
- Every conversation makes your knowledge base smarter:
93
+ Connect Stellavault to Claude Code or Claude Desktop:
83
94
 
84
95
  ```bash
85
- # Auto-capture session summary to daily log
86
- echo "Decided to use JWT. Lesson: never store tokens in localStorage" | stellavault session-save
87
-
88
- # Flush daily logs → extract concepts → rebuild wiki
89
- stellavault flush
90
-
91
- # Or set up Claude Code hooks for full automation
92
- # See: docs/hooks-setup.md
93
- ```
94
-
95
- ## Daily Commands
96
-
97
- ```bash
98
- stellavault ask "What did I learn about X?" # Q&A from vault
99
- stellavault brief # Morning knowledge briefing
100
- stellavault decay # What's fading from memory?
101
- stellavault lint # Health score (0-100)
102
- stellavault learn # AI learning path
103
- stellavault flush # Daily logs → wiki compilation
104
- stellavault digest --visual # Weekly Mermaid chart report
96
+ claude mcp add stellavault -- stellavault serve
105
97
  ```
106
98
 
107
- ## MCP Tools (21)
99
+ Claude can now search, ask, draft, lint, and analyze your vault directly.
108
100
 
109
101
  | Tool | What it does |
110
102
  |------|-------------|
111
- | `search` | Hybrid search (BM25 + vector + RRF) |
112
- | `ask` | Q&A with optional vault filing |
113
- | `generate-draft` | Gather vault context for AI draft writing |
114
- | `get-document` | Full document with metadata |
115
- | `get-related` | Semantically similar documents |
116
- | `list-topics` | Topic cloud |
117
- | `get-decay-status` | Memory decay report |
118
- | `get-morning-brief` | Daily knowledge briefing |
119
- | `get-learning-path` | AI learning recommendations |
103
+ | `search` | Hybrid BM25 + vector + RRF search |
104
+ | `ask` | Q&A with vault-grounded answers |
105
+ | `generate-draft` | AI drafts from your knowledge |
106
+ | `get-decay-status` | Memory decay report (FSRS) |
120
107
  | `detect-gaps` | Knowledge gap analysis |
121
- | `get-evolution` | Semantic drift tracking |
122
- | `link-code` | Code-knowledge connections |
108
+ | `get-learning-path` | Personalized review recommendations |
123
109
  | `create-knowledge-node` | AI creates wiki-quality notes |
124
- | `create-knowledge-link` | AI connects existing notes |
125
- | `log-decision` / `find-decisions` | Decision journal |
126
- | `create-snapshot` / `load-snapshot` | Context snapshots |
127
- | `generate-claude-md` | Auto-generate CLAUDE.md |
128
- | `export` | JSON/CSV export |
129
- | `federated-search` | P2P federated search |
110
+ | `federated-search` | P2P search across connected vaults |
111
+ | + 13 more | Documents, topics, decisions, snapshots, export |
130
112
 
131
- ## Self-Evolving Commands
113
+ ## Intelligence
132
114
 
133
- ```bash
134
- stellavault session-save # Capture session summary to daily log
135
- stellavault flush # Daily logs wiki (Karpathy compile)
136
- stellavault promote note.md --to lit # Upgrade note stage
137
- stellavault autopilot # Full cycle: inbox compile lint → archive
138
- ```
115
+ | Feature | Command |
116
+ |---------|---------|
117
+ | Memory Decay | `stellavault decay` what you're forgetting (FSRS) |
118
+ | Gap Detection | `stellavault gaps` weak connections between topics |
119
+ | Contradictions | `stellavault contradictions` conflicting statements |
120
+ | Duplicates | `stellavault duplicates` — redundant notes |
121
+ | Learning Path | `stellavault learn` — AI review recommendations |
122
+ | Health Check | `stellavault lint` — overall knowledge score |
123
+ | Daily Brief | `stellavault brief` — morning knowledge briefing |
124
+ | Weekly Digest | `stellavault digest --visual` — Mermaid chart report |
139
125
 
140
- ## Zettelkasten (Luhmann + Karpathy)
126
+ ## Self-Evolving Memory
141
127
 
142
- ```bash
143
- stellavault fleeting "raw idea" # → raw/
144
- stellavault ingest report.pdf # → auto text extract → raw/
145
- stellavault compile # → raw/ → _wiki/ (concepts + backlinks)
146
- stellavault promote note.md --to permanent # Upgrade stage
147
- stellavault autopilot # Full cycle: inbox → compile → lint → archive
148
128
  ```
149
-
150
- - **3-stage flow**: fleeting → literature → permanent
151
- - **Luhmann index codes**: auto-assigned (1A 1A1)
152
- - **Frontmatter-first scanning**: 10x token reduction
153
- - **Configurable folders**: override raw/_wiki/_literature/ in `.stellavault.json`
154
-
155
- ```json
156
- {
157
- "vaultPath": "/path/to/vault",
158
- "folders": {
159
- "fleeting": "01-Inbox",
160
- "literature": "02-Reading",
161
- "permanent": "03-Notes",
162
- "wiki": "04-Wiki"
163
- }
164
- }
129
+ Session → session-save → daily-log → flush → wiki
130
+ ↑ ↓
131
+ └──── Claude reads wiki via MCP (21 tools) ←─┘
165
132
  ```
166
133
 
167
- ## Intelligence
168
-
169
- | Feature | Command |
170
- |---------|---------|
171
- | FSRS Decay | `sv decay` — spaced repetition memory tracking |
172
- | Gap Detection | `sv gaps` — missing connections between topics |
173
- | Contradictions | `sv contradictions` — conflicting statements |
174
- | Duplicates | `sv duplicates` — redundant notes |
175
- | Learning Path | `sv learn` — AI review recommendations |
176
- | Code Linker | MCP `link-code` — connect code to knowledge |
177
-
178
- ## 3D Visualization
179
-
180
- - Neural graph with cluster coloring
181
- - Constellation view (MST star patterns)
182
- - Heatmap overlay (activity score)
183
- - Timeline slider (creation/modification filter)
184
- - Decay overlay (fading knowledge)
185
- - **Multiverse view** — your vault as a universe in a P2P network
186
- - Dark/Light theme
187
- - Mobile responsive + PWA installable
188
-
189
- ## Multiverse — P2P Knowledge Federation
190
-
191
- <p align="center">
192
- <img src="images/screenshots/multiverse-view.png" alt="Multiverse View" width="800" />
193
- <br><em>"Your universe floats alone — for now."</em>
194
- </p>
134
+ Every conversation makes your knowledge base smarter. Set up [Claude Code hooks](docs/hooks-setup.md) for full automation.
195
135
 
196
- Your vault is a universe. Connect with others through P2P federation.
136
+ ## Zettelkasten Workflow
197
137
 
198
- **From the web UI** (easiest): open `stellavault graph`, then click the **Offline · Join** badge in the top-left header. Live peer count, one-click disconnect, and a popover showing connected peers.
138
+ Three-stage flow: **fleeting literature permanent** (Luhmann + Karpathy).
199
139
 
200
- **From the CLI**:
201
140
  ```bash
202
- stellavault federate join # Connect to the Stella Network
203
- stellavault federate status # See connected peers
141
+ stellavault fleeting "raw idea" # raw/
142
+ stellavault ingest report.pdf # auto-extract → raw/
143
+ stellavault compile # → raw/ → _wiki/ (concepts + backlinks)
144
+ stellavault promote note.md --to permanent # Upgrade stage
145
+ stellavault autopilot # Full cycle: inbox → compile → lint
204
146
  ```
205
147
 
206
- **How it works:**
207
- - **Hyperswarm P2P** — NAT-traversal mesh networking, no central server
208
- - **Embeddings only** — your original text never leaves your machine
148
+ Auto-assigned Luhmann index codes, frontmatter-first scanning, configurable folders.
149
+
150
+ ## P2P Federation (Multiverse)
151
+
152
+ Your vault is a universe. Connect with others through P2P federation.
153
+
154
+ - **Hyperswarm P2P** — NAT-traversal, no central server
155
+ - **Embeddings only** — original text never leaves your machine
209
156
  - **Differential privacy** — mathematical privacy guarantees
210
- - **Trust & reputation** — good knowledge earns credits
211
- - **Federated search** — search across connected vaults via MCP
212
157
 
213
- The Multiverse view shows your universe and connected peers as neighboring constellations in 3D. Click to explore their shared knowledge.
158
+ In the desktop app or web UI, click the **Federation badge** in the header to join/leave the Stella Network.
214
159
 
215
160
  ## Tech Stack
216
161
 
217
162
  | Layer | Tech |
218
163
  |-------|------|
164
+ | Desktop | Electron + React + TipTap + Zustand |
219
165
  | Runtime | Node.js 20+ (ESM, TypeScript) |
220
- | Vector Store | SQLite-vec (local, no server) |
221
- | Embedding | paraphrase-multilingual-MiniLM-L12-v2 (local, 50+ languages) |
166
+ | Vector Store | SQLite-vec (local, zero config) |
167
+ | Embedding | MiniLM-L12-v2 (local, 50+ languages) |
222
168
  | Search | BM25 + Cosine + RRF Fusion |
223
169
  | File Parsing | unpdf, mammoth, officeparser, SheetJS |
224
170
  | Memory | FSRS (Free Spaced Repetition Scheduler) |
225
171
  | 3D | React Three Fiber + Three.js |
226
172
  | AI | MCP (Model Context Protocol) + Anthropic SDK |
173
+ | P2P | Hyperswarm (optional) |
227
174
 
228
175
  ## Full Feature List
229
176
 
230
177
  | Category | Features |
231
178
  |----------|----------|
232
- | **Capture** | ingest 14 formats (PDF/DOCX/PPTX/XLSX/JSON/CSV/XML/HTML/YAML/RTF/YouTube/URL/text), batch folders, web drag & drop, Quick Capture, mobile PWA |
179
+ | **Desktop** | File tree sidebar, multi-tab editor, [[wikilink]] autocomplete, Quick Switcher, Command Palette, 3D graph panel, AI panel, backlinks, dark/light theme |
180
+ | **Capture** | 14 formats (PDF/DOCX/PPTX/XLSX/JSON/CSV/XML/HTML/YAML/RTF/YouTube/URL/text), batch folders, drag & drop, voice capture, Quick Capture |
233
181
  | **Organize** | Zettelkasten 3-stage, auto index codes, wikilink auto-connect, configurable folders |
234
182
  | **Distill** | compile (raw→wiki), lint (health score), gaps, contradictions, duplicates |
235
- | **Express** | draft (blog/report/outline/instagram/thread/script), blueprint, --ai, MCP generate-draft |
183
+ | **Express** | draft (blog/report/outline/instagram/thread/script), blueprint, --ai mode |
236
184
  | **Memory** | FSRS decay, session-save, flush, compounding loop, ADR templates |
237
185
  | **Search** | hybrid (BM25+vector+RRF), multilingual 50+, ask Q&A, quotes mode |
238
- | **Visualize** | 3D graph, heatmap, timeline, right-click context menu, TipTap WYSIWYG editor |
239
- | **AI Integration** | 21 MCP tools, Claude Code hooks, Anthropic SDK |
240
- | **Security** | DOMPurify, YAML sanitize, 50MB guard, SSRF protection |
241
- | **CLI** | 40+ commands, `sv` alias, batch ingest |
186
+ | **Visualize** | 3D graph, heatmap, timeline, constellation view, decay overlay, multiverse |
187
+ | **AI** | 21 MCP tools, Claude Code hooks, Anthropic SDK |
188
+ | **Federation** | Hyperswarm P2P, embedding-only sharing, differential privacy |
189
+ | **CLI** | 40+ commands, `sv` alias, `stellavault doctor` diagnostics |
242
190
 
243
- ## Security
191
+ ## Getting Started Guide
192
+
193
+ ### Desktop App (easiest)
194
+
195
+ 1. **Download** from [Releases](https://github.com/Evanciel/stellavault/releases/latest)
196
+ 2. **Unzip** to any folder
197
+ 3. **Run** `stellavault.exe` (Windows) — first launch asks you to pick your notes folder
198
+ 4. **Explore** — your notes appear in the sidebar, click to open in the editor
199
+ 5. **Search** — press `Ctrl+P` to quick-switch between notes, or open the AI panel (✦ button) for semantic search
200
+
201
+ ### CLI (for developers)
202
+
203
+ ```bash
204
+ # Step 1: Install
205
+ npm install -g stellavault
206
+
207
+ # Step 2: Setup (interactive wizard)
208
+ stellavault init
209
+ # → Asks for vault path → indexes all .md files → tests search
210
+
211
+ # Step 3: Daily use
212
+ stellavault search "machine learning" # Find notes
213
+ stellavault ingest paper.pdf # Add new knowledge
214
+ stellavault graph # Open 3D graph in browser
215
+ stellavault brief # Morning briefing
216
+ stellavault decay # What are you forgetting?
217
+
218
+ # Step 4: Connect to Claude
219
+ claude mcp add stellavault -- stellavault serve
220
+ # → Claude can now read your vault via MCP
221
+ ```
222
+
223
+ ### Obsidian Plugin
224
+
225
+ ```bash
226
+ # Step 1: Start the API server (keep running)
227
+ npx stellavault graph
244
228
 
245
- Your vault files are never modified. Stellavault is local-first — no data leaves your machine unless you explicitly use `--ai` (Anthropic API).
229
+ # Step 2: Install plugin
230
+ # Download main.js + manifest.json + styles.css from:
231
+ # https://github.com/Evanciel/stellavault-obsidian/releases/latest
232
+ # Place in: <vault>/.obsidian/plugins/stellavault/
233
+
234
+ # Step 3: Enable in Settings → Community Plugins → Stellavault
235
+
236
+ # Step 4: Use
237
+ # - Click brain icon (🧠) for semantic search
238
+ # - Cmd+Shift+D for memory decay panel
239
+ # - Cmd+Shift+L for learning path suggestions
240
+ ```
241
+
242
+ ### Quick Reference
243
+
244
+ | Action | Desktop | CLI | Obsidian |
245
+ |--------|---------|-----|----------|
246
+ | Search notes | Ctrl+P or AI panel | `stellavault search "query"` | 🧠 icon |
247
+ | Add a note | + Note button | `stellavault ingest "text"` | Normal editing |
248
+ | See 3D graph | ◉ button | `stellavault graph` | N/A |
249
+ | Check memory decay | AI panel → Memory | `stellavault decay` | Decay sidebar |
250
+ | Find duplicates | AI panel → Stats | `stellavault duplicates` | N/A |
251
+ | Generate draft | N/A (v0.2) | `stellavault draft "topic"` | N/A |
252
+ | Connect to Claude | N/A (v0.2) | `claude mcp add stellavault` | N/A |
253
+
254
+ ### Configuration
255
+
256
+ All settings live in `~/.stellavault.json`:
257
+
258
+ ```json
259
+ {
260
+ "vaultPath": "/path/to/your/notes",
261
+ "dbPath": "~/.stellavault/index.db",
262
+ "embedding": { "model": "local", "localModel": "all-MiniLM-L6-v2" },
263
+ "mcp": { "mode": "stdio", "port": 3333 }
264
+ }
265
+ ```
266
+
267
+ Run `stellavault doctor` anytime to check your setup.
268
+
269
+ ### Keyboard Shortcuts (Desktop)
270
+
271
+ | Shortcut | Action |
272
+ |----------|--------|
273
+ | `Ctrl+P` | Quick Switcher (fuzzy file search) |
274
+ | `Ctrl+Shift+P` | Command Palette (all actions) |
275
+ | `Ctrl+S` | Save current note |
276
+ | `Ctrl+B` | Toggle bold |
277
+ | `Ctrl+I` | Toggle italic |
278
+ | `Ctrl+E` | Toggle inline code |
279
+ | `[[` | Wikilink autocomplete |
280
+
281
+ ## Troubleshooting
282
+
283
+ ```bash
284
+ stellavault doctor # Check config, vault, DB, model, Node version
285
+ ```
286
+
287
+ Common issues:
288
+ - **"Command not found"** → Reinstall: `npm i -g stellavault@latest`
289
+ - **"API server not found"** → Start the server: `npx stellavault graph`
290
+ - **Empty graph** → Run `stellavault index` to re-index your vault
291
+ - **Slow first run** → The AI model downloads ~30MB on first use (one time only)
292
+
293
+ ## Security
246
294
 
247
- See [SECURITY.md](SECURITY.md) for full details.
295
+ Local-first — no data leaves your machine unless you explicitly use `--ai` (Anthropic API). Vault files are never modified. See [SECURITY.md](SECURITY.md).
248
296
 
249
297
  ## License
250
298
 
@@ -252,6 +300,7 @@ MIT — full source code available for audit.
252
300
 
253
301
  ## Links
254
302
 
303
+ - **[Download Desktop App](https://github.com/Evanciel/stellavault/releases/latest)**
255
304
  - [Landing Page](https://evanciel.github.io/stellavault/)
256
305
  - [Obsidian Plugin](https://github.com/Evanciel/stellavault-obsidian)
257
306
  - [npm](https://www.npmjs.com/package/stellavault)
package/SECURITY.md CHANGED
@@ -39,6 +39,29 @@ Stellavault is **local-first**. Your knowledge stays on your machine.
39
39
  - **URL validation**: Image URLs restricted to `https://` scheme
40
40
  - **SSRF protection**: Private/local IP addresses blocked for URL ingest
41
41
 
42
+ ## Desktop App Security (Electron)
43
+
44
+ - **Context Isolation**: enabled — renderer cannot access Node.js APIs
45
+ - **Sandbox**: enabled — renderer runs with reduced OS privileges
46
+ - **Node Integration**: disabled — no `require()` in renderer
47
+ - **IPC Allowlist**: explicit channel whitelist in preload (17 channels)
48
+ - **Path Validation**: all vault filesystem IPC handlers validate paths stay inside vault root
49
+ - **Auth Token**: API server generates per-session random token for all mutating endpoints
50
+ - **CSP**: strict Content Security Policy (no unsafe-eval in production)
51
+
52
+ ## Federation Security
53
+
54
+ - **Embeddings only**: original text never transmitted over the network
55
+ - **Buffer limits**: 1MB per connection, 64KB per message
56
+ - **Message validation**: schema checking on all incoming messages
57
+ - **Leave authentication**: leave messages only accepted from the owning connection
58
+ - **Differential privacy**: noise added to shared embeddings
59
+
60
+ ## Known Accepted Risks
61
+
62
+ - **LOW-03**: `data:` URIs allowed in desktop CSP for inline images in markdown editor
63
+ - **LOW-05**: Cloud sync uses Bearer token instead of AWS Signature v4 (R2-specific)
64
+
42
65
  ## Reporting Vulnerabilities
43
66
 
44
67
  Please report security issues to: https://github.com/Evanciel/stellavault/issues (label: security)