Browser extension for Chrome and Firefox that connects to the Signet
daemon running on localhost:3850. Provides a popup mini dashboard,
highlight-to-remember functionality, and keyboard shortcuts for saving
web content directly to Signet memory.
Click the toolbar icon to open a compact dashboard showing:
- Daemon health status (healthy / degraded / offline)
- Daemon version
- Memory stats (total, embedded, pipeline queue)
- Searchable list of recent memories (hybrid search via
/api/memory/recall) - Quick links to the full dashboard and settings
Select text on any page, then save it to Signet via:
- Right-click context menu — "Remember with Signet"
- Keyboard shortcut —
Ctrl+Shift+S(Mac:Cmd+Shift+S)
Both trigger a floating save panel (shadow DOM isolated) where you can:
- Preview the selected text
- Add comma-separated tags
- Set importance (0.00 - 1.00 slider)
- View source metadata (page URL and title, captured automatically)
The memory is saved with source_type: "browser-extension" and
type: "fact".
Configure the extension via the settings page:
- Daemon URL — defaults to
http://localhost:3850 - Auth Token — optional, required only for team/hybrid auth mode
- Theme — auto (follows browser), dark, or light
- Registers the "Remember with Signet" context menu item
- Polls daemon health every 60 seconds via
/health - Updates toolbar badge (green = healthy, yellow = degraded, red = offline)
- Routes messages between popup, content script, and options page
Store distribution is coming soon. For now, install from the build output.
- Run
bun run build(see below) - Open
chrome://extensions/ - Enable Developer mode (top right)
- Click Load unpacked
- Select the
dist/chrome/directory
- Run
bun run build(see below) - Open
about:debugging#/runtime/this-firefox - Click Load Temporary Add-on
- Select
dist/firefox/manifest.json
cd surfaces/browser-extension
bun install
bun run build # Build both Chrome and Firefox targets
bun run build:chrome # Chrome only → dist/chrome/
bun run build:firefox # Firefox only → dist/firefox/
bun run dev # Watch mode (rebuilds on file changes)The build script (build.ts) uses Bun.build with ESM output
targeting browser. Firefox gets a modified manifest with
background.scripts instead of service_worker, plus
browser_specific_settings for gecko compatibility (min version 128).
Source maps are included. Output is minified in production builds and unminified in watch mode.
src/
├── background/
│ └── service-worker.ts # Context menu, health polling, badge, message routing
├── content/
│ ├── content.ts # Selection panel (shadow DOM), message handling
│ └── content.css # Content script styles
├── options/
│ ├── index.html # Settings page markup
│ └── options.ts # Daemon URL, auth token, theme config
├── popup/
│ ├── index.html # Popup markup (stats, search, memory list)
│ ├── popup.ts # Popup orchestrator
│ ├── popup.css # Popup styles
│ └── components/ # health-badge, memory-list, memory-stats, search-bar
├── shared/
│ ├── api.ts # Daemon API client (fetch-based)
│ ├── config.ts # chrome.storage config wrapper
│ ├── theme.ts # Theme resolution and application
│ └── types.ts # TypeScript interfaces
└── icons/ # Extension icons (16, 48, 128px)
Manifest V3. Permissions: storage, contextMenus, activeTab.
Host permission: http://localhost:3850/*.
Content script runs on all URLs at document_idle.
All settings are stored in chrome.storage.local and managed through
the options page (chrome://extensions → Signet → Options).
| Setting | Default | Description |
|---|---|---|
| Daemon URL | http://localhost:3850 |
Signet daemon HTTP address |
| Auth Token | (empty) | Bearer token for authenticated daemon instances |
| Theme | auto |
auto, dark, or light |
The extension communicates with these daemon endpoints:
| Endpoint | Method | Used By |
|---|---|---|
/health |
GET | Service worker health polling, popup health badge |
/api/status |
GET | Popup health badge (version display) |
/api/identity |
GET | Popup (agent identity) |
/api/memories |
GET | Popup recent memories list, stats |
/api/memory/recall |
POST | Popup search |
/api/memory/remember |
POST | Content script save panel |
/api/pipeline/status |
GET | Popup stats (pipeline queue) |