{"id":50804985,"url":"https://github.com/mrkpatchaa/deepmarks","last_synced_at":"2026-06-13T00:04:11.386Z","repository":{"id":357599258,"uuid":"1237613332","full_name":"mrkpatchaa/deepmarks","owner":"mrkpatchaa","description":"Deepmarks — AI-Enhanced Local Bookmark Manager","archived":false,"fork":false,"pushed_at":"2026-05-31T22:06:22.000Z","size":283,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-01T00:08:58.051Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mrkpatchaa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-13T10:46:20.000Z","updated_at":"2026-05-31T22:06:26.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mrkpatchaa/deepmarks","commit_stats":null,"previous_names":["mrkpatchaa/deepmarks"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mrkpatchaa/deepmarks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkpatchaa%2Fdeepmarks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkpatchaa%2Fdeepmarks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkpatchaa%2Fdeepmarks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkpatchaa%2Fdeepmarks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mrkpatchaa","download_url":"https://codeload.github.com/mrkpatchaa/deepmarks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mrkpatchaa%2Fdeepmarks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34266919,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-13T00:04:10.460Z","updated_at":"2026-06-13T00:04:11.369Z","avatar_url":"https://github.com/mrkpatchaa.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deepmarks\n\n**Local-first AI bookmark manager** — search, classify, and query your bookmarks with AI. Zero data leaves your machine.\n\n## Features\n\n- **Full-text search** across all Chrome bookmarks via FlexSearch (\u003c 200ms on 10,000 bookmarks)\n- **Automatic classification** into built-in or custom categories using offline regex rules or BYOK LLM (OpenAI / Anthropic / Gemini / Ollama)\n- **Open/custom categories** — LLM engines may create new category slugs (e.g. `blockchain`, `gaming`) when a bookmark doesn't fit the 8 built-ins; the filter pill row updates dynamically\n- **Subject-matter domains** — LLM engines assign a short slug (e.g. `ai`, `web-dev`, `finance`) as a second dimension; shown as a violet badge on each bookmark and surfaced in the Stats dashboard\n- **Stats dashboard** — overview of total/classified bookmarks, category distribution bar chart, top sites bar chart, and subject-domain bar chart\n- **Wiki export** — generate a structured Markdown wiki from your bookmarks for use in AI context windows\n- **Agent integration** — companion MCP daemon lets Claude Code, Codex, and other agents query your bookmarks directly\n- **Zero network** in regex mode — not a single request leaves the browser\n\n## Privacy Guarantees\n\n| Mode | Outbound requests |\n|------|-------------------|\n| Regex classification (default) | None |\n| BYOK LLM classification | One request to your chosen AI provider only |\n| Agent daemon | Loopback only (127.0.0.1:6789) |\n\nNo bookmark data, API keys, or usage telemetry is ever sent to Deepmarks servers (there are none).\n\n## Bundle Sizes\n\n| Entrypoint | Size |\n|------------|------|\n| background.js | 129.6 kB |\n| sidepanel (chunk) | 146.9 kB |\n| jsx-runtime (chunk) | 191.0 kB |\n| byok (chunk) | 60.5 kB |\n| **Total** | **567 kB** |\n\nDaemon bundle: 324 kB (Node.js CJS, includes zod).\n\n## Security\n\n- **Manifest permissions**: `bookmarks`, `storage`, `sidePanel`, `nativeMessaging` only — no `tabs`, no `host_permissions`\n- **CSP**: `script-src 'self'; object-src 'none'`\n- **No innerHTML / dangerouslySetInnerHTML** anywhere in the codebase\n- **All URLs** validated against `^https?://` before rendering\n- **Daemon**: binds `127.0.0.1` only; `Authorization: Bearer \u003csecret\u003e` required on every request; shared secret stored at `~/.deepmarks/daemon.secret` with `0600` permissions\n- **BYOK keys**: stored in `chrome.storage.local` only, never logged or synced\n- **classify_bookmark** MCP tool: disabled by default, only exposed when user has opted in and a BYOK key is present\n\n## Installation\n\n### Extension\n\n1. `pnpm install \u0026\u0026 pnpm build`\n2. Open `chrome://extensions`, enable Developer Mode\n3. Click \"Load unpacked\" → select `.output/chrome-mv3`\n4. Note your Extension ID from the extensions page\n\n### Companion Daemon (optional, for AI agent integration)\n\n```bash\ncd daemon\npnpm install \u0026\u0026 pnpm build\nbash install.sh\n```\n\nThe installer:\n- Generates a 32-byte random shared secret at `~/.deepmarks/daemon.secret`\n- Registers the Native Messaging host manifest for Chrome (and Firefox if installed)\n- Prints the MCP config snippet to add to Claude / Codex\n\nAfter running, edit `~/.deepmarks/com.deepmarks.daemon.json` and replace `REPLACE_WITH_YOUR_EXTENSION_ID` with your actual extension ID from `chrome://extensions`.\n\n## Development\n\n```bash\npnpm install\npnpm dev          # WXT dev server with HMR\npnpm typecheck    # TypeScript strict check\npnpm lint         # ESLint (strictTypeChecked)\npnpm test         # Vitest (177 unit tests)\npnpm build        # Production bundle\npnpm zip          # Chrome .zip for submission\n```\n\n### Daemon development\n\n```bash\ncd daemon\npnpm typecheck    # tsc --noEmit\npnpm build        # esbuild → dist/index.cjs\n```\n\n## Architecture\n\n```\nsrc/\n  entrypoints/\n    background.ts       # Service worker: bookmark sync, search index, native messaging\n    sidepanel/          # Main UI: browse, search, classify, wiki, export\n    popup/              # Mini popup: counts + quick links\n    options/            # Settings: BYOK keys, categories, engine status\n  lib/\n    bookmarks/          # types, sync, url validation\n    storage/            # IndexedDB (idb), chrome.storage settings\n    search/             # FlexSearch wrapper\n    classify/           # Regex engine, BYOK router, categories\n    wiki/               # Markdown compiler, file export\n    agent/              # Native Messaging bridge, JSON export\n  components/           # React UI components (all pure, no network)\n\ndaemon/\n  src/\n    types.ts            # Shared types (BookmarkNode, MCP interfaces)\n    native-host.ts      # Chrome Native Messaging framing (4-byte LE length prefix)\n    http-server.ts      # HTTP MCP server (127.0.0.1:6789)\n    index.ts            # Entry point\n  install.sh            # Idempotent installer (macOS / Linux / Windows)\n```\n\n## MCP Tools\n\nThe companion daemon exposes these tools to AI agents:\n\n| Tool | Description |\n|------|-------------|\n| `search_bookmarks` | Full-text search with optional category filter |\n| `list_categories` | List all categories with counts |\n| `get_bookmark` | Get a single bookmark by ID |\n| `export_wiki` | Get the full Markdown wiki |\n| `classify_bookmark` | Classify a URL (requires BYOK opt-in) |\n\n## Tests\n\n```\nTest Files  11 passed (11)\n     Tests  167 passed (167)\n\nCoverage (src/lib/**):\n  Statements: 86.66%  ✓\n  Functions:  86.48%  ✓\n  Lines:      88.64%  ✓\n  Branches:   71.42%  (threshold: 70%)  ✓\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrkpatchaa%2Fdeepmarks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrkpatchaa%2Fdeepmarks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrkpatchaa%2Fdeepmarks/lists"}