Crumb is a local-only browser history tracker. It consists of two parts: a WebExtension-based browser plugin and a local HTTP server. Crumb logs each visited web page to a plaintext file in Org-mode format.
- Browser extension (WebExtension API, JavaScript)
- Local HTTP listener (Python + Flask)
- Plaintext log file (~/.crumb/history.log)
Each time a page is loaded in the browser, the extension sends the page metadata to the local server. The server appends this data to a structured log file.
Data captured per page:
- Page title
- URL
- Timestamp (UTC)
- Hostname
- Path
- Optional: query string, tab ID, window ID, favicon URL
The log is formatted as an Org-mode file, with one top-level heading per visit
and standard :PROPERTIES:
metadata.
- Python 3.x
- Flask
- A Chromium-based or Firefox browser with extension developer mode enabled
- Start the local listener:
python3 -m venv venv source ./venv/bin/activate pip install -r requirements.txt python server.py
- Load the extension into your browser:
- Enable Developer Mode
- Load the
crumb_extension/
directory
- Browse the web. Entries will appear in
~/.crumb/history.org
- Search the log using:
python search.py <term>
* Example Domain
:PROPERTIES:
:URL: http://example.com
:TIMESTAMP: 2025-06-04T20:31:01.123456
:HOST: example.com
:PATH: /
:TAB: 143
:WINDOW: 1
:FAVICON: https://example.com/favicon.ico
:END:
Screenshots of Crumb in use.
- Browser extensions cannot write files directly; communication requires the local server.
- History is stored in plaintext and is not encrypted. You can bolt-on a third-party encryption tool, if required.
- Data is stored locally and is never transmitted externally.
GPL 3.0 License. See LICENSE file.