Karakeep
Bookmark everything - links, notes, images - archived, searchable, and AI-tagged on your own box.
One-click deploy, from $13/mo on a Miget plan.
Karakeep (the app formerly known as Hoarder) is a "bookmark everything" hub: save links, notes, and images, and it automatically crawls and archives the page so your links never rot, takes a screenshot, full-text indexes everything for instant search, and can auto-tag with AI. Native mobile apps and a browser extension are included.
It is a three-service stack: the app and its built-in workers (port 5000, on embedded SQLite), a Meilisearch instance for search, and a headless Chrome for crawling and screenshots. On Miget the search and browser run as private sidecars; the app is the only public service.
The AI tagging is the modern twist, and it stays on your terms: point it at this catalogue’s ollama or litellm to keep inference on your own infrastructure, or plug in an OpenAI key. Leave it off and everything else still works.
Upstream project: Karakeep (formerly Hoarder)
#what you get
- Save links, notes, and images; full-page archiving
- Full-text search across everything (Meilisearch)
- Optional AI auto-tagging (Ollama / LiteLLM / OpenAI)
- Native mobile apps and a browser extension
- Embedded SQLite - no external database needed
- AGPL-3.0; search + Chrome as private sidecars
#topology
| Service | Role | Public |
|---|---|---|
| karakeep | app + workers (:5000) | yes |
| meilisearch | full-text search (private) | no |
| chrome | headless crawler / screenshots (private) | no |
#miget sizing
// this stack needs
2 GiB RAM · 15 GB disk · 3 services
The app and Meilisearch are light; the headless Chrome is the memory user during crawls (~512 MiB). Bookmarks and assets live in SQLite on the data volume; the search index on its own.
Hobby - recommended fit
$13/mo
1 vCPU · 2 GiB · 50 GiB disk
Headroom for your own apps: 2 GiB at $19/mo
Professional - production
$43/mo
2 vCPU · 4 GiB · 25 GiB disk
Dedicated resources, production SLOs - plan details
One Miget plan is a fixed pool of compute - the whole stack (managed databases included) deploys inside it, and anything left over runs your other apps. No per-service or per-seat math.
#vs. the managed service
What the hosted equivalents charge, against the flat Miget plan this stack fits on. Prices as of June 2026, sources linked.
| Service | Plan | Monthly | What you get |
|---|---|---|---|
| Karakeep on Miget ★ | 2 GiB plan | $13 | this whole stack, flat - no usage meters, and room left for your own apps |
| Raindrop.io | Pro | ~$3 | $3/mo; Pocket shut down in 2025 |
Karakeep adds archiving, search, and AI tagging as free software, with everything on your own box.
#vs. other PaaS
Estimated monthly cost of running this exact stack (2 GiB RAM, 15 GB disk, 3 containers) elsewhere, from published June 2026 rates.
| Platform | Est. monthly | Notes |
|---|---|---|
| Miget ★ | $13 flat | compose stacks first-class: one deploy, dedicated vCPU, managed Postgres/Valkey, volumes and TLS all included in the plan |
| Heroku | ~$100 | no volumes; nothing between 1 GB ($50) and 2.5 GB ($250) dynos - 2 GB containers cost far more than shown |
| Render | ~$29 | per-service instances (0.5 GB $7, 2 GB $25) - every container is its own paid service |
| DO App Platform | ~$29 | no persistent volumes - stateful containers need managed DBs/Spaces (base $5 Spaces included here) |
| Railway | ~$22 | usage-based ($10/GB RAM-mo); vCPU billed separately at $20/vCPU-mo on top |
| Fly.io | ~$14 | cheapest sticker price - but burstable shared CPUs (1/16 core; dedicated vCPUs cost ~2-3×), no compose deploys (one app per container, manual wiring), managed DBs billed extra |
Estimates assume RAM fully allocated at published on-demand rates - and sticker price isn't the whole comparison: the cheaper rows buy burstable shared CPUs, per-service wiring instead of a compose deploy, and managed databases billed separately. Heroku and DO App Platform have no persistent volumes at all - stateful stacks like this one need workarounds there.
#deploy it
On Miget
- Create a Compose Stack in app.miget.com pointing at the templates repository
- Set the stack path to
karakeep -
Set the required variables:
NEXTAUTH_SECRET, session secret (openssl rand -base64 36)MEILI_MASTER_KEY, shared by the app and MeilisearchNEXTAUTH_URL, the https domain, set after first deploy
- Deploy. Miget layers
compose.miget.yaml(RAM, privacy, volumes, managed services) automatically
Locally first?
Every template is portable, vanilla Docker Compose - the Miget overrides are ignored locally:
git clone https://github.com/deployable-sh/stacks
cd miget-compose-templates/karakeep
docker compose up -d Same files, same behavior. The template README covers connection strings and scaling notes.
#faq
What does this replace?
Pocket (shut down in 2025) and Raindrop.io Pro ($3/month) for read-it-later and bookmarking. Karakeep adds full-page archiving, real search, and optional AI tagging, with everything on infrastructure you own.
Do I need an OpenAI key?
No. AI auto-tagging is optional - without it, the app works fully for saving, archiving, and search. When you want it, point OLLAMA_BASE_URL at this catalogue’s ollama or litellm to keep inference local, or set an OpenAI key.
Why three services?
The app and its workers run together on SQLite; Meilisearch powers instant full-text search; and a headless Chrome renders pages for archiving and screenshots. Miget has no managed substitute for those two, so they run as private sidecars.
Ship Karakeep today
One compose stack, 2 GiB of RAM, from $13/month flat, and it runs on your laptop with the same files.