Obsidian Vault Integration¶
Connect your existing Obsidian vault to Glassy and extend it with web capture, AI workflows, AI agent access, and mobile access.
Info
June 2026 — AI agent context: The Obsidian integration is a foundational pillar of Glassy’s MCP (Model Context Protocol) roadmap. Vault files become first-class context for any AI assistant or agent — Claude, Cursor, Windsurf, OpenCode, Hermes, Openclaw, Pi, or any MCP-compatible tool can query your vault semantically without leaving their interface. Your Obsidian vault becomes the memory layer for every AI you use.

The Local REST API connection, with the extension bridge for Docker and Windows.
What You Get¶
- Vault Browser — Navigate your entire vault with folder tree, markdown preview, and wiki-link rendering
- Universal Search — Full-text search across your vault from Glassy, plus JsonLogic structured queries (tags, dates, frontmatter)
- Bi-Directional Push/Pull — Push Glassy notes to your vault as markdown files; pull vault files into Glassy as rich notes; bulk ZIP import/export
- Surgical Editing — Append, prepend, or replace specific headings, blocks, or frontmatter fields without rewriting entire files
- Daily Note Integration — View and quick-append to today's daily note from your dashboard; surgically patch specific sections
- AI Context — Your AI assistant reads both Glassy notes and vault search results for grounded responses
- One-Click Open — Open any vault file directly in the Obsidian UI from Glassy
- Connection Diagnostics — Built-in tool to test HTTPS and HTTP reachability with actionable fix recommendations
- Certificate Download — Download the plugin's self-signed certificate for OS/browser trust store installation
Connection Methods¶
Glassy supports three ways to reach your Obsidian vault, ranked by reliability:
- Browser Extension Bridge (recommended) — The Glassy Capture extension runs on your computer and proxies Obsidian requests for the server via an authenticated SSE connection. Works on all platforms, including Windows/WSL2. Zero networking workarounds. On cloud deployments (
app.glassy.fyi,clear.glassy.fyi) this is the only path — the cloud server cannot reach127.0.0.1on your machine at all, so the extension is the sole route to your vault. - Direct server → localhost — The Glassy server connects directly to Obsidian on
127.0.0.1:27124. Works on native Linux/macOS self-hosts and Docker on Linux. Fails on Docker Desktop for Windows (WSL2) because the container's loopback ≠ the Windows host's loopback. Not available on cloud. - Network allowlist — For split-machine setups (Obsidian on a different computer), set
OBSIDIAN_NETWORK_ALLOWLISTto the Obsidian host's IP/hostname. Requires the plugin to bind to0.0.0.0instead of127.0.0.1. Self-host only.
Which method should I use?¶
| Your setup | Recommended method |
|---|---|
Cloud (app.glassy.fyi or clear.glassy.fyi) |
Browser extension bridge (the only path — cloud cannot reach localhost) |
| Self-host on Windows + Docker Desktop (WSL2) | Browser extension bridge |
| Self-host on Linux or macOS (native or Docker) | Direct server → localhost (works out of the box) |
| Obsidian on a different machine than Glassy | Network allowlist (self-host only) |
Vault ZIP import works everywhere
Live sync requires a self-hosted Glassy instance (or the browser extension bridge on cloud). But you can import a vault ZIP on any deployment — cloud included — to pull your vault content into Glassy for search and AI context. Live bidirectional sync is what requires either self-hosting or the bridge.
Prerequisites¶
- Obsidian installed on your computer
- A local vault you want to connect
- Obsidian Local REST API plugin v4.0 or later installed and enabled
- Glassy account (free or Pro)
Cloud deployment limitation
Live Obsidian sync requires a self-hosted Glassy instance. The cloud
server (at app.glassy.fyi or clear.glassy.fyi) cannot reach
127.0.0.1 on your machine — this is a fundamental network limitation.
On cloud deployments, the Obsidian settings panel shows a banner explaining
this and linking to the download page
for self-hosting instructions.
You can still import a vault ZIP on cloud deployments — live sync is the only feature that requires self-hosting. See Self-Hosting Glassy for setup instructions.
Setting Up¶
Step 1: Install the Local REST API Plugin¶
In Obsidian: 1. Open Settings → Community Plugins 2. Turn off Safe mode if prompted 3. Click Browse and search for Local REST API 4. Install the plugin by coddingtonbear, then click Enable
Step 2: Configure the Plugin¶
- Open Settings → Local REST API & MCP Server in Obsidian
- Make sure the server is running — you should see your API key displayed
- For reliable connectivity (especially from PWAs and browsers): turn on Enable HTTP server. This adds a plain HTTP endpoint at port
27123. - Note the HTTPS URL — it will be
https://127.0.0.1:27124by default - Copy the API Key shown in the plugin settings
Step 3: Connect to Glassy¶
- Open Glassy in your browser
- Navigate to Settings → Obsidian section
- Paste the URL (
https://127.0.0.1:27124— orhttp://127.0.0.1:27123if you enabled the HTTP server) - Paste the API Key
- Click Test Connection — you'll see the connection status with plugin version info
- If the test fails, click Run Diagnostics to check both HTTPS and HTTP reachability with actionable fix recommendations
- Click Save
Info
Auto fallback: Glassy automatically retries via HTTP (port 27123) if HTTPS fails with a certificate error. Your vault stays on your computer — Glassy creates a local-only secure connection without uploading your files to the cloud.
Step 4 (optional, recommended): Enable the Browser Extension Bridge¶
If you're self-hosting on Windows/WSL2, or want the most reliable connection, enable the browser extension bridge:
- Install the Glassy Capture browser extension (Chrome or Firefox)
- Click the extension icon → Settings (gear icon)
- Scroll to the Obsidian Bridge section
- Toggle it on — your browser will ask for permission to access
127.0.0.1:27123/27124; click Allow - Enter your Obsidian URL (
https://127.0.0.1:27124) and API Key - Click Test Connection — you should see "✓ Connected" with the plugin version
- Click Save
The extension now maintains a persistent connection to the Glassy server and proxies Obsidian requests on your behalf. The Settings → Obsidian panel in the Glassy web UI will show "Browser extension bridge active" when connected.
Tip
The extension bridge also enables push-to-Obsidian — captures saved via the extension are automatically pushed to your vault as markdown files.
Features¶
Vault Browser¶
View all your Obsidian notes directly in Glassy. Navigate folders, preview content, and open notes in your connected vault.
Vault tab (extension side, v2.15.0+)¶
The Glassy Capture extension adds a dedicated Vault tab that mirrors much of the vault browser from inside the popup — no need to keep the Glassy web app open:
- Browse your vault — folder tree with breadcrumb navigation; tap a file to read it with rendered markdown (sanitized server-side), backlink count, and tags metadata.
- Open in Obsidian — jump straight from the popup to the file in the Obsidian desktop app.
- Today's Note — quick-append to your daily note without leaving the page you're on (Shift+Enter). If no daily note exists yet, the first append creates it.
- New Note composer — title + markdown body, saved as a Glassy note and pushed to the vault as a
.mdfile. - "Related in your vault" panel — on the Save tab, a collapsible panel surfaces related vault content (debounced search) when you save a bookmark. Click a result to open it in Obsidian.
- Tag bridge — vault tags merge into the tag autocomplete alongside Glassy tags, with source badges. Nested Obsidian tags (
type/reference) are preserved on persist. - Capture controls — an auto-push toggle and a configurable clips folder (default
Glassy/Clips/) in Settings → Obsidian Bridge.
The Vault tab uses existing server endpoints through the bridge — no new server code, no new permissions.
Push and Pull¶
- Push to Vault — Send individual Glassy notes to your vault as formatted markdown files with YAML frontmatter
- Pull from Vault — Import individual vault files into Glassy as rich notes
- Bulk Export — Export all your Glassy notes (or filter by tag) as a ZIP of Obsidian-flavored markdown
- Bulk Import — Import a ZIP of markdown files into Glassy
Daily Notes¶
Your Obsidian daily note appears on your Glassy dashboard as a compact widget. Quick-append thoughts by typing and hitting Enter — they appear in your daily note instantly. Use the patch feature to surgically append to a specific heading (e.g., "## Tasks") without opening Obsidian.
Section-Level Editing (Patch)¶
Make targeted edits to vault files without rewriting them. Append, prepend, or replace content under a specific heading, block reference, or frontmatter field. This is ideal for:
- Adding a task under ## Tasks in your daily note
- Updating a status: draft frontmatter field to status: done
- Prepending a note to the top of a section
Open in Obsidian¶
Click Open in Obsidian from any vault file in Glassy to jump directly to that file in the Obsidian editor.
Universal Search¶
Search everything—not just Glassy notes, but your entire vault content. Use AI to find information semantically.
Security¶
- Vault files never leave your computer — all connections are local-only (loopback)
- Connection is authenticated via an API key generated by the plugin
- Glassy proxies all requests through its server — the browser never talks directly to the plugin
- SSRF protection restricts outbound requests to known local hosts only (
localhost,127.0.0.1,::1,host.docker.internal) - Self-hosted operators can add additional internal hosts via
OBSIDIAN_NETWORK_ALLOWLIST(comma-separated) - Self-signed TLS certificates are tolerated on known Obsidian hosts; the cert can be downloaded and trusted from the settings page
- Docker deployments automatically rewrite loopback to
host.docker.internal - Browser extension bridge — when enabled, the extension holds the Obsidian API key locally (never sent to the server), and the server only sends proxy requests to the extension via an authenticated SSE connection. The extension calls Obsidian on
127.0.0.1directly and returns the result. The server never sees the Obsidian API key when the bridge is active.
Info
Push and pull are individual operations — Glassy pushes or pulls one note at a time, not continuous background sync. To keep a file in sync, push it after editing in Glassy or pull the latest version from the vault.
Troubleshooting¶
Connection Refused¶
- Ensure Obsidian is open and running on your computer
- Confirm the Local REST API plugin is enabled and shows as running
- Click Run Diagnostics in Glassy settings — it tests both HTTPS and HTTP, reports latencies, and gives specific fix recommendations
- If HTTPS fails: Glassy auto-falls-back to HTTP if you enabled the HTTP server in the plugin. Try using
http://127.0.0.1:27123as your URL. - If the self-signed certificate is rejected: click download the certificate from the settings page and install it in your OS/browser trust store
- Docker users: if Glassy is running in a container, set
OBSIDIAN_HOST_OVERRIDE=host.docker.internal— Glassy handles the loopback rewrite automatically - Ensure your plugin is v4.0 or later — open the plugin page in Obsidian and check the version. v4.0+ includes HTTP fallback, MCP server, and stale connection fixes.
Windows + WSL2 + Docker Desktop¶
If you're running Glassy in Docker Desktop on Windows (which uses WSL2), the host.docker.internal bridge may not reach Obsidian on the Windows host. This is because the WSL2 virtual network namespace is separate from the Windows host's loopback. Run Diagnostics in Glassy settings — it detects this environment and gives specific recommendations.
Fix option 1 (recommended): Glassy browser extension bridge
Install the Glassy Capture browser extension (v2.15.0+ recommended), enable the Obsidian Bridge in extension settings, and enter your Obsidian URL + API key. The extension runs in your browser on the Windows host, where it can reach 127.0.0.1:27124 directly — no WSL2 networking required. Glassy routes Obsidian requests through the extension when it's connected.
Fix option 2: LAN IP + network allowlist
- In the Obsidian Local REST API plugin settings, change the binding host from
127.0.0.1to0.0.0.0(so it accepts connections from the WSL2 bridge) - Find your Windows LAN IP (e.g.
192.168.1.10) viaipconfigin Command Prompt - Set
OBSIDIAN_NETWORK_ALLOWLIST=192.168.1.10in your Glassy.env - Use
http://192.168.1.10:27123as your Obsidian URL in Glassy settings
Warning
Binding the Obsidian plugin to 0.0.0.0 exposes it to your entire LAN. Only do this on a trusted network or behind a firewall. The browser extension bridge (option 1) is safer because it doesn't expose Obsidian to the network at all.
Fix option 3: Tailscale
If you use Tailscale, set OBSIDIAN_NETWORK_ALLOWLIST to your Windows machine's Tailscale IP (100.x.x.x) and use that as the Obsidian URL. This works because Tailscale IPs are reachable from the WSL2 container.
Empty Vault Browser¶
- Verify the vault path in Obsidian plugin settings
- Check that your vault contains
.mdfiles - Click Refresh in the Vault Browser toolbar
Bridge cycles between connected and disconnected every ~60 seconds¶
This is a known pattern with a server-side root cause, fixed in glassy-dash v2.35.0-beta.11 and Glassy Capture v2.15.0.
- Root cause (server-side):
obsidianBridgeRegistry.jshad a race condition. When the extension reconnected (e.g. after Chrome MV3 evicted the offscreen document), the server closed the old SSE and registered the new one. But the old SSE'sreq.on('close')handler fired asynchronously after the new connection was registered, andunregisterConnection(userId)blindly deleted whatever was in the map — nuking the new connection. The registry then showed disconnected even though the new SSE was alive, so the bridge reconnected again ~60s later, repeating the cycle. - The fix:
registerConnection()now returns a uniqueconnectionId(UUID);unregisterConnection(userId, connectionId)only removes the connection if the IDs match. The SSE route captures the connectionId and passes it to its close/error handlers. 4 new tests cover the race, the return value, the legacy path, and the no-op case. - Extension-side companion fix: the SW heartbeat monitor moved from
setInterval(which dies when Chrome evicts the service worker) tochrome.alarms(which survives eviction and wakes the SW on fire). The offscreen doc sends a heartbeat every 15s; the 30sBRIDGE_RECONNECT_ALARMcallscheckHeartbeat()on every tick and recreates the offscreen doc after 2+ missed heartbeats. - What it is NOT: this is not a Chrome MV3 offscreen-eviction issue. Chrome's
WORKERSoffscreen reason has no built-in lifetime restriction. The original diagnosis blamed the client; the real bug was a server-side async close-handler race.
Action: update the server image to v2.35.0-beta.11+ and the extension to v2.15.0+. If server logs showed 401 Invalid or expired SSE ticket, that was a separate beta.9 fix (two routers ran auth twice, consuming the one-time SSE ticket on the first run; the extension silently fell back to the less-secure ?token=<JWT> URL form).
Plugin Version Warning¶
If Glassy reports your plugin is outdated (below v4.0), you'll see a warning in the settings page. Upgrade by going to Settings → Community Plugins → Local REST API → Update in Obsidian. v4.0+ is strongly recommended for reliable connectivity.
Disconnecting¶
To disconnect your vault:
- Go to Settings in Glassy
- In the Obsidian section, toggle the switch off
- Click Save (or the save footer if using the Settings shell)
Info
Your vault remains intact in Obsidian. Disconnecting only removes the Glassy connection. Your Obsidian plugin continues running normally.
Related¶
- For programmatic access, use the MCP server or Obsidian Bridge
- For search across your vault, use the Universal Search feature in the dashboard
- For daily note workflows, see the Workflows track on Glassy Learn
Glassy + Obsidian + AI Agents — the bigger picture¶
Obsidian’s Local REST API plugin exposes your vault as a local HTTP/HTTPS service. Glassy proxies that service from its server, adding:
- Semantic search — vector embeddings index your vault content alongside notes and bookmarks
- Workspace-aware AI — the AI assistant’s context broker already reads vault search results to ground its answers
- MCP knowledge server (roadmap) — vault files will become one of five source types in the unified
corpusIndexer, queryable by any MCP-compatible AI agent
The competitive gap this fills: every alternative (Recall, memory-sqlite, standalone Obsidian MCP servers) requires a separate install, a separate database, or a separate API key. Glassy ships the app + browser extension + Obsidian bridge as a single product. When an AI agent like Claude, Cursor, Windsurf, OpenCode, Hermes, Openclaw, Pi, or any MCP-compatible client asks “What did I read last week about Rust ownership?”, Glassy can answer from web captures, notes, and vault files in one query.
For self-hosters and privacy-conscious users¶
This architecture is intentionally local-first:
- Vault files never leave your disk—all Obsidian connections are local-only (loopback)
- SSRF protection prevents the server from making unauthorized outbound requests
- The MCP server will use the same
apiKeyServicealready protecting the REST API - You control which sources are indexed and queried