← Projects · 2026-07-13

stash

Self-hosted read-later. Click 'Send to stash' in the browser, the article's content is extracted and stored on your own server — full-text searchable, no third party ever sees your reading list.

Repoexplewd/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.