Your X bookmarks, finally on a shelf.

Shelved keeps every post you save on X, sorts it into topics on its own, and lets you search the whole pile by what it means. It runs on your computer. Nothing leaves it.

Open source, MIT. Needs Bun or Docker. Works without any API key.

The Shelved feed: bookmarks as cards on white, topics in the sidebar, a search box on top

Topics without any work

Every post is embedded on your machine and grouped with its neighbors. Claude names the groups when you give it a key. Without one, they are named from their own words.

Search by meaning

“How to sleep better” finds the sleep protocol thread that never uses the word better. Words and meaning, together or apart.

Your own order on top

Pin, archive, note, tag. Move a post to a different topic and it stays there. Rename or merge topics. Photos, videos, link cards and long posts all render cleanly.

How it works

Sync

Shelved reads your bookmarks the same way the x.com website does, with your own login cookies. New saves show up within half an hour. Bookmarks you remove on X drop out.

Embed and cluster

A small open model turns each post into a vector, locally. Clusters form around the natural groups in what you save, and your renames survive rebuilds.

Keep

One SQLite file in a folder. Run it in the foreground, as a background service on macOS or Linux, or in Docker. Delete the file to start over.

Run it

Then open localhost:4747 and paste two cookies from your x.com session. The first sync builds your topics in about a minute.

git clone https://github.com/ashot/shelved
cd shelved && bun install
bun run dev   # or: docker compose up -d

Things worth knowing

Shelved talks to X's private web API, the one the website itself uses, with your cookies. It is not the official API, which does not offer bookmarks on its free tier. X's terms restrict automated access, so this is a tool for your own account, used at your own discretion.

Your bookmarks and your session stay on the machine that runs Shelved. The only outside call besides X is the optional one to Claude, which sees fourteen posts per topic and returns a name.