stash
Highlights
- Manifest V3 browser extension, sideloaded — one click or a right-click context menu, no store distribution needed for a single-user tool
- Runs @mozilla/readability against the current page to strip nav/ads/chrome, falling back to the raw rendered page when extraction comes back too thin to be useful
- Single-process server + SQLite (better-sqlite3), same bet as galr — FTS5 full-text search, no separate search service
- Upsert-on-url: re-capturing the same page refreshes the stored copy instead of versioning it — the deliberate, simpler choice
- Bearer-token auth generated once via a CLI command, no login flow — plus a proper revoke/list pair, added after a token ended up somewhere it shouldn't have during testing
- Server-rendered reading list and reader view, no client-side framework, themed to match flit/wisp's dark terminal aesthetic
A self-hosted read-later tool: click “Send to stash” in the browser, the current page’s article content gets extracted and stored on your own server, searchable, with a plain reader view.
The itch: read-later tools (Pocket, Instapaper, the usual suspects) all involve a third party holding a permanent copy of your reading list for something that’s really just “save this page, read it later.” A read-later tool with no one-click capture is just a bookmarks file with extra steps, so this was always going to be two pieces — a browser extension that does the sending, and a small server that does the storing.
Deliberately narrow scope: single user, no accounts, no sync protocol, no screenshot/visual archiving — text and article structure only, so full-text search stays meaningful and storage stays small.