{"id":32518126,"url":"https://github.com/epistates/turbovault","last_synced_at":"2026-04-08T03:01:00.371Z","repository":{"id":320589455,"uuid":"1082655174","full_name":"Epistates/turbovault","owner":"Epistates","description":"Markdown and OFM SDK w/ MCP server that transforms your Obsidian vault into an intelligent knowledge system","archived":false,"fork":false,"pushed_at":"2026-03-31T15:25:49.000Z","size":649,"stargazers_count":99,"open_issues_count":0,"forks_count":13,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-03T02:22:58.408Z","etag":null,"topics":["ai","markdown","mcp","mcp-server","ofm","rust"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Epistates.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"docs/security/mcp-scanner.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-24T15:04:04.000Z","updated_at":"2026-03-31T22:34:07.000Z","dependencies_parsed_at":"2026-04-08T03:00:41.919Z","dependency_job_id":null,"html_url":"https://github.com/Epistates/turbovault","commit_stats":null,"previous_names":["epistates/turbovault"],"tags_count":18,"template":false,"template_full_name":null,"purl":"pkg:github/Epistates/turbovault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epistates%2Fturbovault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epistates%2Fturbovault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epistates%2Fturbovault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epistates%2Fturbovault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Epistates","download_url":"https://codeload.github.com/Epistates/turbovault/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Epistates%2Fturbovault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31537791,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T16:28:08.000Z","status":"online","status_checked_at":"2026-04-08T02:00:06.127Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","markdown","mcp","mcp-server","ofm","rust"],"created_at":"2025-10-28T03:01:10.450Z","updated_at":"2026-04-08T03:01:00.298Z","avatar_url":"https://github.com/Epistates.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TurboVault\n\n[![Crates.io](https://img.shields.io/crates/v/turbovault.svg)](https://crates.io/crates/turbovault)\n[![Docs.rs](https://docs.rs/turbovault/badge.svg)](https://docs.rs/turbovault)\n[![License](https://img.shields.io/crates/l/turbovault.svg)](https://github.com/epistates/turbovault/blob/main/LICENSE)\n[![Rust 1.90+](https://img.shields.io/badge/rust-1.90%2B-orange.svg)](https://www.rust-lang.org/)\n\n**The ultimate Rust SDK and high-performance MCP server for Obsidian-flavored Markdown (.ofm) and standard .md vaults.**\n\nTurboVault is a dual-purpose toolkit designed for both developers and users. It provides a robust, modular **Rust SDK** for building applications that consume markdown directories, and a **full-featured MCP server** that works out of the box with Claude and other AI agents.\n\n---\n\n## Two Ways to Use TurboVault\n\n### 1. As a Rust SDK (For Developers)\nBuild your own applications, search engines, or custom MCP servers using our modular crates. TurboVault handles the heavy lifting of parsing `.md` and `.ofm` files, building knowledge graphs, and managing multi-vault environments.\n\n- **Modular Architecture**: Use only what you need (Parser, Graph, Search, etc.).\n- **High Performance**: Sub-100ms operations for most tasks.\n- **Extensible**: Easily build your own specialized MCP servers on top of our core logic.\n- **SOTA Standards**: Fully supports Obsidian-flavored Markdown (wikilinks, embeds, callouts).\n\n### 2. As a Ready-to-Use MCP Server (For Users)\nTransform your Obsidian vault into an intelligent knowledge system immediately. Connect TurboVault to Claude Desktop or any MCP-compatible client to gain **44 specialized tools** for your notes.\n\n- **Zero Coding Required**: Install the binary and point it at your vault.\n- **44+ Specialized Tools**: Searching, link analysis, health checks, and more.\n- **Multi-Vault Support**: Switch between personal and work notes seamlessly at runtime.\n\n---\n\n## Core Crates (The SDK)\n\nTurboVault is a modular system composed of specialized crates. You can depend on individual components to build your own tools:\n\n| Crate | Purpose | Docs |\n|-------|---------|------|\n| **[turbovault-core](crates/turbovault-core)** | Core models, MultiVault management \u0026 types | [![Docs.rs](https://docs.rs/turbovault-core/badge.svg)](https://docs.rs/turbovault-core) |\n| **[turbovault-parser](crates/turbovault-parser)** | High-speed .md \u0026 .ofm parser | [![Docs.rs](https://docs.rs/turbovault-parser/badge.svg)](https://docs.rs/turbovault-parser) |\n| **[turbovault-graph](crates/turbovault-graph)** | Link graph analysis \u0026 relationship discovery | [![Docs.rs](https://docs.rs/turbovault-graph/badge.svg)](https://docs.rs/turbovault-graph) |\n| **[turbovault-vault](crates/turbovault-vault)** | Vault management, file I/O \u0026 atomic writes | [![Docs.rs](https://docs.rs/turbovault-vault/badge.svg)](https://docs.rs/turbovault-vault) |\n| **[turbovault-tools](crates/turbovault-tools)** | 44+ MCP tool implementations | [![Docs.rs](https://docs.rs/turbovault-tools/badge.svg)](https://docs.rs/turbovault-tools) |\n| **[turbovault-batch](crates/turbovault-batch)** | Atomic batch operations | [![Docs.rs](https://docs.rs/turbovault-batch/badge.svg)](https://docs.rs/turbovault-batch) |\n| **[turbovault-export](crates/turbovault-export)** | Export \u0026 reporting (JSON/CSV/MD) | [![Docs.rs](https://docs.rs/turbovault-export/badge.svg)](https://docs.rs/turbovault-export) |\n| **[turbovault](crates/turbovault)** | Main MCP server binary / SDK orchestrator | [![Docs.rs](https://docs.rs/turbovault/badge.svg)](https://docs.rs/turbovault) |\n\n## Why TurboVault?\n\nUnlike basic note readers, TurboVault understands your vault's **knowledge structure**:\n\n- **Full-text search** across all notes with BM25 ranking\n- **Link graph analysis** to discover relationships, hubs, orphans, and cycles\n- **Vault intelligence** with health scoring and automated recommendations\n- **Atomic batch operations** for safe, transactional multi-file edits\n- **Multi-vault support** with instant context switching\n- **Runtime vault addition** — no vault required at startup, add them as needed\n\n### Powered by TurboMCP\n\nTurboVault is built on **[TurboMCP](https://github.com/epistates/turbomcp)**, a Rust framework for building production-grade MCP servers. TurboMCP provides:\n\n- **Type-safe tool definitions** — Macro-driven MCP tool implementation\n- **Standardized request/response handling** — Consistent envelope format\n- **Transport abstraction** — HTTP, WebSocket, TCP, Unix sockets (configurable features)\n- **Middleware support** — Logging, metrics, error handling\n- **Zero-copy streaming** — Efficient large payload handling\n\nThis means TurboVault gets battle-tested reliability and extensibility out of the box. Want to add custom tools? TurboMCP's ergonomic macros make it straightforward.\n\n## Quick Start\n\n### Installation\n\n**From crates.io**\n\n```bash\n# Minimal install (7.0 MB, STDIO only - perfect for Claude Desktop)\ncargo install turbovault\n\n# With HTTP server (~8.2 MB)\ncargo install turbovault --features http\n\n# With all cross-platform transports (~8.8 MB)\n# Includes: STDIO, HTTP, WebSocket, TCP (Unix sockets only on Unix/macOS/Linux)\ncargo install turbovault --features full\n\n# Binary installed to: ~/.cargo/bin/turbovault\n```\n\n**From source:**\n\n```bash\ngit clone https://github.com/epistates/turbovault.git\ncd turbovault\nmake release\n# Binary: ./target/release/turbovault\n```\n\n### Option 1: Static Vault (Recommended for Single Vault)\n\n```bash\nturbovault --vault /path/to/your/vault --profile production\n```\n\nThen add to `~/.config/claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"turbovault\": {\n      \"command\": \"/path/to/turbovault\",\n      \"args\": [\"--vault\", \"/path/to/your/vault\", \"--profile\", \"production\"]\n    }\n  }\n}\n```\n\n### Option 2: Runtime Vault Addition (Recommended for Multiple Vaults)\n\nStart the server without a vault:\n\n```bash\nturbovault --profile production\n```\n\nThen add vaults dynamically:\n\n```json\n{\n  \"mcpServers\": {\n    \"turbovault\": {\n      \"command\": \"/path/to/turbovault\",\n      \"args\": [\"--profile\", \"production\"]\n    }\n  }\n}\n```\n\nOnce connected to Claude:\n\n```\nYou: \"Add my vault at ~/Documents/Notes\"\nClaude: [Calls add_vault(\"personal\", \"~/Documents/Notes\")]\n\nYou: \"Search for machine learning notes\"\nClaude: [Uses search() across the indexed vault]\n\nYou: \"What are my most important notes?\"\nClaude: [Uses get_hub_notes() to find key concepts]\n```\n\n## What Can Claude Do?\n\n### Search \u0026 Discovery\n```\nYou: \"Find all notes about async Rust and show how they connect\"\nClaude: search() -\u003e recommend_related() -\u003e get_related_notes() -\u003e explain relationships\n```\n\n### Vault Intelligence\n```\nYou: \"What's the health of my vault? Any issues I should fix?\"\nClaude: quick_health_check() -\u003e full_health_analysis() -\u003e get_broken_links() -\u003e generate fixes\n```\n\n### Knowledge Graph Navigation\n```\nYou: \"What are my most important notes? Which ones are isolated?\"\nClaude: get_hub_notes() -\u003e get_isolated_clusters() -\u003e suggest connections\n```\n\n### Structured Note Creation\n```\nYou: \"Create a project note for the TurboVault launch with status tracking\"\nClaude: list_templates() -\u003e create_from_template() -\u003e write auto-formatted note\n```\n\n### Batch Content Operations\n```\nYou: \"Move my 'MLOps' note to 'AI/Operations' and update all links\"\nClaude: move_note() + batch operations -\u003e atomic multi-file update\n```\n\n### Link Suggestions\n```\nYou: \"Based on my vault, what notes should I link this to?\"\nClaude: suggest_links() -\u003e get_link_strength() -\u003e recommend cross-references\n```\n\n## 44 MCP Tools Organized by Category\n\n### File Operations (5)\n- `read_note` — Get note content with hash for conflict detection\n- `write_note` — Create/overwrite notes (auto-creates directories)\n- `edit_note` — Surgical edits via SEARCH/REPLACE blocks\n- `delete_note` — Safe deletion with link tracking\n- `move_note` — Rename/relocate with automatic wikilink updates\n\n### Link Analysis (6)\n- `get_backlinks` — All notes that link TO this note\n- `get_forward_links` — All notes this note links TO\n- `get_related_notes` — Multi-hop graph traversal (find non-obvious connections)\n- `get_hub_notes` — Top 10 most connected notes (key concepts)\n- `get_dead_end_notes` — Notes with incoming but no outgoing links\n- `get_isolated_clusters` — Disconnected subgraphs in your vault\n\n### Vault Health \u0026 Analysis (5)\n- `quick_health_check` — Fast 0-100 health score (\u003c100ms)\n- `full_health_analysis` — Comprehensive vault audit with recommendations\n- `get_broken_links` — All links pointing to non-existent notes\n- `detect_cycles` — Circular reference chains (sometimes intentional)\n- `explain_vault` — Holistic overview replacing 5+ separate calls\n\n### Full-Text Search (5)\n- `search` — BM25-ranked search across all notes (\u003c500ms on 100k notes)\n- `advanced_search` — Search with tag/metadata filters\n- `recommend_related` — ML-powered recommendations based on content similarity\n- `find_notes_from_template` — Find all notes using a specific template\n- `query_metadata` — Frontmatter pattern queries\n\n### Templates (4)\n- `list_templates` — Discover available templates\n- `get_template` — Template details and required fields\n- `create_from_template` — Render and write templated notes\n- `get_ofm_examples` — See all Obsidian Flavored Markdown features\n\n### Vault Lifecycle (7)\n- `create_vault` — Programmatically create a new vault\n- `add_vault` — Register and auto-initialize a vault at runtime\n- `remove_vault` — Unregister vault (safe, doesn't delete files)\n- `list_vaults` — All registered vaults with status\n- `get_vault_config` — Inspect vault settings\n- `set_active_vault` — Switch context between multiple vaults\n- `get_active_vault` — Current active vault\n\n### Advanced Features (12)\n- `batch_execute` — Atomic multi-file operations (all-or-nothing transactions)\n- `export_health_report` — Export vault health as JSON/CSV\n- `export_broken_links` — Export broken links with fix suggestions\n- `export_vault_stats` — Statistics and metrics export\n- `export_analysis_report` — Complete audit trail\n- `get_metadata_value` — Extract frontmatter values (dot notation support)\n- `suggest_links` — AI-powered link suggestions for a note\n- `get_link_strength` — Connection strength between notes (0.0–1.0)\n- `get_centrality_ranking` — Graph centrality metrics (betweenness, closeness, eigenvector)\n- `get_ofm_syntax_guide` — Complete Obsidian Flavored Markdown reference\n- `get_ofm_quick_ref` — Quick OFM cheat sheet\n- `get_vault_context` — Meta-tool: single call returns vault status, available tools, OFM guide\n\n## Real-World Workflows\n\n### Initialize Without a Vault\n\n```python\n# Server starts with NO vault required\nresponse = client.call(\"get_vault_context\")\n# Returns: \"No vault registered. Call add_vault() to get started.\"\n\nresponse = client.call(\"add_vault\", {\n    \"name\": \"personal\",\n    \"path\": \"~/Documents/Obsidian\"\n})\n# Auto-initializes: scans files, builds link graph, indexes for search\n```\n\n### Multi-Vault Workflow\n\n```python\n# Add multiple vaults\nclient.call(\"add_vault\", {\"name\": \"work\", \"path\": \"/work/notes\"})\nclient.call(\"add_vault\", {\"name\": \"personal\", \"path\": \"~/notes\"})\n\n# Switch context instantly\nclient.call(\"set_active_vault\", {\"name\": \"work\"})\nsearch_results = client.call(\"search\", {\"query\": \"Q4 goals\"})\n\nclient.call(\"set_active_vault\", {\"name\": \"personal\"})\nrecommendations = client.call(\"recommend_related\", {\"path\": \"AI/ML.md\"})\n```\n\n### Vault Maintenance \u0026 Repair\n\n```python\n# Quick diagnostic\nhealth = client.call(\"quick_health_check\")\nif health[\"data\"][\"score\"] \u003c 60:\n    # Deep analysis if needed\n    full_analysis = client.call(\"full_health_analysis\")\n\n# Find and fix issues\nbroken = client.call(\"get_broken_links\")\n# Process broken links...\n\n# Atomic bulk repair\nclient.call(\"batch_execute\", {\n    \"operations\": [\n        {\"type\": \"DeleteNote\", \"path\": \"old/deprecated.md\"},\n        {\"type\": \"MoveNote\", \"from\": \"old/notes.md\", \"to\": \"new/notes.md\"},\n        # ... more operations\n    ]\n})\n\n# Verify improvement\nclient.call(\"explain_vault\")  # Holistic view\n```\n\n### Content Discovery\n\n```python\n# Find what matters\nhubs = client.call(\"get_hub_notes\")  # Top concepts\norphans = client.call(\"get_dead_end_notes\")  # Incomplete topics\n\n# Deep search\nresults = client.call(\"search\", {\"query\": \"machine learning\"})\n\n# Explore relationships\nrelated = client.call(\"get_related_notes\", {\n    \"path\": \"AI/ML.md\",\n    \"max_hops\": 3\n})\n\n# Get suggestions\nsuggestions = client.call(\"suggest_links\", {\"path\": \"AI/ML.md\"})\n```\n\n## Performance Profile\n\n| Operation | Time | Notes |\n|-----------|------|-------|\n| `read_note` | \u003c10ms | Instant with caching |\n| `get_backlinks`, `get_forward_links` | \u003c50ms | Graph lookup |\n| `write_note` | \u003c50ms | Includes graph update |\n| `search` (10k notes) | \u003c100ms | Tantivy BM25 |\n| `quick_health_check` | \u003c100ms | Heuristic score |\n| `full_health_analysis` | 1–5s | Exhaustive, use sparingly |\n| `explain_vault` | 1–5s | Aggregates 5+ analyses |\n| Vault initialization | 100ms–5s | Depends on vault size |\n\n**Key insight**: Fast operations (\u003c100ms) for common tasks, slower operations (1–5s) for exhaustive analysis. Claude uses smart fallbacks.\n\n## Configuration Profiles\n\n| Profile | Use Case |\n|---------|----------|\n| `development` | Local dev with verbose logging |\n| `production` | Production with security auditing and optimized logging |\n| `readonly` | Read-only access for safe exploration |\n| `high-performance` | Large vaults (10k+ notes) with aggressive caching |\n\n## SDK and Server Implementation\n\nTurboVault is designed for two primary audiences: developers building on top of the **Rust SDK** and users looking for a **standalone MCP server**.\n\n### As a Standalone MCP Server\n\nThe quickest way to get started is using the pre-built binary. It's fully self-contained and optimized for performance:\n- **Link-time optimization** (LTO) for maximum speed\n- **Configurable transports** (STDIO, HTTP, WebSocket, TCP)\n- **Zero external dependencies** (just point it at your vault)\n\n```bash\n# Build the optimized binary\ncargo build --release --features full\n\n# Run it\n./target/release/turbovault --vault /path/to/vault --profile production\n```\n\n### As a Rust SDK (Library)\n\nThe core of TurboVault is a collection of modular crates. Use them to build your own search engines, knowledge management tools, or even **your own specialized MCP servers**.\n\n```rust\n// Use in your own Rust projects\nuse turbovault_core::MultiVaultManager;\nuse turbovault_vault::VaultManager;\nuse turbovault_tools::SearchEngine;\n\n#[tokio::main]\nasync fn main() -\u003e anyhow::Result\u003c()\u003e {\n    // 1. Initialize the MultiVault manager\n    let manager = MultiVaultManager::new();\n    \n    // 2. Add and initialize a vault (scans files, builds graph)\n    manager.add_vault(\"notes\", \"/home/user/notes\").await?;\n    \n    // 3. Perform high-level operations\n    let vault = manager.get_vault(\"notes\")?;\n    let results = vault.search(\"machine learning\")?;\n    \n    // 4. Use these components to build your own custom MCP server\n    // or integrate into existing Rust applications.\n    Ok(())\n}\n```\n\nEach crate is published to crates.io, so you can depend on individual components or the full stack.\n\n## Architecture\n\nBuilt as a modular Rust workspace:\n\n```\nturbovault-core        — Core types, MultiVaultManager, configuration\nturbovault-parser      — OFM (Obsidian Flavored Markdown) parsing\nturbovault-graph       — Link graph analysis with petgraph\nturbovault-vault       — Vault operations, file I/O, atomic writes\nturbovault-batch       — Transactional batch operations\nturbovault-export      — JSON/CSV/Markdown export\nturbovault-tools       — 44 MCP tool implementations\nturbovault-server      — CLI and MCP server entry point (binary)\n```\n\nAll crates are published to [crates.io](https://crates.io/crates/turbovault-core) for public use.\n\n## Obsidian Flavored Markdown (OFM) Support\n\nTurboVault fully understands Obsidian's syntax:\n\n- **Wikilinks**: `[[note]]`, `[[note|alias]]`, `[[note#section]]`, `[[note#^block]]`\n- **Embeds**: `![[image.png]]`, `![[note]]`, `![[note#section]]`\n- **Tags**: `#tag`, `#parent/child/tag`\n- **Tasks**: `- [ ] Task`, `- [x] Done`\n- **Callouts**: `\u003e [!type] Title`\n- **Frontmatter**: YAML metadata with automatic parsing\n- **Headings**: Hierarchical structure extraction\n\n## Security\n\n- **Path traversal protection** — No access outside vault boundaries\n- **Type-safe deserialization** — Rust's type system prevents injection\n- **Atomic writes** — Temp file → atomic rename (never corrupts on failure)\n- **Hash-based conflict detection** — `edit_note` detects concurrent modifications\n- **File size limits** — Default 5MB per file (configurable)\n- **No shell execution** — Zero command injection risk\n- **Security auditing** — Detailed logs in production mode\n\n## System Requirements\n\n- **Rust**: 1.90.0 or later\n- **OS**: Linux, macOS, Windows\n- **Memory**: 100MB base + ~80MB per 10k notes\n- **Disk**: Negligible (index is in-memory)\n\n## Building from Source\n\n```bash\ngit clone https://github.com/epistates/turbovault.git\ncd turbovault\n\n# Development build\ncargo build\n\n# Production build (optimized)\ncargo build --release\n\n# Run tests\ncargo test --all\n```\n\nOr use the Makefile:\n\n```bash\nmake build       # Debug build\nmake release     # Production build\nmake test        # Run tests\nmake clean       # Clean build artifacts\n```\n\n## Documentation\n\n[Docs](./docs/README.md)\n\n## Examples\n\n### Example 1: Search-Driven Organization\n\n```\nYou: \"What topics do I have the most notes on?\"\nClaude:\n  1. get_hub_notes() -\u003e [AI, Project Management, Rust, Python]\n  2. For each hub:\n     - get_related_notes() -\u003e related topics\n     - get_backlinks() -\u003e importance/connectivity\n  3. Report: \"Your core topics are AI (23 notes) and Rust (18 notes)\"\n```\n\n### Example 2: Vault Health Improvement\n\n```\nYou: \"My vault feels disorganized. Help me improve it.\"\nClaude:\n  1. quick_health_check() -\u003e Health: 42/100\n  2. full_health_analysis() -\u003e Issues: 12 broken links, 8 orphaned notes\n  3. get_broken_links() -\u003e List of specific broken links\n  4. suggest_links() -\u003e AI-powered link recommendations\n  5. batch_execute() -\u003e Atomic fixes\n  6. explain_vault() -\u003e New health: 78/100\n```\n\n### Example 3: Template-Based Content Creation\n\n```\nYou: \"Create project notes for Q4 initiatives\"\nClaude:\n  1. list_templates() -\u003e \"project\", \"task\", \"meeting\"\n  2. create_from_template(\"project\", {\n       \"title\": \"Q4 Planning\",\n       \"status\": \"In Progress\",\n       \"deadline\": \"2024-12-31\"\n     })\n  3. Creates structured note with auto-formatting\n  4. Returns path for follow-up edits\n```\n\n## Benchmarks\n\nM1 MacBook Pro, 10k notes, production build:\n\n- **File read**: \u003c10ms\n- **File write**: \u003c20ms\n- **Simple search**: \u003c50ms\n- **Graph analysis**: \u003c200ms\n- **Vault initialization**: ~500ms\n- **Memory usage**: ~80MB\n\n## Roadmap\n\n- [ ] Real-time vault watching (VaultWatcher framework ready)\n- [ ] Cross-vault link resolution\n- [ ] Encrypted vault support\n- [ ] Collaborative locking\n- [ ] WebSocket transport (beyond MCP stdio)\n\n## Contributing\n\nContributions welcome! Please ensure:\n\n- All tests pass: `cargo test --all`\n- Code formats: `cargo fmt --all`\n- No clippy warnings: `cargo clippy --all -- -D warnings`\n\n## License\n\nMIT License - See [LICENSE](LICENSE) for details\n\n## Links\n\n- **Repository**: https://github.com/epistates/turbovault\n- **Issues**: https://github.com/epistates/turbovault/issues\n- **MCP Protocol**: https://modelcontextprotocol.io\n- **Obsidian**: https://obsidian.md\n- **Related**: [TurboMCP](https://github.com/epistates/turbomcp)\n\n---\n\n**Get started now**: `./target/release/turbovault --profile production`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepistates%2Fturbovault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fepistates%2Fturbovault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fepistates%2Fturbovault/lists"}