Karakeep Review 2026: Self-Hosted AI Bookmark Manager
TL;DR: Karakeep — the project formerly known as Hoarder — is the most complete self-hosted bookmark manager you can run today: link archiving, notes, images, full-text search, and LLM-based auto-tagging that works against your own Ollama server, so nothing leaves your network. The license is AGPL-3.0, which is fine for home use but matters if you modify and host it for others. Linkwarden has closed the AI-tagging gap, so the choice between them is closer than most 2025-era comparisons admit.
| Karakeep | Linkwarden | Wallabag | |
|---|---|---|---|
| Best for | Bookmark-everything with AI tagging and search | Archival-first collections, team sharing | Distraction-free read-it-later |
| License | AGPL-3.0 | AGPL-3.0 | MIT |
| AI tagging | Built-in: OpenAI or local Ollama | Yes, via AI worker (OpenAI, Anthropic, Ollama) | None |
| Search | Meilisearch full-text + semantic search (v0.33) | Full-text | Full-text |
| The catch | Three-container stack; AI config has two silent failure modes | Heavier stack (PostgreSQL), AI tagging is newer and less battle-tested | No AI, no smart organization — deliberately minimal |
Honest take: If you have an Ollama server already running, Karakeep is the one to install — the local tagging pipeline is the most mature of the three and the mobile apps are genuinely good. If you mainly want permanent page archives and don’t care about AI, Linkwarden is equally solid.
From Hoarder to Karakeep
Karakeep started life as Hoarder and got renamed in early 2025 after a trademark dispute — same codebase, same maintainer, new domain at karakeep.app. Plenty of tutorials, Reddit threads, and Docker images still reference the old name, which causes real confusion: hoarder-app/hoarder on GitHub now redirects to karakeep-app/karakeep. If you find a guide that sets HOARDER_-prefixed environment variables, it’s stale.
The pitch is “bookmark everything”: links, plain-text notes, images, and PDFs go into one searchable pile. A headless Chrome container crawls every link you save and stores the page content, Meilisearch indexes it for full-text search, and — the differentiator — a language model reads the crawled content and assigns tags automatically. Point it at OpenAI if you want, or at your own Ollama instance so that your reading history never touches a third-party API.
The project is healthy by every signal that matters: it passed 28,000 GitHub stars in 2026, and the v0.33 release in August 2026 added semantic search on top of the existing keyword search. Releases have landed steadily all year. There are iOS and Android apps plus Chrome and Firefox extensions, all first-party.
License check: AGPL-3.0
Karakeep is AGPL-3.0, copyright Localhost Labs Ltd. For the typical aifoss reader — one instance on a home server, personal bookmarks — AGPL changes nothing. You can run it, modify it, and never publish a line.
The network-use clause bites in exactly one scenario: you modify Karakeep and let other people use your modified instance over a network. Then you must offer them your modified source. Hosting an unmodified instance for your family or team doesn’t trigger anything in practice, and internal company use of a modified copy is a gray area you should read Section 13 about before betting on. It is not MIT-permissive, but it is honest FOSS — same license Linkwarden uses, so there’s no licensing reason to prefer one over the other.
Docker Compose setup
The stack is three containers: the Karakeep web app, a headless Chrome for crawling, and Meilisearch for the search index. Bookmark data itself lives in a SQLite database inside the data volume — there is no PostgreSQL in this stack, despite what some older write-ups claim. That keeps backups trivial: snapshot one volume and you have everything.
Grab the official compose file rather than hand-rolling one, since the pinned Chrome and Meilisearch image tags change between releases:
mkdir karakeep && cd karakeep
curl -O https://raw.githubusercontent.com/karakeep-app/karakeep/main/docker/docker-compose.yml
Then create the .env next to it:
KARAKEEP_VERSION=release
NEXTAUTH_URL=http://localhost:3000
NEXTAUTH_SECRET=$(openssl rand -base64 36)
MEILI_MASTER_KEY=$(openssl rand -base64 36)
docker compose up -d and the web UI is on port 3000. First signup becomes the admin. Without any AI configuration, everything except auto-tagging and summarization already works — saving, crawling, full-text search, the mobile apps.
Hardware-wise the app itself is light. A Raspberry Pi 5 runs the three containers comfortably; the crawler’s Chrome instance is the hungriest piece. The AI tagging model does not have to live on the same box — that’s the point of the OLLAMA_BASE_URL variable.
Wiring up local AI tagging with Ollama
Add these to the same .env:
OLLAMA_BASE_URL=http://192.168.1.50:11434
INFERENCE_TEXT_MODEL=llama3.2
INFERENCE_IMAGE_MODEL=llava
INFERENCE_TEXT_MODEL handles tag generation and summaries from crawled page text. INFERENCE_IMAGE_MODEL needs a vision-capable model — it’s what tags screenshots and photos you throw into Karakeep. Both must already be pulled on the Ollama side (ollama pull llama3.2, ollama pull llava).
Two failure modes catch almost everyone, and both fail silently in the UI — tags just never appear:
Trap 1: the default model is a GPT model. If you set OLLAMA_BASE_URL but forget INFERENCE_TEXT_MODEL, Karakeep asks your Ollama server for its default model — a GPT-family name that Ollama doesn’t have. The tagging job fails on every bookmark. The fix is simply setting INFERENCE_TEXT_MODEL explicitly; check the container logs (docker compose logs web) and you’ll see the model-not-found errors immediately.
Trap 2: localhost inside Docker points at the container. OLLAMA_BASE_URL=http://localhost:11434 fails because localhost is the Karakeep container itself, not your host. Use the host’s LAN IP, http://host.docker.internal:11434 (with the extra_hosts mapping on Linux), or the service name if Ollama runs on the same Docker network. This is the same trap covered in our n8n + Ollama guide — Docker networking, not Karakeep, is the culprit.
One more documented knob worth setting: the configuration docs expose an inference context-length option, and the default is conservative. Crawled articles are long; if the page text gets truncated before the model sees it, tag quality drops. Raising it to 8192 or higher costs RAM on the Ollama side but noticeably improves tags on long-form content — the same context-window truncation issue that bites every tool in the local-AI stack, from OpenCode to Open WebUI.
How good are the tags from a small model?
Honest answer: good enough to be useful, not as consistent as GPT-4o-mini. A 3B–8B instruct model produces sensible topical tags (“self-hosting”, “kubernetes”, “recipes”) but will occasionally invent oddly specific ones or vary between “ai” and “artificial-intelligence” across bookmarks. If you have a GPU box with headroom — a used RTX 3060 12GB is the classic budget pick for a small always-on tagging model — something in the 8B–12B class (Gemma 4 12B QAT runs in about 7GB, per our Gemma 4 12B guide) tightens the consistency considerably.
The feature earns its keep retroactively: point Karakeep at an imported pile of 2,000 untagged bookmarks from your browser (standard Netscape HTML export imports fine) and let the queue churn through them overnight. Manually tagging that backlog would never actually happen.
Karakeep vs Linkwarden vs Wallabag
The 2025-era framing — “Karakeep is the only one with AI tagging” — is no longer true, and you should distrust any comparison that still claims it. Linkwarden (AGPL-3.0) added an AI worker that supports OpenAI, Anthropic, and local Ollama for auto-tagging; their docs even suggest a small model like phi3:mini-4k is enough. The real differences now:
- Linkwarden is archival-first: it captures screenshots and PDFs of every page and is built around collections and collaborative sharing, backed by PostgreSQL. Its AI tagging works but arrived later and has fewer knobs. Pick it if permanent page preservation and team use matter most.
- Karakeep is capture-everything-first: notes and images are first-class citizens alongside links, the mobile apps and extensions are polished, search got semantic in v0.33, and the AI pipeline (text + vision models, summaries, OCR on images) is deeper. Pick it for a personal, searchable everything-bucket.
- Wallabag (MIT) is a different animal: a read-it-later app in the mold of Pocket — which matters more since Mozilla shut Pocket down in 2025. No AI, no smart tagging, just reliable article extraction and a clean reading view. It’s the right choice if what you want is a reading queue, not a knowledge base.
Switching costs are low across the board — all three speak the Netscape HTML bookmark format — so a wrong first pick isn’t fatal.
When NOT to use Karakeep
- You want a reading experience. Karakeep stores and finds things; its reader view is serviceable, not lovely. Wallabag wins for actually reading.
- You need guaranteed page preservation. The crawler stores page content, but Linkwarden’s screenshot-plus-PDF capture is the stronger archival guarantee for pages that might vanish.
- You refuse to run three containers for bookmarks. Fair. A plain browser sync or a text file is lighter. Karakeep’s value scales with volume — under a few hundred bookmarks, the AI tagging solves a problem you don’t have.
- Your bookmarks are sensitive and your Ollama box isn’t. Tagging ships every saved page’s content to whatever endpoint you configure. Keep
OLLAMA_BASE_URLpointed at hardware you control, and if you’ve exposed Ollama to the internet, read our Ollama security guide first.
Verdict
Karakeep is what a self-hosted bookmark manager should look like in 2026: the AI features are integrated where they remove drudgery (tagging, summaries, semantic search) rather than bolted on for the checkbox. The AGPL license is unproblematic for personal use, the three-container stack runs on a Pi, and local tagging via Ollama genuinely works once you dodge the two config traps above. Linkwarden is a worthy alternative that has mostly caught up on AI — but Karakeep’s deeper pipeline and better capture ergonomics keep it the default recommendation. For the GPU side of the equation — what to run the tagging model on — see the hardware guides at runaihome.com.
FAQ
Does Karakeep require a GPU? No. The app runs fine on a Raspberry Pi 5 or any small VPS. Only the optional AI tagging needs an LLM endpoint, and even that can be a small model on CPU — tags arrive slower but they arrive. A GPU only matters if you want a larger model for more consistent tags.
Is Hoarder dead? Do I need to migrate?
Hoarder wasn’t discontinued — it was renamed to Karakeep in early 2025. If you’re still running an old hoarder image, switch to ghcr.io/karakeep-app/karakeep on the same data volume; the project documented the rename path and the data format carried over.
Can Karakeep use an OpenAI-compatible endpoint that isn’t Ollama? Yes. Alongside the Ollama variables, Karakeep supports pointing its OpenAI client at a custom base URL, so vLLM, llama.cpp’s server, or LM Studio work too. Ollama is simply the best-documented path and the one the maintainers call out in the README.
Sources
- Karakeep GitHub repository — README, license, release history
- Karakeep documentation — configuration reference and Docker installation
- Karakeep discussion #1038: Docker compose example using Ollama
- Karakeep issue #936: tagging failures with Ollama — the default-model trap
- Linkwarden AI worker documentation — Ollama-based tagging setup
Recommended Gear
- Raspberry Pi 5 8GB — runs the full Karakeep stack with room to spare
- RTX 3060 12GB — budget GPU for a consistent always-on Ollama tagging model
Was this article helpful?
Thanks for the feedback — it helps improve future articles.
Need hands-on help?
I offer 1-on-1 technical consulting for local AI setup, GPU selection, and AI coding tool configuration — same topics covered on this site.
Book a session — $49 / hour →What self-hosting actually costs
Real cost breakdowns for self-hosted AI: hardware floors, power, maintenance hours, and the honest comparison against paying for it. No spam, unsubscribe anytime.