Sync Claude conversations to Obsidian markdown files
Project description
Claude Vault
Transform your Claude conversations into a searchable, organized knowledge base in Obsidian.
What is Claude Vault?
Claude Vault is a command-line tool that syncs your Claude AI conversations into beautifully formatted Markdown files that integrate seamlessly with Obsidian and other note-taking tools.
Features
- ✅ Local-first: Your conversations, your vault, your control
- ✅ Simple CLI: Easy to use, powerful features
- ✅ Bulk Historical Import: Import your entire Claude conversation history at once
- ✅ Obsidian-native: Full frontmatter, tags, and metadata support
- ✅ AI-Powered Tagging & Summarization: Automatic generation of tags and summaries using local LLMs (Ollama) - no API costs
- ✅ Auto-Sync with Watch Mode: Real-time syncing when conversation files change
- ✅ Semantic Search: AI-powered search by meaning, not just keywords
- ✅ Bi-directional sync: Rename and move files freely - they stay in sync
- ✅ Smart updates: Only syncs what's changed
- ✅ UUID tracking: Maintains file relationships even after renaming
- ✅ Cross-Conversation Search: Search across all conversations with context and navigate to related ones
- ✅ Smart Relationship Detection: Automatically finds and links related conversations via common tags
Key Features of the Code Parser
The JSONL parser handles:
- ✅ Session grouping - Groups messages by
sessionId - ✅ Tool results - Shows before/after state for tools
- ✅ Timestamps - Preserves message timing
- ✅ Summary as title - Uses the summary line as conversation title
- ✅ Code-specific tags - Adds 'code-session' tag to differentiate from web chats
How it Works
Claude Vault uses a modular architecture to handle different conversation formats:
- Format Detection: Automatically identifies if a file is a Web export (
.json) or Code History (.jsonl). - Parsing: specialized parsers (
messages.pyvscode_parser.py) extract messages, timestamps, and metadata. - Tagging & Summarization: If configured,
OfflineTagGeneratoruses a local LLM to analyze the conversation content, generating relevant tags and a concise summary. - Syncing: The
SyncEnginewrites markdown files to your Obsidian vault, updating only what has changed based on content hashing.
Prerequisites
- Python 3.8+
- Ollama (optional but recommended for AI tagging)
Install Claude Vault
# Clone or download the project
git clone https://github.com/MarioPadilla/claude-vault.git
cd claude-vault
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install in development mode
pip install -e .
# Verify installation
claude-vault --help
Test
python tests/test_parser.py
Install Ollama (Optional for AI tagging & semantic search)
# On macOS
brew install ollama
# Start ollama
ollama serve
# Pull a balanced model for tagging (quality/speed)
ollama pull llama3.2:3b
# Pull embedding model for semantic search (optional)
ollama pull nomic-embed-text
Quick Usage
1. Export Your Claude Conversations
- Go to claude.ai
- Click profile → Settings
- Export conversations (downloads
conversations.json)
2. Initialize Vault
# Navigate to your Obsidian vault
cd ~/Documents/ObsidianVault
# Initialize Claude Vault
claude-vault init
3. Sync Conversations
# Import all conversations
claude-vault sync ~/Downloads/conversations.json
Supported Formats
Claude Vault supports multiple Claude conversation sources:
- Claude Web Conversations (.json) - From claude.ai exports
- Claude Code History (.jsonl) - From Claude Code IDE integration
Both formats are automatically detected based on file extension, or you can specify with --source:
# Auto-detect format
claude-vault sync conversations.json
claude-vault sync code-history.jsonl
# Sync from entire .claude folder
claude-vault sync ~/.claude
# Explicit source
claude-vault sync export.json --source web
claude-vault sync export.jsonl --source code
4. Check Status
claude-vault status
Common Commands
# Search conversations
claude-vault search "python"
# Search with tag filter
claude-vault search "API" --tag code
# Regenerate tags with AI
claude-vault retag
# Verify vault integrity
claude-vault verify
# Clean up orphaned entries
claude-vault verify --cleanup
Auto-Sync with Watch Mode
Keep your vault automatically synced with Claude conversations in real-time:
Setup Watch Mode
# Add paths to watch
claude-vault watch-add ~/Downloads --source web
claude-vault watch-add ~/.claude --source code
# Start watching (stays in foreground with live updates)
claude-vault watch
# Or run in background
claude-vault watch &
Watch mode detects file changes in real-time and syncs automatically. No more manual sync commands!
Watch Mode Commands
# Check watch status
claude-vault watch-status
# Stop watch mode
claude-vault watch-stop
# Remove a watch path
claude-vault watch-remove ~/Downloads
How It Works
- Debouncing: Waits 2 seconds after file changes to handle editor auto-saves
- Throttling: Prevents excessive syncs (minimum 10 seconds between syncs per file)
- Smart Detection: Automatically detects Web (.json) vs Code (.jsonl) formats
- Error Handling: Continues watching even if individual syncs fail
Semantic Search
Find conversations by meaning, not just keywords:
Setup Semantic Search
# Install embedding model (first time only)
ollama pull nomic-embed-text
# Search semantically (default mode if Ollama is running)
claude-vault search "async programming"
Semantic search understands concepts - searching "asynchronous programming" will find conversations about "asyncio" even without exact keyword matches!
Search Modes
# Semantic search (AI-powered, finds by concept)
claude-vault search "machine learning" --mode semantic
# Keyword search (traditional exact matching)
claude-vault search "python" --mode keyword
# Auto mode (uses semantic if available, falls back to keyword)
claude-vault search "debugging" --mode auto
# Adjust similarity threshold (0.0-1.0, default 0.5)
claude-vault search "API" --mode semantic --threshold 0.7
How It Works
- First Search: Automatically generates embeddings for all conversations (one-time process)
- Subsequent Searches: Instant semantic search using cached embeddings
- Relevance Scores: Each result shows similarity score (0.0-1.0)
- Smart Chunking: Long conversations split into chunks for better accuracy
- Offline-First: All processing happens locally via Ollama (no external APIs)
Search Features
- Conceptual Matching: Finds related topics even with different terminology
- Context Preview: Shows relevant snippets from matching conversations
- Relevance Ranking: Results sorted by similarity score
- Hybrid Search: Combine semantic understanding with keyword precision
- Fallback Support: Auto-switches to keyword search if Ollama unavailable
Troubleshooting
"Ollama not running": Start with ollama serve. For semantic search, also run ollama pull nomic-embed-text
"Module not found:" Reinstall with pip install -e .
"Not initialized:" Run claude-vault init first
Configuration
Claude Vault supports global configuration for Ollama settings and custom keywords.
# View current configuration
claude-vault config
The config is stored in ~/.claude-vault/config.json. You can customize:
- Ollama Model: Change the model used for tagging (default:
llama3.2:3b) - Ollama URL: Change the Ollama API endpoint
- Custom Keywords: Add your own keywords for fallback tagging
Contributing
We welcome contributions! Please see CONTRIBUTING.md for details on how to set up the development environment and submit pull requests.
License
Claude Vault is available under a dual-license model:
🆓 Open Source License (AGPL-3.0)
Free for:
- ✅ Personal use
- ✅ Open source projects
- ✅ Educational purposes
- ✅ Research and academic use
- ✅ Non-commercial applications
Requirements under AGPL-3.0:
- Must disclose source code of any modifications
- Must keep the same license (AGPL-3.0)
- Must provide source code to users (including SaaS/network users)
- Any derivative work must also be licensed under AGPL-3.0
Perfect for: Developers, hobbyists, students, and open-source contributors who want to freely use and modify Claude Vault.
💼 Commercial License
Required for:
- ❌ Proprietary/closed-source applications
- ❌ Commercial SaaS products
- ❌ Enterprise deployments where source code disclosure is not desired
- ❌ Products that cannot comply with AGPL-3.0 copyleft terms
Benefits of Commercial License:
- ✅ Use Claude Vault in proprietary applications
- ✅ No obligation to disclose your source code
- ✅ Freedom from AGPL-3.0 copyleft requirements
- ✅ Priority support (optional)
- ✅ Custom modifications and consulting (optional)
Pricing: Contact me for a quote based on your use case.
📧 Contact: Github 📝 Subject: Claude Vault Commercial License Inquiry
❓ Which License Do I Need?
| Use Case | License Needed |
|---|---|
| Building an open-source tool | AGPL-3.0 (Free) ✅ |
| Learning/experimenting | AGPL-3.0 (Free) ✅ |
| Contributing to Claude Vault | AGPL-3.0 (Free) ✅ |
| Internal company tool (source shared with employees) | AGPL-3.0 (Free) ✅ |
| Commercial SaaS product | Commercial 💼 |
| Closed-source application | Commercial 💼 |
| Selling a product that includes Claude Vault | Commercial 💼 |
| Enterprise deployment (no source disclosure) | Commercial 💼 |
Still unsure? Contact me
Note: By using, modifying, or distributing Claude Vault without obtaining a commercial license, you agree to comply with the AGPL-3.0 terms.
CLI Commands
init
Initialize Claude Vault in the specified directory.
claude-vault init [VAULT_PATH]
Example:
claude-vault init
claude-vault init ~/Documents/my-vault
sync
Sync Claude conversations to markdown files.
claude-vault sync [EXPORT_PATH]
Examples:
claude-vault sync ~/Downloads/conversations.json
status
Show Claude Vault status and statistics.
claude-vault status
verify
Verify integrity of tracked conversations and optionally clean up mismatches.
claude-vault verify
Examples:
claude-vault verify
claude-vault verify --cleanup
search
Search across all conversations.
claude-vault search KEYWORD [OPTIONS]
Arguments:
KEYWORD- Search term (required)
Options:
--tag TEXT- Filter by tag--show-related / --no-show-related- Show related conversations (default: enabled)
Examples:
# Basic search
claude-vault search "python"
# Search with tag filter
claude-vault search "machine learning" --tag "ai"
# Search without showing related conversations
claude-vault search "debugging" --no-show-related
retag
Regenerate tags and summaries for conversations using AI.
claude-vault retag [OPTIONS]
Options:
--force- Regenerate all tags, even existing ones
Examples:
# Tag conversations without tags
claude-vault retag
# Force regenerate all tags
claude-vault retag --force
Requirements: Requires Ollama to be running with llama3.2:3b model installed.
Getting Help
Get help for any command:
claude-vault --help
claude-vault [COMMAND] --help
Examples:
claude-vault sync --help
claude-vault search --help
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_vault-0.5.0.tar.gz.
File metadata
- Download URL: claude_vault-0.5.0.tar.gz
- Upload date:
- Size: 43.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
969d5790c34868ccdc11b9c352098cebbcecf7bde6ccd6722587672c1204ad46
|
|
| MD5 |
3b2d1f2de325edb3a0fde805b9b00ef9
|
|
| BLAKE2b-256 |
22bf45149b088f7386de15c86292dce5a8be3fa5aafeb0192f8666fb31e31a5f
|
File details
Details for the file claude_vault-0.5.0-py3-none-any.whl.
File metadata
- Download URL: claude_vault-0.5.0-py3-none-any.whl
- Upload date:
- Size: 34.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
838389d90cf13945693c92c636e346fcd29a17a5b04167b514b8a6222d7f671a
|
|
| MD5 |
98664059caef5b55b2be6afd1aeaf6ef
|
|
| BLAKE2b-256 |
671c356e2c90fa6d32d733f5440857bdf058a9d9518d06f19c627d214645ebc9
|