Last month Pocket served me an ad inside an article I'd saved about database internals. That was the moment I admitted the deal I'd made: a free read-later app in exchange for my reading history, my attention data, and sponsored content injected into my own queue.
I'd been a Pocket user for 9 years. 4,000+ saved articles. Premium was $44.99/year to remove the ads. So I did what this account does: replaced it with free open-source software. Here's the stack after 6 weeks.
The replacement stack
Hoarder (recently renamed Karakeep) — self-hosted "bookmark everything" app. Save links via browser extension, mobile share sheet, or API. It archives the full page text, and — the killer feature — full-text search across everything you've ever saved.
FreshRSS — self-hosted RSS reader, because half of what I saved to Pocket was actually just "blogs I should be subscribed to."
| Pocket Premium | Hoarder + FreshRSS | |
|---|---|---|
| Cost | $44.99/yr | $0 (runs on my existing server) |
| Ads in your queue | Yes, free tier | Never |
| Full-text search saved pages | Premium only | Built in |
| AI auto-tagging | Theirs | Optional, local Ollama model |
| Data export | Their format | JSON/SQLite, yours |
| Browser extension / iOS share | Yes | Yes / Yes (Shortcuts) |
| Recommended feed | Algorithmic | None (a feature) |
The part that surprised me
Hoarder has an AI tagging option that points at a local Ollama instance. Every saved link gets auto-tagged by a small local model — no reading history leaves my network, and the tags are actually good. It also fetches the page as an archive, so when the original site dies (and they do — ~15% of my old Pocket saves are 404s now), I still have the content.
# docker-compose.yml (the whole thing)
services:
hoarder:
image: ghcr.io/hoarder-app/hoarder:latest
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- INFERENCE_TEXT_MODEL=llama3.2:3b
ports:
- "3000:3000"
volumes:
- hoarder-data:/data
ollama:
image: ollama/ollama:latest
volumes:
hoarder-data:
Migrating my 4,000 Pocket saves was one script — Pocket's export gives you a CSV of URLs, and Hoarder's API takes them in bulk. The dead links (about 600) got archived copies from the Wayback Machine where available.
Honest trade-offs
- You are the sysadmin. 30 minutes of setup, then ~zero maintenance in 6 weeks — but if Docker scares you, this isn't the entry point
- No "trending" feed. Turns out I don't miss it. I save things with intent now instead of grazing recommendations
- Mobile reading is a PWA, not a polished native app. Good enough; not luxurious
I drafted the migration script and the Docker config with MonkeyCode — free, open source, and it runs the same local-model setup this stack uses.
Rating: 9/10
The pattern here is bigger than Pocket: every "free" app that holds a personal archive is a future hostage negotiation. Notes, bookmarks, photos, reading lists — if you can't grep it, you don't own it.
What's in your self-hosted stack that replaced a subscription? And has anyone else noticed how many of your old bookmarks are just… gone?
Top comments (0)