Privacy Policy
Last updated: 2026-07-04
- We collect nothing. No server, no analytics, no telemetry, no phone-home.
- Your API keys are encrypted with AES-256-GCM before storage in Chrome sync.
- Bookmark data leaves your device only when you start a categorization — and only to the provider you configured.
- We're open source — audit everything at the repo.
What data does BookmarkMind read?
- Your bookmark tree (
chrome.bookmarks) — titles, URLs, hierarchy. Read only when you click "Categorize All Bookmarks". - Open tab titles (
chrome.tabs) — to enrich stale bookmark titles with live ones during categorization. - Your provider API keys — encrypted before storing.
What data does BookmarkMind write?
Everything is stored via Chrome's storage APIs on your device:
storage.sync.providerKeys— keys, AES-256-GCM encrypted (PBKDF2 over a per-install random nonce).storage.sync.providerOrder— your fallback order.storage.sync.customProviders— custom endpoints (base URL + metadata, never keys).storage.sync.bookmarkMindSettings— preferences.storage.local.categorizationState— resume state for long runs.
What data leaves your device?
Only when you explicitly click "Categorize All Bookmarks", and only to the provider(s) you configured:
- Titles and URLs of your uncategorized bookmarks (in the LLM prompt).
- A sample of ~150 bookmark titles + URLs (once per run, to build the folder hierarchy).
- Optionally, live titles from your open tabs (if "enrich with live titles" is on).
- Your API key for the chosen provider (
Authorization: Bearerheader).
Nothing else. Ever.
What BookmarkMind does NOT do
- No analytics, heartbeats, or phone-home (there is no BookmarkMind server).
- No selling, sharing, or transferring your data to third parties.
- No advertising or targeting.
- No reading of sites you visit — unless you add that URL as a custom provider.
Third-party LLM providers
When you configure a provider, your bookmark titles + URLs + your API key are sent to that provider on each run. Each has its own privacy policy. For maximum privacy, use a localhost provider (Ollama, LM Studio, OmniRoute, LiteLLM).
| Provider | Tier | Base URL | Notes |
|---|---|---|---|
| Groq | Permanent free | api.groq.com | 30 RPM, 500K tokens/day. No card. |
| Cerebras | Permanent free | api.cerebras.ai | 1M tokens/day. 8K context on free. |
| Google Gemini | Permanent free | generativelanguage.googleapis.com | Prompts train models. Not in EU/UK/CH. |
| OpenRouter | Permanent free | openrouter.ai | 20+ :free models. 20 RPM / 50 RPD. |
| Mistral | Permanent free | api.mistral.ai | Experiment plan. Prompts train unless opted out. |
| HuggingFace | Permanent free | router.huggingface.co | Free with HF account. Cold starts 30s+. |
| Novita | Trial credits | api.novita.ai | $0.50 signup credit. 120+ models. |
| DeepSeek | Trial credits | api.deepseek.com | 5M tokens on signup, 30 days. |
| OpenAI | Trial credits | api.openai.com | Card required past trial. |
| LM Studio | Localhost | localhost:1234 | Local models. No key needed. |
| Ollama | Localhost | localhost:11434 | Set OLLAMA_ORIGINS for the extension. |
| LiteLLM | Localhost | localhost:4000 | Route anywhere via self-hosted proxy. |
| OmniRoute | Localhost | localhost:20128 | 60+ free models via local dev server. |
Host permission <all_urls>
Chrome asks for <all_urls> because you may configure any OpenAI-compatible endpoint — self-hosted proxies, corporate URLs, localhost. We cannot enumerate them upfront. BookmarkMind only calls endpoints you configure, never injects scripts, and never observes your browsing.
Data retention & your rights
- Delete: remove each provider in Options (clears encrypted keys), then uninstall (clears all local storage). Revoke keys at each provider's dashboard.
- Access: everything is visible in Chrome DevTools → Application → Storage → chrome.storage.
- Export bookmarks: Chrome bookmark manager (Ctrl+Shift+O) → Export.
Contact
- Bugs / security: github.com/chirag127/bookmark-mind-bs-ext/issues
- General:
chirag127@users.noreply.github.com - Source: github.com/chirag127/bookmark-mind-bs-ext