Skip to content

Glassy Companion

The Glassy Companion is a browser extension for Chrome, Firefox, Edge, and Opera that lets you capture web content — bookmarks, articles, screenshots, highlights, and page elements — directly into your Glassy library.

Current version: v2.13.0 (released July 22, 2026).

What you can do with Companion

  • One-keystroke capture — save bookmarks, full-page Markdown, region screenshots, and structured captures without leaving the page you're on.
  • Unified Save Card — a single progressive-disclosure form: the essentials (title, collection, tags, note, Save) stay visible; one tap on Smart capture expands content-type presets, visibility toggles, and an inline preview — no screen swap, no duplicated fields.
  • Smart Save with type presets — auto-detects content and offers four structured types: Article, Video, Repo, Bookmark. Type chips re-run the page interpreter on change so metadata is always fresh before you save.
  • Element picker — hover any page element, click to capture it as rich Markdown with the CSS selector persisted for re-captures.
  • Highlights from any page — select text → right-click → Save selection to Glassy. The source URL and a timestamp are captured automatically.
  • Offline queue — saves are queued in browser storage and synced when your server comes back. You never lose a capture.
  • Multi-account routing — pick which Glassy account a capture is written to, directly in the popup.
  • KB search — a dedicated KB 🧠 tab in the popup searches your Glassy knowledge base (bookmarks, notes, vault files) with debounced hybrid search and source filters.
  • Obsidian Bridge — when your Glassy server cannot reach Obsidian on 127.0.0.1:27124 (WSL2 / Docker Desktop on Windows), the extension proxies Obsidian requests for the server and pushes captures directly to your vault as Markdown files with YAML frontmatter.
  • MCP config snippets — Settings → Integrations shows copy-pasteable config snippets for Claude Desktop, Cursor, Windsurf, OpenCode, Hermes, Openclaw, Pi, and any other MCP-compatible client, with the live server URL.

Installation

Pick the install path that matches your browser:

Browser Install
Chrome / Edge / Opera / Brave / Arc Download the .zip from the latest GitHub release, extract, and load as an unpacked extension.
Firefox 121+ Install the signed .xpi from the same GitHub release, or open it through about:addons.
Inside Glassy Open app.glassy.fyi/#/extension — the authenticated extension page shows the live download link for your browser.

The Companion is also available from the in-app #/extension route on a self-hosted instance, where the download links reflect your server URL automatically.

What's new

v2.13.0 — July 22, 2026 — Obsidian Bridge MV3 reliability

A critical fix for Chrome MV3 service-worker eviction. Previously, Chrome could kill the service worker after ~30 seconds of inactivity, silently dropping the SSE connection that powers the Obsidian Bridge while the popup still showed "Bridge connected" (stale chrome.storage.local status).

  • SSE EventSource moved to a persistent offscreen document — Chrome does not evict offscreen documents, so the bridge stays alive indefinitely while the browser is open. A legacy connectSSEInServiceWorker() path is retained as a fallback for Firefox versions that lack the offscreen Documents API.
  • chrome.runtime.onSuspend handler — flips the bridge status to connected:false when the service worker is evicted, so the UI never shows a stale "connected" indicator.
  • Test Connection now tests the full bridge loop — both the SSE bridge to the server and the direct extension→Obsidian fetch. A green result confirms both legs; a yellow warning surfaces if the SSE bridge is offline while the direct fetch works.
  • Settings sync to server — on SSE onopen, the extension pushes its Obsidian URL to the server's users.obsidian_url column, eliminating drift between the web-app database and extension storage. The Obsidian API token never leaves the extension.
  • Membership gate removed from popup — the extension no longer does any client-side entitlement gating for glassy_keep. The server remains the single gatekeeper via requireKeep. This removes the "Unlock GlassyKeep" upsell wall for self-hosted admins (whose clear_lifetime tier is resolved server-side).
  • Softer entitlement toast — a 403 from the server now reads "Save unavailable — Saving from the extension requires a Pro plan. Manage your items in your Glassy workspace." instead of "Upgrade required."

Full release notes: github.com/0Reliance/glassy-companion/releases/tag/v2.13.0.

v2.12.0 — July 8, 2026 — Unified Save Card & Obsidian Bridge

  • Unified Save Card — Quick Save and Smart Save are merged into a single progressive-disclosure card. Essentials (title, collection, tags, note, Save) are always visible; one tap on Smart capture expands content-type presets, visibility toggles, and inline preview. No screen swap, no duplicated fields.
  • Obsidian Bridge — the extension acts as a local proxy between the Glassy server and Obsidian Local REST API. The server pushes proxy requests to the extension via SSE; the extension calls Obsidian on 127.0.0.1:27124 and returns the result. Bypasses WSL2 / Docker Desktop networking entirely.
  • Push-to-Obsidian — captures saved via the extension can be pushed directly to the vault as Markdown files with YAML frontmatter, with no server round-trip.
  • Cloud → self-host switching — changing the server URL in extension settings detects the change, prompts re-authentication, reconnects the Obsidian Bridge SSE, and invalidates caches.
  • Optional host permissions — declares optional_host_permissions for 127.0.0.1:27123/27124 so users can opt into localhost access for the Obsidian Bridge without widening the base permission set.
  • Firefox .xpi availability — signed .xpi builds are now published on every GitHub Release for Firefox users who prefer manual install.

Full release notes: github.com/0Reliance/glassy-companion/releases/tag/v2.12.0.

How the extension talks to your server

The extension is configured for one Glassy instance at a time. The server URL lives in extension settings — https://app.glassy.fyi for the public instance, https://clear.glassy.fyi for Clear, or your self-hosted URL.

  • Authentication — sign in with the same email and password you use in the web app. A JWT token persists in chrome.storage.local so you stay signed in across browser restarts.
  • Switching servers — change the URL in Settings. The extension detects the change, prompts you to re-authenticate, reconnects the Obsidian Bridge SSE, and invalidates caches.
  • Multi-account — open the popup account picker to choose which account a capture is written to. Captures no longer silently land in the wrong profile.

Capture pipeline (the short version)

Every capture — full page, highlight, element, screenshot — travels through the same reliable pipeline before it lands in your library. See the Capture Pipeline guide for the full walkthrough, including:

  • The Chrome offscreen-document / Firefox service-worker routing
  • The extractor quality gate (rejects navigation-heavy shells and falls back to a clean bookmark)
  • Premium Markdown formatting with metadata header
  • Screenshot upload as WebP to POST /api/ext/capture-image
  • Offline queue with O(n) flush (v2.5.0+)

When things go wrong

  • "Couldn't establish connection" errors — usually a content-script injection failure on the active tab. The extension's ensureContentScript() fallback retries before failing.
  • Captures queue but never sync — open Settings → Debug → Offline Queue. Check the server URL, the last error, and the attempt counter.
  • Obsidian Bridge shows offline — verify the URL and API token, click Test Connection. If only the SSE bridge is down, toggle the bridge off and on to re-establish it.
  • Server returns 403 on save — Companion no longer blocks saves client-side; this is a real server response. See Common Issues for the server-side reasons.

Learn more