Skip to main content
Glama
README.md
# Vault Bridge

Bridge your AI assistant to local knowledge vaults — read, write, search, and manage notes without cloud dependencies.

**Default mode:** local stdio connector (no listening port). Vault content stays on the path you configure.

> **Non-technical readers (COLP / practice manager / firm IT):** start with [`CLIENT-README.md`](CLIENT-README.md) - install, privacy boundary, verify, uninstall, and support without developer jargon.

## Features

- **read_note** — Read a note with optional frontmatter parsing
- **write_note** — Write notes with YAML frontmatter support
- **list_notes** — List notes with glob filtering and recursion
- **search_notes** — Regex search across vault content
- **search_frontmatter** — Query notes by frontmatter key/value
- **get_daily_note** — Get or create daily notes with templates

## Installation (Windows — recommended)

**One command** from the product tree (UNSIGNED INTERNAL until Authenticode is available):

```powershell
powershell -ExecutionPolicy Bypass -File .\installer\Install-VaultBridge.ps1 -VaultPath "C:\Path\To\Your\Vault"
```

Silent (firm IT):

```powershell
powershell -ExecutionPolicy Bypass -File .\installer\Install-VaultBridge.ps1 -VaultPath "C:\Path\To\Your\Vault" -Quiet
```

Post-install smoke (JSON-RPC; fails loudly):

```powershell
powershell -ExecutionPolicy Bypass -File .\scripts\self_test.ps1 -VaultPath "C:\Path\To\Your\Vault"
```

Details: `installer\README.md`. Zero-egress proof pack: `proof-pack\README.md` (see also `proof-pack\DEMO-CHECKLIST.md`).

> **Signing:** builds produced without an Authenticode certificate are labelled **UNSIGNED INTERNAL**. See `proof-pack\SIGNING.md`.

### Advanced — pip / uv (developers)

```bash
pip install vault-bridge
# (some indexes may still show airgap-vault-bridge)
# or, from a checkout with uv.lock:
uv sync --frozen
```

## Usage

### CLI (Direct)
```bash
vault-bridge
```

### MCP Client Config (Claude Desktop, Cursor, VS Code)

Prefer the Private Desk / installer local path over `uvx` for air-gapped desks:

**Windows (requires full path to executable):**
```json
{
  "mcpServers": {
    "vault-bridge": {
      "command": "C:\\Users\\YOU\\AppData\\Local\\AirgapFleet\\vault-bridge\\bin\\vault-bridge.cmd",
      "env": {
        "OBSIDIAN_MCP_VAULT_PATH": "C:/path/to/vault",
        "OBSIDIAN_MCP_TRANSPORT": "stdio"
      }
    }
  }
}
```

**macOS/Linux (if on PATH):**
```json
{
  "mcpServers": {
    "vault": {
      "command": "vault-bridge",
      "env": {
        "OBSIDIAN_MCP_VAULT_PATH": "/path/to/vault"
      }
    }
  }
}
```

### DXT (Claude Desktop 1-Click)
Download `airgap-vault-bridge-1.0.2.dxt` from [Releases](https://github.com/airgap-fleet/vault-bridge/releases) → drag into Claude Desktop.

## Configuration

Runtime settings use the **`OBSIDIAN_MCP_`** environment prefix (see `src/obsidian_mcp/models.py`).

| Environment Variable | Default | Description |
|---------------------|---------|-------------|
| `OBSIDIAN_MCP_VAULT_PATH` | Current directory | Path to vault root |
| `OBSIDIAN_MCP_MAX_FILE_SIZE` | 10MB | Max file size for operations |
| `OBSIDIAN_MCP_DEFAULT_ENCODING` | utf-8 | Text encoding |
| `OBSIDIAN_MCP_INDEX_FRONTMATTER` | true | Parse YAML frontmatter |
| `OBSIDIAN_MCP_FOLLOW_SYMLINKS` | false | Follow symlinks |

## Tool Reference

### read_note
```json
{
  "path": "Projects/roadmap.md",
  "include_frontmatter": true
}
```

### write_note
```json
{
  "path": "Projects/new-idea.md",
  "content": "# New Idea\n\nDetails here...",
  "frontmatter": { "tags": ["idea", "draft"], "status": "wip" }
}
```

### list_notes
```json
{
  "path": "Projects",
  "glob_pattern": "**/*.md",
  "recursive": true
}
```

### search_notes
```json
{
  "pattern": "MCP",
  "path": ".",
  "max_results": 50
}
```

### search_frontmatter
```json
{
  "key": "status",
  "value": "done",
  "operator": "eq"
}
```

### get_daily_note
```json
{
  "date": "2026-08-21",
  "folder": "Daily Notes",
  "create_if_missing": true
}
```

## Windows-Specific Notes

- Preferred install path after Private Desk installer: `%LOCALAPPDATA%\AirgapFleet\vault-bridge\bin\vault-bridge.cmd` (avoid legacy Hermes venv paths for pilots)
- **Always use the full `.exe` path in MCP client configs on Windows** — bare commands like `vault-bridge` will fail with `ENOENT` because the venv Scripts folder is not on system PATH
- Use forward slashes in environment variable values (`C:/path/to/vault`) — they work fine in JSON
- Escape backslashes in JSON command paths (`C:\Users\...`)

## License

MIT

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation4/5

The tools are mostly distinct: read/write/list/search are clearly separated, and search_notes vs search_frontmatter are differentiated by search type. However, search_notes and search_frontmatter could be confused if an agent doesn't read carefully, though the descriptions clarify the distinction.

Naming Consistency4/5

Tool names follow a consistent verb_noun pattern (read_note, write_note, list_notes, search_notes, search_frontmatter, get_daily_note). The only minor deviation is get_daily_note, which uses 'get' instead of 'read' and includes a specific noun, but it's still predictable.

Tool Count5/5

Six tools is well-scoped for a vault-bridge server. Each tool covers a distinct core operation for interacting with an Obsidian vault, and none feel redundant or excessive.

Completeness4/5

The tool set covers the core note lifecycle: read, write, list, search, and daily note handling. Missing operations like delete_note or rename_note are minor gaps since agents can work around them, but the surface is largely complete for typical vault interactions.

Maintenance

ActivityMaintained
ResponsivenessNo issues