
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. 123The 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,urlhister 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. 7Local 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. 27The 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. 2hister search 'label:research postgres' --format csv --fields title,url > pg.csv
hister export - --start-date 2026-09-01 | gzip > index-backup.json.gzInstall
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 manager | Exact command | Best use | Source |
|---|---|---|---|
| Homebrew (macOS, Linux) | brew install hister | The shortest path on a machine that already has Homebrew. | Installing Hister — Homebrew |
| Release binary | Download hister_0.19.0_linux_amd64, then chmod +x hister && ./hister listen | A host with no package manager, or a pinned version. | Installing Hister — prebuilt binary |
| Docker | Official container at GitHub Container Registry | Running it next to other services with persistent storage. | Installing Hister — Docker |
| Nix | nix profile install github:asciimoo/hister | A Nix or NixOS setup, including a systemd service module. | Installing Hister — Nix |
| Proxmox VE | The community-scripts LXC installer | An 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. 715The 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. 7Try 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.
References
- 1Hister README
github.com
- 2Hister documentation — Terminal Client
hister.org
- 3Hister documentation — Quickstart
hister.org
- 4GitHub Trending — Go repositories today
github.com
- 5asciimoo/hister — GitHub repository
github.com
- 6
- 7
- 8asciimoo on Hacker News — what Hister stores
news.ycombinator.com
- 9hister v0.19.0 release
github.com
- 10Installing Hister — building from source
hister.org
- 11Archived repository page, August 19, 2026 — Internet Archive
web.archive.org
- 12
- 13Archived GitHub Trending Go board, August 20, 2026
web.archive.org
- 14Archived GitHub Trending Go board, September 1, 2026
web.archive.org
- 15Hacker News comment on the browser plugin requirement
news.ycombinator.com
- 16Hacker News comment on CPU and battery use
news.ycombinator.com
- 17Hister documentation — Server Setup
hister.org
- 18Hacker News question about very large file shares
news.ycombinator.com
- 19hister LICENSE — AGPL-3.0
github.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.
