hister: full-text search for the pages you've read and the files you keep

hister: full-text search for the pages you've read and the files you keep

hister indexes the pages you visit and the files you keep into a search engine that runs on your own machine and answers from the terminal; this issue covers its install commands, a working setup, its current GitHub momentum, and the license and rename caveats.

hister keeps a searchable copy of the pages you visit and the files you keep, and it runs on your own machine. One command starts the server, hister listen, and it serves a full-text index on 127.0.0.1:4433. You read that index from a terminal interface, from a one-shot command that prints JSON, JSONL or CSV for piping, from a web page, or through an MCP endpoint that lets an AI assistant query the same index. 123
The momentum is the loudest part of this week's signal: #3 on GitHub Trending's daily Go board, 842 stars gained in that board's window, 4,827 stars in total, and a Hacker News thread from September 17 that stood at 680 points and 180 comments when its record was read. 456

The search your browser cannot do

You read the answer once. A connection-pool timeout on a service you own, and the fix sat in a blog post or a release note you found three months ago and never bookmarked. Browser history matches titles and URLs, so it hands back a list of candidate pages that you then open one at a time. hister indexes the text inside the pages themselves, which is what makes a half-remembered phrase enough to get the page back. 1
A working setup takes four commands:
hister listen                     # start the server; leave it running under tmux or systemd
hister import browser firefox     # backfill history; hister refetches each URL to index its text
hister search                     # terminal UI: Search, History, Rules and Add tabs
hister search 'connection pool timeout' --format jsonl --fields title,url
hister import browser reads the browser's own database — Firefox places.sqlite, the History file in a Chromium profile, or Safari's History.db — and collects the URLs stored there. It then fetches each page, so the index holds the text of what you read. The command resumes after an interruption and keeps its failed URLs for inspection with hister crawl errors. 7
Local files arrive through configuration instead: add a directory to indexer.directories, restart the server, and it scans that directory once and watches it afterwards. PDF, DOCX, Markdown, Org mode and plain text go through the same extractors as any other file. 27
The reason to keep an index at all shows up months later. hister stores the extracted content with offline result previews, so a page that has since been rewritten, paywalled or taken down still answers the query that finds it. 18
--format takes text, json, jsonl or csv and --fields picks the columns, so one index serves both your eyes and your scripts. 2
hister search 'label:research postgres' --format csv --fields title,url > pg.csv
hister export - --start-date 2026-09-01 | gzip > index-backup.json.gz

Install

The current stable release is v0.19.0, published on September 3, 2026. Its assets cover Linux (amd64 and arm64), macOS (Intel and Apple silicon) and Windows amd64, each around 105 MB, with a checksums file beside them. 9
Platform or managerExact commandBest useSource
Homebrew (macOS, Linux)brew install histerThe shortest path on a machine that already has Homebrew.Installing Hister — Homebrew
Release binaryDownload hister_0.19.0_linux_amd64, then chmod +x hister && ./hister listenA host with no package manager, or a pinned version.Installing Hister — prebuilt binary
DockerOfficial container at GitHub Container RegistryRunning it next to other services with persistent storage.Installing Hister — Docker
Nixnix profile install github:asciimoo/histerA Nix or NixOS setup, including a systemd service module.Installing Hister — Nix
Proxmox VEThe community-scripts LXC installerAn LXC container on a Proxmox host; the installer comes from the community-scripts project.Installing Hister — Proxmox VE
Building from source needs Go 1.26, npm and a C compiler for the CGO dependencies. 10
The last piece is a browser extension for Chrome or Firefox, which feeds newly visited pages into the index as you browse; the server has to be running for that to work, which is why the quickstart suggests keeping its terminal open. 3

What the current signal says

GitHub Trending's daily Go board placed hister at #3 on September 18, 2026, with 842 stars gained inside that day's window. The repository page showed 4.8k stars, and the repository record read through GitHub's API on the same day gave the precise 4,827, with 200 forks. 45
Archived copies of that repository page give a longer curve than the Trending board, which shows only its current window:
  • August 19, 2026 — about 2,000 stars, 95 forks. 11
  • September 12, 2026 — about 3,700 stars, 179 forks. 12
  • September 18, 2026 — 4,827 stars, 200 forks. 5
That is roughly 2,800 stars in the month to September 18, and about 1,100 of them since September 12. Archived copies of the Go board from August 20 and September 1 do not list the repository, which places its run on that board in the week of September 14 at the earliest. 1314
The Hacker News thread posted on September 17 has the author answering questions under it. He wrote there that he built Searx, a privacy-focused metasearch engine, before this project, and that the limits of the metasearch approach pushed him toward an index of his own. That thread is where the caveats below come from. 68

Where this stops being simple

Capture runs through the browser extension. One commenter put the objection plainly: "Not very practical for a solution that requires a browser plugin. The browser is where most of my interesting data is." Backfilling history with hister import browser covers the pages you already read. Watched directories cover your files with no browser involved. The extension's job is the pages you visit from now on. 715
The indexer has a cost on the machine it watches. Another commenter said an extension-based indexer he used before "would use a lot of CPU and hurt battery life", and asked whether hister is meant to run on a separate host. The official setup notes cover a remote deployment with authentication and a reverse proxy, so a small always-on box is a supported arrangement. 1617
Very large file shares are an open question. One reader asked in the thread whether it can index "30-50TB of Word, PowerPoint, and Excel files". The documentation covers directories on the machine running the server, with file-type, pattern and size filters, and the thread shows the question waiting for an answer. 718
The license is AGPL-3.0. For a personal index on your own hardware this costs nothing. It becomes a decision when you modify hister and let other people reach it over a network, because section 13 of that license extends the source-offer obligation to those users. Check the terms before embedding it in something you ship. 119
The name is expected to change. The author wrote: "It looks like our name conflicts with a registered trademark in the US. The owner of the other project has asked us to change it, so we'll probably need to comply sooner or later." A rename moves the package, the domain and the release URLs, so anything you script against those addresses will need updating. 8
The command line still moves. v0.16.0 imported browser history with a standalone hister import-browser command; current releases fold it into hister import browser. The documentation carries that migration note for readers on older builds. 7

Try or wait

Try hister if you keep notes, runbooks or research on the machine you work on, you regularly fail to re-find a page you have read, and you are comfortable leaving a local server running. Install it with the package manager you already have, run hister listen, backfill a browser with hister import browser, and search for something specific you remember reading. Use the terminal interface for browsing and --format jsonl when a script needs the results.
Wait if your corpus sits on a network share measured in terabytes, if you need a versioned interface contract before you automate against it, or if a rename in the next months would break the paths your tooling depends on.
The verdict is try. The install is one package manager command, the index pays off the first time a page you need has changed, and an active project tends to move the caveats above.

This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.

Related content