Find what you saved. Resume what you started.
Website · Install · Usage Guide · Features · Development
HamHome is an AI browser workspace that brings bookmarks, page snapshots, and tab sessions together. Save content worth keeping, along with the browsing context you want to return to.
- Save with less sorting. Let AI generate summaries, categories, and tags, keep page snapshots and screenshots, or clip just the passage or image you need.
- Find it when you need it. Search saved content with keywords or semantic search, browse page screenshots in the visual gallery, or ask the built-in Agent to find and summarize it.
- Pick up where you left off. Save a set of tabs as a workspace, restore it when needed, and organize active tabs with grouping rules.
Local first. Your choice of AI. Data stays in your browser by default, with no HamHome account required. AI features send relevant content to the provider you connect. WebDAV sync and file import/export are optional.
| In-page Quick Save | Image Clip |
|---|---|
![]() |
![]() |
| Bookmark Library | Visual Gallery |
![]() |
![]() |
| Bulk Bookmark Actions | In-page Content Panel |
![]() |
![]() |
| Bookmark Health Center | Trash |
![]() |
![]() |
| AI Agent | Workspaces |
![]() |
![]() |
| Tab Group Rules | Import, Export, and Sync |
![]() |
![]() |
- Save the current page from the toolbar quick panel, context menu, or keyboard shortcut. The save form opens right on the page, so AI analysis never interrupts browsing; you can switch back to saving inside the popup in settings.
- Extract page metadata and readable content with Defuddle, Mozilla Readability, and SingleFile-based snapshot capture.
- Generate summaries, categories, tags, and optional translations after the user configures an AI provider.
- Capture a screenshot of the visible page with each save, independently of the HTML/Markdown snapshot. HamHome's own UI is hidden during capture, and private pages skip screenshots by default.
- Re-analyze existing bookmarks in bulk from the management page.
- Right-click selected text to save it as a text clip. The bookmark keeps the exact quote and reopens the source page at that passage through a Text Fragment.
- Right-click an image to save an image clip with its source page, image URL, size, format, and dominant colors.
- With a vision-capable model, AI suggests titles, summaries, categories, and tags for image clips. Image analysis can be turned off, and images from private pages are never sent.
- Clips appear in the library as text and image cards, and the content-type filter separates bookmarks, images, and text.
- Switch between masonry cards, a compact list, and a visual gallery built from saved page screenshots; hover a card to preview its screenshot.
- Filter by category, tag, content type, time range (including custom date ranges picked from a calendar), or saved custom filters.
- Batch tag, move, delete, sync snapshots to Obsidian, or re-run AI analysis on selected bookmarks.
- Large libraries stay responsive: lists, tag filters, and the health list are virtualized.
- Check bookmark links on demand, or schedule checks weekly or monthly. Only
404/410count as broken; sign-in walls, rate limits, server errors, and timeouts are flagged separately instead of being treated as dead links. - Adopt a redirect's new URL in one click, and spot duplicates by normalized URL (tracking parameters and fragments ignored) even before any check has run.
- Clean up each duplicate group in one click, keeping the earliest saved bookmark. Image and text clips are excluded from health checks.
- Deleted bookmarks move to Trash together with their content, snapshots, screenshots, and clips, and can be restored for 30 days. After that, or after a permanent delete, only a lightweight tombstone remains so the deletion syncs to your other devices.
- Search bookmarks by title, URL, description, content, category, tag, domain, and time range.
- Enable embedding-based semantic search and hybrid ranking that combines keyword and vector results.
- Use the built-in AI Agent to understand HamHome features and settings, inspect status, search/summarize saved pages, open extension views, and handle safe non-sensitive setup.
- Search from the browser address bar with the
hamomnibox keyword when enabled.
- Save the current window as a restorable workspace with page order, favicon, pinned state, and native Tab Group metadata.
- Restore all or selected pages into the current window or a new window, with duplicate URL skipping.
- Manage workspace-only categories and tags separately from bookmark categories.
- Analyze workspace pages for duplicates, rough purpose/category signals, and bookmark conversion candidates.
- Drag pages between workspaces or Tab Groups, edit page metadata, and convert useful pages into long-term bookmarks.
- Create automatic grouping rules by domain, URL text, title, case-insensitive title, or regex.
- Configure group title, color, collapsed state, ordering, and multiple match conditions.
- Let unmatched tabs fall back to root-domain grouping or AI grouping. Manual rules always run first.
- AI auto-grouping can use page title, URL, metadata, existing group titles, and custom grouping instructions; results are cached by domain and instruction set.
- Chromium browsers apply rules through
chrome.tabGroups; Firefox can store rules but does not run native Tab Group automation where the API is unavailable.
- Save local HTML or Markdown snapshots for offline reading.
- View, download, update, or delete snapshots from bookmark management; view, download, or delete page screenshots from the screenshot viewer.
- Sync Markdown-style bookmark notes to Obsidian through the
obsidian://newflow, with clipboard fallback and unchanged-content skipping. - Keep snapshot and screenshot storage visible from settings.
- Export full HamHome JSON backups containing bookmarks, clips, categories, workspaces, workspace categories, Tab Group rules, and auto-group settings.
- Export a browsable HTML bookmark page.
- Import HamHome JSON backups or standard browser bookmark HTML files from Chrome, Firefox, and Edge.
- Import browser bookmarks directly through the browser bookmarks API, optionally preserving folder hierarchy or running AI analysis.
- Write HamHome bookmarks back to the browser bookmark bar with root-folder, clear-first, and duplicate-skip options.
- Sync structured data through WebDAV under
/HamHomeSync: settings, bookmark/category data, bookmark text content, clips, workspaces, workspace categories, and Tab Group configuration. Bookmarks are matched by URL so syncing several devices does not create duplicates, deletions sync as tombstones, and Basic auth falls back to Digest automatically. Local HTML/Markdown snapshot files and page screenshots stay on the device unless you download them or send notes through the Obsidian workflow.
- Store primary data in browser storage and IndexedDB; no HamHome-hosted account is required.
- Bring your own AI key and endpoint. Supported chat providers include OpenAI, Anthropic, Google Gemini, Azure OpenAI, DeepSeek, Groq, Mistral, Moonshot/Kimi, Zhipu/GLM, Tencent Hunyuan, NVIDIA NIM, SiliconFlow, Ollama, and custom OpenAI-compatible APIs.
- Configure embeddings separately for semantic search. Supported embedding providers include OpenAI, Google, Azure, Mistral, Zhipu, Hunyuan, NVIDIA, SiliconFlow, Ollama, and custom OpenAI-compatible APIs.
- Keep sensitive domains out of AI analysis and page screenshots with privacy domain settings and automatic privacy detection.
- AI keys, Base URLs, privacy domains, WebDAV credentials, and browser shortcuts must be configured by the user; the Agent does not read or fill them.
- Full extension app with bookmarks, Bookmark Health, workspaces, Tab Groups, categories, tags, privacy, import/export, Trash, settings, and about pages.
- Toolbar quick panel to save the current page, open the bookmark panel, and check recent saves and common settings.
- In-page edge-triggered bookmark panel with left/right positioning; it can be turned off in settings.
- Light, dark, and system themes with English and Chinese localization.
- Sync status widget, shortcut display, custom filters, tag cloud, storage stats, and vector index controls.
| Browser | Status |
|---|---|
| Chrome / Chromium | Manifest V3 |
| Microsoft Edge | Manifest V3 |
| Firefox | Firefox build, 109+ configured; native Tab Group automation depends on browser API support |
- Chrome Web Store
- Firefox Add-ons
- Microsoft Edge Addons
- GitHub Releases for manual installation packages.
git clone https://github.com/bingoYB/ham_home.git
cd ham_home
pnpm install
pnpm build:extensionLoad the built extension:
- Chrome / Chromium: open
chrome://extensions/, enable Developer mode, choose Load unpacked, and selectapps/extension/.output/chrome-mv3. - Microsoft Edge: open
edge://extensions/, enable Developer mode, choose Load unpacked, and selectapps/extension/.output/edge-mv3. - Firefox: open
about:debugging, choose This Firefox, choose Load Temporary Add-on, and selectapps/extension/.output/firefox-mv2/manifest.json.
# Install workspace dependencies
pnpm install
# Run extension dev builds
pnpm dev:extension
pnpm dev:ext-firefox
pnpm dev:ext-edge
# Run the Next.js product site
pnpm dev:web
# Build
pnpm build
pnpm build:extension
pnpm build:web
# Package and submit extension builds
pnpm zip:extension
pnpm submit:init
pnpm submit:extension
# Tests and screenshots
pnpm --filter hamhome test
pnpm --filter hamhome test:e2e:install
pnpm --filter hamhome test:e2e
pnpm --filter hamhome screenshots- Monorepo: pnpm workspaces + Turborepo
- Extension: WXT + React 19 + TypeScript + Tailwind CSS 4
- Product site: Next.js 16 + React 19
- UI: shadcn/ui-style primitives, Radix UI, lucide-react, shared
@hamhome/uiand@hamhome/ui-business - AI:
@hamhome/agent, provider adapters, embedding queue, hybrid retriever - Extraction: Defuddle, Mozilla Readability, SingleFile-style capture, Turndown/Markdown workflows
- Storage: WXT Storage, browser storage APIs, IndexedDB for snapshots, page screenshots, AI cache, and vector data
- Sync: WebDAV, gzip-compressed bookmark content chunks, sync locks, local credential obfuscation
- Testing: Vitest + Playwright extension E2E + generated screenshot suites
ham_home/
├── apps/
│ ├── extension/ # WXT browser extension
│ │ ├── components/ # React feature components
│ │ ├── contexts/ # Bookmark and app state context
│ │ ├── entrypoints/ # app, popup, content, background entrypoints
│ │ ├── hooks/ # Extension hooks
│ │ ├── lib/ # AI, agent, search, sync, storage, services
│ │ ├── locales/ # English and Chinese i18n resources
│ │ └── e2e/ # Playwright extension tests and screenshot generation
│ └── web/ # Next.js product / marketing site
├── packages/
│ ├── agent/ # Browser agent runtime (vendored from browser-agent-sdk)
│ ├── ui/ # Shared UI primitives
│ ├── ui-business/ # Shared HamHome business UI
│ ├── types/ # Shared TypeScript types
│ ├── utils/ # Shared utilities
│ ├── parser/ # Content parsing package
│ ├── storage/ # Storage abstraction package
│ ├── db/ # Drizzle schema package
│ ├── api/ # Cloudflare Workers / Hono API package
│ └── i18n/ # Shared i18n package
└── docs/ # Product docs, Chinese README, screenshots, design notes
Contributions are welcome. Please keep changes focused, follow the existing TypeScript and React patterns, and include tests or manual verification steps for extension workflows.
- Fork this repository.
- Create a feature branch:
git checkout -b feature/your-feature. - Commit with a scoped message, preferably Conventional Commits.
- Push your branch and open a Pull Request.
If HamHome is useful to you, a star is very appreciated.











