save · organize · revisit

Stop hoarding saves.
Start revisiting them.

Stash is a self-hosted save-for-later that doesn't just collect links — it organizes them for you. Drop in a Threads post, a GitHub star, or any web page and Stash files it into smart collections, builds a live interest graph, and gently brings it back before it rots in a graveyard.

capture → stash → revisit
# paste any link
$ curl -X POST https://your-stash/api/captures \
    -d '{"url":"https://github.com/nextjs/next.js"}'

# stash files it, embeds it, and files it into the right collection
 saved as repo   → "TypeScript frameworks"
 embedded        · tf-idf + local embeddings
 filed           → 3 topics · 1 collection
 queued for review · revisit in 3 days

The read-it-later graveyard

Bookmarks and saves accumulate. Threads posts vanish when the author deletes them. Hundreds of starred repos sit unorganized and unevaluated. Nothing ever comes back. Stash breaks that loop.

What it does

Capture from anywhere

Paste a link, import public GitHub stars, or save from the browser extension (Alt+Shift+S), the share sheet, or the tray app.

Auto-organization

Keyword clustering plus optional local AI files new saves into the right collections. No folder-tree homework.

Live interest graph

Your collections and semantic links render as a live 3D force graph, clustered by community detection and filterable by source.

Semantic search

Free, on-device embeddings with a TF-IDF fallback. Find things by meaning, not just keywords. No API key.

Actually revisit

A review queue and daily digest surface what you've never opened — so saved content comes back instead of rotting.

Shareable mixtapes

Every collection becomes a public page with rich Open Graph cards. Send one link; no account needed to view.

Why self-host?

Your data stays yours

Everything lives in your own Postgres — on your machine or your VPS. No account, no cloud lock-in, no telemetry.

Free to run forever

The core loop — capture, organize, revisit — works with zero API spend, including local embeddings and semantic search.

Script it

A plain HTTP API underneath, so you can automate saves, exports, and digests however you like.

Your library, as a living graph

A sample interest graph — each node is a save; edges are the semantic links Stash finds between them. Cluster colors: threads, repos, links.

Built for hackers

Bring your own Postgres. Script it with plain HTTP. Self-host on a VPS with Coolify, or run it as a PWA, browser extension, or native shell. No SaaS, no telemetry, no vendor lock-in.

  • Next.js 16
  • TypeScript
  • Postgres + Drizzle
  • RLS multi-tenant
  • On-device embeddings
  • Capacitor 8
  • Tauri
  • PWA + extension
  • Self-hostable

Run it yourself

self-host in a few lines
$ git clone https://github.com/stoyanov-x/stash.git
$ cd stash
$ docker compose up --build
# → http://localhost:3000
# your data lives in local named volumes — nothing leaves your machine