Smart Vault Organizer

pending

by ZKDavis

AI-powered vault organizer with embeddings and intelligent link suggestions using local LLMs.

2 starsUpdated 1mo agoGPL-3.0Discovered via Obsidian Unofficial Plugins
View on GitHub

Smart Vault Organizer

An Obsidian plugin powered by Rust/WebAssembly that uses local LLMs to intelligently organize your notes with semantic embeddings, AI-powered link suggestions, contextual chat, and smart formatting tools.

Development included the use of LLMs.

Features

Link Suggestions

  • Semantic Embeddings - Generate embeddings for your vault using local LLMs (Ollama)
  • LLM Reranking - AI ranks suggestions by relevance with explanations
  • Sidebar Panel - View and manage suggestions for the current note
  • Ignore System - Hide unwanted suggestions permanently

Smart Chat

  • Context-Aware Q&A - Ask questions about your current note
  • RAG Integration - Automatically retrieves relevant notes from your vault
  • Agentic Tools - Execute actions: perform semantic comparisons, insert generated text directly into notes, summaries, and outlines

Smart Formatting

  • Grammar Check - Get writing improvement suggestions
  • Zettelkasten Structure - Analyze note structure and get recommendations
  • Flashcard Generation - Auto-generate flashcards from note content
  • Tag Suggestions - AI-recommended tags based on content

Smart Organization

  • Folder Recommendations - AI suggests where to file your notes
  • Confidence Scoring - Multiple candidates ranked by relevance

Handwritten Notes (Vision)

  • Watch Folder - Auto-process images in Inbox/Handwritten
  • Multi-Page Support - Stitch up to 5 pages together
  • OCR with Vision Models - Extract text from handwritten notes
  • Image Enhancement - Pre-processing for better accuracy

Prerequisites

  1. Rust & Cargo (latest stable)

    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
    
  2. wasm-pack

    cargo install wasm-pack
    
  3. Node.js (v16+) - nodejs.org

  4. Ollama - ollama.ai

    ollama pull nomic-embed-text
    ollama pull ministral-3:3b
    

Installation

Build from Source


### Install from Community Plugins

1. Open **Settings** > **Community Plugins**
2. Turn off **Safe Mode**
3. Click **Browse** and search for **Smart Vault Organizer**
4. Click **Install** -> **Enable**

### Build from Source

```bash
cd /path/to/your/vault/.obsidian/plugins
git clone https://github.com/zkdavis/obsidian-smart-vault.git smart-vault-organizer
cd smart-vault-organizer
npm install
npm run build

Install to Vault

Copy files

mkdir -p /path/to/vault/.obsidian/plugins/smart-vault-organizer
cp main.js manifest.json styles.css /path/to/vault/.obsidian/plugins/smart-vault-organizer/
cp -r pkg /path/to/vault/.obsidian/plugins/smart-vault-organizer/

Symlink (for development)

# macOS/Linux
ln -s /path/to/obsidian_app /path/to/vault/.obsidian/plugins/smart-vault-organizer

# Windows (PowerShell as Admin)
New-Item -ItemType SymbolicLink -Path "C:\vault\.obsidian\plugins\smart-vault-organizer" -Target "C:\path\to\obsidian_app"

Enable in Obsidian

  1. Settings → Community Plugins → Disable Safe Mode
  2. Reload plugins
  3. Enable "Smart Vault Organizer"

Quick Start

  1. Configure - Settings → Smart Vault Organizer

    • Verify Ollama endpoint (http://localhost:11434)
    • Set embedding model (nomic-embed-text)
    • Set LLM model (ministral-3:3b)
  2. Scan Vault - Command Palette → Smart Vault: Scan vault for embeddings

  3. Get Suggestions - Open any note and click the brain icon in the ribbon

Configuration

SettingDescriptionDefault
Ollama EndpointURL of Ollama serverhttp://localhost:11434
Embedding ModelModel for embeddingsnomic-embed-text
LLM ModelModel for rerankingministral-3:3b
Chat ModelModel for Smart Chatministral-3:3b
Formatting ModelModel for Smart Formattingministral-3:3b
Organization ModelModel for Smart Organizationministral-3:3b
Vision ModelModel for handwritten notesministral-3:3b
Similarity ThresholdMinimum score (0-1)0.7
Max SuggestionsSuggestions to show5
Max Content LengthCharacters for embeddings2000
LLM RerankingEnable AI rankingtrue
LLM Candidate CountCandidates sent to LLM5
LLM TemperatureReranking randomness0.3
Chat TemperatureChat creativity0.7
LLM TimeoutRequest timeout (ms)30000
LLM ConcurrencyParallel requests during scan3
Thinking ModeChain-of-thought for qwen3/deepseekfalse
Keyword ExtractionExtract keywords for matchingtrue
Handwritten InboxWatch folder for imagesInbox/Handwritten
Transcript FolderOutput folder for transcriptsInbox

Documentation

See the docs/ folder for detailed guides:

Development

Project Structure

src/
├── main.ts                 # Entry point
├── plugin/
│   ├── SmartVaultPlugin.ts # Core plugin
│   ├── cache/              # Cache management
│   └── scanning/           # Vault scanning, file processing
├── ui/
│   ├── LinkSuggestionView.ts # Main sidebar panel
│   └── tabs/               # Smart Chat, Formatting, Organization tabs
├── settings/               # Settings UI and types
├── llm/                    # LLM reranking service
├── suggest/                # Inline autocomplete
├── lib.rs                  # Rust: similarity calculations
├── llm.rs                  # Rust: LLM integration
└── links.rs                # Rust: link detection

Commands

npm run build         # Full build (WASM + TypeScript)
npm run build:wasm    # Build Rust/WASM only
npm run build:plugin  # Build TypeScript only
npm run dev           # Watch mode
npx tsc --noEmit      # Type check

Recommended Models

ModelUse CaseSize
nomic-embed-textEmbeddings (fast, quality)768-dim
mxbai-embed-largeEmbeddings (higher quality)1024-dim
ministral-3:3bAll tasks (default)3B

Troubleshooting

Plugin won't load

  • Check Developer Console (Ctrl+Shift+I) for errors
  • Verify all files exist: main.js, manifest.json, styles.css, pkg/

"Failed to initialize WASM module"

  • Ensure pkg/ directory contains .wasm file
  • Run npm run build again

No suggestions appearing

  • Run vault scan first
  • Check Ollama is running: ollama list
  • Lower similarity threshold in settings

LLM timeout errors

  • Increase timeout in settings (up to 120s)
  • Use a faster model
  • Reduce LLM candidate count

Contributing

Contributions welcome! Please ensure:

  • Rust code passes cargo clippy
  • TypeScript follows existing style
  • Test with a real Obsidian vault

Support

If you find this plugin useful, please consider supporting development:

License

MIT License - See LICENSE file

Acknowledgments

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.