Skip to content

Latest commit

 

History

249 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

简体中文 · English

HamHome

HamHome

Organize bookmarks with AI, rediscover saved content, and pick up where you left off

Release Stars Issues License: MIT

Find what you saved. Resume what you started.

Website · Install · Usage Guide · Features · Development

What is HamHome?

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.

Screenshots

In-page Quick Save Image Clip
In-page Quick Save Image Clip
Bookmark Library Visual Gallery
Bookmark Library Visual Gallery
Bulk Bookmark Actions In-page Content Panel
Bulk Bookmark Actions In-page Content Panel
Bookmark Health Center Trash
Bookmark Health Center Trash
AI Agent Workspaces
AI Agent Workspaces
Tab Group Rules Import, Export, and Sync
Tab Group Rules Import, Export, and Sync

Features

AI-assisted bookmarking

  • 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.

Text and image clips

  • 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.

Library views and filters

  • 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.

Bookmark Health Center and Trash

  • Check bookmark links on demand, or schedule checks weekly or monthly. Only 404 / 410 count 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.

AI Agent and search

  • 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 ham omnibox keyword when enabled.

Workspaces and tab sessions

  • 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.

Native Tab Group automation

  • 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.

Snapshots, screenshots, and Obsidian

  • 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://new flow, with clipboard fallback and unchanged-content skipping.
  • Keep snapshot and screenshot storage visible from settings.

Import, export, and sync

  • 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.

Privacy and storage controls

  • 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.

Modern extension UI

  • 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 Support

Browser Status
Chrome / Chromium Manifest V3
Microsoft Edge Manifest V3
Firefox Firefox build, 109+ configured; native Tab Group automation depends on browser API support

Downloads

Installation from Source

git clone https://github.com/bingoYB/ham_home.git
cd ham_home
pnpm install
pnpm build:extension

Load the built extension:

  • Chrome / Chromium: open chrome://extensions/, enable Developer mode, choose Load unpacked, and select apps/extension/.output/chrome-mv3.
  • Microsoft Edge: open edge://extensions/, enable Developer mode, choose Load unpacked, and select apps/extension/.output/edge-mv3.
  • Firefox: open about:debugging, choose This Firefox, choose Load Temporary Add-on, and select apps/extension/.output/firefox-mv2/manifest.json.

Development

# 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

Tech Stack

Node pnpm TypeScript React

  • 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/ui and @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

Project Structure

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

Contributing

Contributions are welcome. Please keep changes focused, follow the existing TypeScript and React patterns, and include tests or manual verification steps for extension workflows.

  1. Fork this repository.
  2. Create a feature branch: git checkout -b feature/your-feature.
  3. Commit with a scoped message, preferably Conventional Commits.
  4. Push your branch and open a Pull Request.

License

MIT


If HamHome is useful to you, a star is very appreciated.

About

HamHome is an AI-powered browser extension for browser workspace for bookmarks & tabs: auto-categorization, summaries, semantic search, and secure WebDAV sync. | HamHome 是一款 AI 驱动的浏览器工作空间插件,用于智能管理浏览器书签与标签页工作区,支持智能分类、网页摘要、语义检索与 WebDAV 同步。

Topics

Resources

Stars

114 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages