AI-powered term definitions for any web page. Fathom underlines unfamiliar technical terms inline and shows context-aware definitions on hover — so you can keep reading without opening five new tabs.
You're reading an article about gRPC and eBPF. The page mentions XDP, sk_buff, and BPF maps. Instead of context-switching to Wikipedia for each one, Fathom underlines those terms in place. Hover or click and a tooltip explains them — tuned to the article's domain (networking, not audio engineering).
- Context-aware — the same word means different things in finance vs. medicine vs. networking. Fathom classifies the page first, then defines terms in that frame.
- Reader-level adaptive — surfaces what a generally educated reader probably doesn't know, not every term an absolute beginner would miss.
- Non-invasive — subtle underlines only. No banners, sidebars, or layout shifts.
- Privacy-first — your API key stays in
chrome.storage.local. Page content is sent to Anthropic for analysis but not retained by Fathom. - BYOK — you use your own Claude API key. No middleman server, no subscription.
Until Fathom is on the Chrome Web Store, load it as an unpacked extension:
- Clone this repo and build it:
git clone https://github.com/digitalgrove-bit/fathom.git cd fathom npm install npm run build - Open
chrome://extensionsin Chrome. - Toggle Developer mode on (top right).
- Click Load unpacked and select the
dist/folder inside the cloned repo. - Pin the Fathom icon to your toolbar.
- Get a Claude API key from console.anthropic.com.
- Click the Fathom icon in your toolbar.
- Paste your key (
sk-ant-...) and click Save & Start.
The key is stored locally in your browser. API requests go directly from your browser to Anthropic.
- Open any article.
- Click the Fathom icon and hit Scan This Page.
- Watch unfamiliar terms get underlined as Fathom processes the page in chunks.
- Hover or click a term to see its definition.
- Optionally Export to Markdown to save the definitions list.
Two-phase pipeline, both powered by Claude:
- Classify — extract a skeleton of the page and ask Claude to classify its domain (e.g., "Linux kernel networking").
- Detect — chunk the visible text, send each chunk + the domain context to Claude, get back a list of terms an average reader probably wouldn't know.
Terms are annotated in the DOM with a rust-colored underline. Hover triggers a popover with the context-aware definition.
src/
├── features/ # vertical features (page-analysis, popover, annotation)
├── platform/
│ ├── domain/ # pure types and interfaces
│ └── infra/ # external clients (Anthropic) and storage
├── shell/ # Chrome extension entry points
│ ├── content-script.ts
│ ├── service-worker.ts
│ └── popup/
└── manifest.json
npm run watch # rebuild on save
npm run typecheck # tsc, no emitAfter a rebuild, click the refresh icon on the Fathom card at chrome://extensions to reload.
MIT — see LICENSE.