This Open-Source Tool Fixes Browser History (Hister)

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

00:00:00i read this in a github issue but chrome history is useless the browser remembers every page you
00:00:06visit but never the part we actually care about what was even on that page so if you forgot the
00:00:11title or url good luck finding it again this is hister and it fixes all that it quietly indexes
00:00:18the full text of every page you read locally so you can search your own browsing history
00:00:23like a private google let me show you
00:00:30all right so browser history stores exactly two things about a page the title and the url that's
00:00:36the whole record the content the part you and i actually remember was never saved so the moment
00:00:43you forgot the exact title that page is gone and on firefox it's worse because the default history
00:00:49expiry is about 90 days there are two kinds of searches discovery search is finding something
00:00:55new heck that's google's job and google is really good at it recall search is finding something you
00:01:02already read and basically nobody is building for recall so you end up doing this ridiculous thing
00:01:08where you google your way back to a page you already read hoping you remember enough of the phrasing to
00:01:14find it again this is what history is for and let me get it going if you enjoy coding tools that speed up
00:01:19your workflow be sure to subscribe we have videos coming out all the time all right let me actually
00:01:24set this thing up from nothing i'm on an apple mac m4 so i'm grabbing the darwin arm 64 binary
00:01:30i'll just rename it to history here make it an executable with our nifty command and then run history listen
00:01:39that's it history starts a server locally on port 4433 so if i open the port here's the entire interface
00:01:46right now there's basically nothing in it because we haven't given anything to index yet the second
00:01:52piece of this puzzle is the browser extension there's one for chrome and one for firefox i'm using chrome
00:01:57here though so now let's actually browse normally i'll open this github issue i'll open a documentation
00:02:04page i'm going to fire up and open up an article here and maybe just open up another page i'm not
00:02:11bookmarking anything i'm not clicking save i'm just doing what i would normally be doing by just
00:02:16visiting these pages and reading and back inside history those pages are already showing up now the
00:02:22cool thing with all this is this isn't just another read later app where you have to remember to save the
00:02:26page first the browser extension is building the index while you browse now let's see whether that
00:02:32index is actually useful here's an article i visited earlier i'm just going to grab a sentence from
00:02:37somewhere in the middle of the page not the headline not the url just some random text buried inside the
00:02:42article i'm going to close down that page that was on it earlier and i'm going to search that phrase
00:02:47in hister there it is the result gives me the page the matching text around it and i can jump straight
00:02:54back to what i was actually reading in that moment now let's run the exact same search in chrome's
00:02:59history i'm going to drop it in here what do you expect yeah we're not really getting anything back
00:03:05because chrome knows i visited the page it just doesn't know what was inside of it and hister isn't
00:03:11limited to basic keyword search either there's actually a query language so i can do like domain
00:03:18github.com and now i'm only looking through github pages that i visited or i can search text memory
00:03:25leak text whatever you're searching for and now that phrase specifically has to appear inside the body of
00:03:30the page you can combine these two so if i vaguely remember reading about a memory problem inside a
00:03:35github issue but i have absolutely no idea which repo it was in i can narrow my own history down instead
00:03:42of going back to google and starting from scratch there's also a terminal interface so i can run history
00:03:48search and now i can search the exact same personal index without actually leaving my terminal that is
00:03:56probably the interface i'd actually use most here in a workflow and here's something else i initially
00:04:01missed you don't necessarily have to start with an empty database hister can import your existing
00:04:06browser history on current versions that's hister import browser it detects browser databases on those
00:04:12machines and pulls those urls into hister there is one important distinction here though for old
00:04:17browser history your browser never stored the original page content so hister has to revisit
00:04:22those urls and index whatever is there now but from the moment the extension is running it captures
00:04:28the rendered page you're actually looking at so after using this for a while you're basically building
00:04:33your own full text search engine out of your normal browsing and all this is still running on my laptop
00:04:39so how does it even pull this off a browser extension reads each page after javascript finishes rendering
00:04:45your company wiki your internal dashboards private repos google can't index any of that your own machine
00:04:51it can the extension packages up the url the title the extracted text the entire html document
00:04:58and posts it to a server running on your laptop believe a pure go inverted index does the searching
00:05:04full html gets g zipped and stored locally so you can get fully offline copy of all this that runs
00:05:10about 100 kilobytes per page 10 000 pages roughly a gigabyte storage is not actually a problem here
00:05:17now this space isn't empty parakeep has 28 000 stars archive boxes here too and honestly archive box
00:05:24archives far more better than a lot of things warc files screenshots video the whole thing wallabags been
00:05:31around forever readwise reader has a really good experience for about 120 bucks a year but every
00:05:38single one of those tools has the same problem with it you have to decide to save something before you
00:05:44actually need it and there's one piece i genuinely didn't expect it ships an mcp endpoint so you can
00:05:50point a coding agent at your own index and ask it questions against everything you've actually read
00:05:56not everything the model was trained on so instead of connecting your agent to github and six doc sites
00:06:01separately you pointed out one index of things you already read and already been authenticated for
00:06:06okay now i'm gonna be straight with you here safari it does not work there's a proof of concept pull
00:06:12request it's been open since february i think and it's been untouched since february as well so if you're
00:06:18a safari only mac user this is not a tool that's going to work but i think a lot of us are using
00:06:24chrome that's the biggest downfall here the index is not encrypted and i want to be fair on that the
00:06:30docs say this outright they don't actually hide it but think about what that file actually is it's the
00:06:35full text of everything you've read that's a sharper object than your browser history ever was so
00:06:41use disk encryption the docker path is really messy too run the binary and it binds to local host only
00:06:48fine okay but the compost file that ships with the project binds 000 and maps the port and the default
00:06:56config requires no authentication okay bit of an issue the mac binary isn't notarized it's ad hoc signed
00:07:02download it in a browser and gatekeeper will stop you it's pre 1.0 and well that means it 18 minor
00:07:08releases in seven months with breaking changes documented between them read the changelog before
00:07:13you upgrade or maybe even install this 47 contributors are on paper but roughly 78 of those
00:07:19are by the actual maintainer this is a really cool project check it out maybe but it has been helpful
00:07:26so here's the actual decision run it if you're on firefox or chrome you read a lot of documentation
00:07:31and github issues and you're already comfortable self-hosting especially run it if you want a private
00:07:37corpus your coding agent can actually query back too don't run it if you're safari only because it's not
00:07:42going to work and if you put it on a network configure the auth first not later the setup was
00:07:47genuinely three commands i downloaded the binary i ran history listen and it comes up with the port in
00:07:53about two seconds super easy there's a multi-arc docker image and a proper nix flake with a darwin module
00:08:00there's no homebrew yet so don't go looking for the formula for that one i've dropped everything down in
00:08:05the description so you can check it out more if you enjoy coding tips and tricks like this be sure to
00:08:09subscribe to the better stack channel we'll see you in another video

Key Takeaway

Hister turns standard browsing into a searchable local index using a browser extension and a Go-based server, requiring disk encryption due to unencrypted full-text storage.

Highlights

  • Hister indexes the full text of every browsed page locally on port 4433, requiring no manual saving or bookmarking.

  • Storage requirements average 100 kilobytes per page, translating to roughly one gigabyte for 10,000 pages.

  • Browser history normally stores only titles and URLs, whereas Hister captures rendered HTML, text, and metadata using a browser extension.

  • Hister features an MCP endpoint that allows coding agents to query a user's personal reading corpus directly.

  • Safari is unsupported due to an unresolved pull request, and the local index lacks native encryption by default.

Timeline

Limitations of Standard Browser History

  • Standard browser history retains only titles and URLs, omitting page content.
  • Firefox deletes default history after roughly 90 days.
  • Recall searches for previously read material fail when exact titles are forgotten.

Standard browsers fail at recall searches because they omit the body text of visited pages. Users resort to re-googling past content using fragmented memories of phrasing. Hister solves this limitation by quietly indexing the full text of pages locally.

Installation and Extension Setup

  • Hister runs a local server on port 4433 after executing the binary.
  • Browser extensions for Chrome and Firefox automatically capture pages during normal browsing.
  • Indexed pages allow full-text phrase searches that standard browser history fails to retrieve.

Setting up Hister involves downloading the binary for the specific architecture, making it executable, and running the listen command. The companion browser extension indexes pages dynamically in the background without manual bookmarking or saving.

Query Language and Terminal Interface

  • Advanced queries filter results by specific domains and exact body text.
  • A terminal interface enables searching the personal index without opening a browser.
  • Existing browser history imports via the command line, though older URLs require revisiting to index current content.

Hister extends beyond basic keyword matching by supporting domain filters and body-text constraints. Users can execute searches directly from the terminal. While older history requires secondary visits to capture content, current browsing gets stored as rendered HTML and gzipped locally.

Alternative Tools and Agent Integration

  • Existing tools like ArchiveBox and Readwise Reader require explicit saving actions.
  • Hister ships with an MCP endpoint for querying personal reading archives via coding agents.

Alternative archival solutions require users to intentionally save content before needing it. Hister automates this capture and goes a step further by providing an MCP endpoint. This allows coding agents to query authenticated local reading history rather than relying solely on training data.

Security Limitations and Decision Guide

  • Safari is entirely unsupported because of an inactive pull request.
  • The local index is stored unencrypted, necessitating manual disk encryption.
  • Network deployments require explicit authentication configuration to prevent security exposure.

Hister lacks native encryption for its stored text, making disk encryption mandatory for privacy. Docker configurations bind to all network interfaces by default without authentication, requiring manual hardening. The tool suits users heavily reliant on Chrome or Firefox who comfortable with self-hosting.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video