# Karakeep

Self-hosted bookmark-everything app with an official MCP server, CLI, and REST API.

Karakeep (formerly Hoarder) stores links, notes, images, and PDFs, archives full pages, and tags them with an LLM you choose. The Builder ships an MCP server (apps/mcp, published as @karakeep/mcp) on top of the REST API, so an agent can create, search, list, tag, and highlight bookmarks against a self-hosted instance.

Alternative to: Raindrop.io, Pocket

- Capabilities: adaptable, operable
- Vertical: notes-knowledge
- Shape: business-app
- Form factor: web-app
- Execution model: hybrid
- Provenance: mixed (recorded, never ranked)
- Repo: https://github.com/karakeep-app/karakeep (AGPL-3.0), 28741 stars, last commit 2026-08-31
- Last activity: 2026-08-31
- Page: apps/karakeep-app--karakeep.html
- JSON: apps/karakeep-app--karakeep.json

## Use it when

- you want an agent to file every link you send it into lists and tags on a server you control
- you are replacing Pocket or Omnivore and want full-page archives with LLM tagging from a local Ollama

## Gotchas

- AGPL-3.0: a modified instance you host for others must publish its source
- docker-compose expects Meilisearch and a headless Chrome sidecar; without them search and crawling degrade
- MCP server exposes tools only, no resources; RSS feeds, rules, and admin stay in the UI or REST API

## Editions

- Free: Free, open source
  - source: https://github.com/karakeep-app/karakeep
  - container: docker compose up -d
  - installable: npx @karakeep/mcp

## Adaptable: make it yours

Effort: config-only (31 things to edit)

Everything is env-driven; docs.karakeep.app/configuration says no config file is used. Point DATA_DIR at a volume, set NEXTAUTH_SECRET and NEXTAUTH_URL, then pick an inference backend (OPENAI_API_KEY plus INFERENCE_TEXT_MODEL, or OLLAMA_BASE_URL) and toggle INFERENCE_ENABLE_AUTO_TAGGING, INFERENCE_ENABLE_AUTO_SUMMARIZATION, and SEMANTIC_SEARCH_ENABLED. Crawler behavior (screenshots, PDFs, full-page archive, yt-dlp) is a set of CRAWLER_* switches. The MCP client needs KARAKEEP_API_ADDR and KARAKEEP_API_KEY.

- Env vars: DATA_DIR, NEXTAUTH_SECRET, NEXTAUTH_URL, PORT, DISABLE_SIGNUPS, OAUTH_WELLKNOWN_URL, OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, OPENAI_API_KEY, OPENAI_BASE_URL, OLLAMA_BASE_URL, INFERENCE_TEXT_MODEL, INFERENCE_IMAGE_MODEL, INFERENCE_LANG, INFERENCE_ENABLE_AUTO_TAGGING, INFERENCE_ENABLE_AUTO_SUMMARIZATION, SEMANTIC_SEARCH_ENABLED, EMBEDDING_TEXT_MODEL, MEILI_ADDR, MEILI_MASTER_KEY, BROWSER_WEB_URL, CRAWLER_FULL_PAGE_ARCHIVE, CRAWLER_STORE_SCREENSHOT, CRAWLER_VIDEO_DOWNLOAD, OCR_LANGS, ASSET_STORE_S3_BUCKET, SMTP_HOST, KARAKEEP_API_ADDR, KARAKEEP_API_KEY
- Config files: docker-compose.yml, .env
- Prompt files: none
- Accounts you'll need: OpenAI or another OpenAI-compatible provider (optional, for tagging); Ollama (optional, local alternative)

## Operable: what an agent can drive

Operability: official. Interface: mcp at https://github.com/karakeep-app/karakeep/tree/main/apps/mcp (published by the builder, local).

### Reach (partial coverage)

- Bookmark links, notes, images, and PDFs: reachable. create-bookmark creates text and URL bookmarks; get-asset covers stored files (apps/mcp/README.md)
- Full text and semantic search: reachable. search-bookmarks tool
- Sort bookmarks into lists and smart lists: reachable. get-lists, create-list, update-list (query field for smart lists), add-bookmark-to-list
- Tag bookmarks: reachable. get-tags, update-tag, attach-tag-to-bookmark, detach-tag-from-bookmark
- Highlight and annotate stored content: reachable. list-highlights, create-highlight, update-highlight, delete-highlight
- Full page archival and video archiving: reachable. crawler runs automatically after create-bookmark; no tool to re-archive on demand
- LLM auto-tagging and summarization: reachable. runs server-side on new bookmarks when inference env vars are set; no tool to trigger it explicitly
- Share a list with collaborators or publicly: reachable. update-list accepts the public flag; collaborator invites not in the tool list
- Subscribe to RSS feeds for auto-hoarding: not reachable. no feed tool in apps/mcp; REST API and web UI only
- Rule engine, webhooks, and user administration: not reachable. not exposed by the MCP server; web UI and REST API only

## Code stack

- Languages: TypeScript
- Frameworks: Next.js, Drizzle, tRPC
- Package manager: pnpm
- Database: SQLite, Meilisearch
- Hosting target: docker

## Model stack

- Providers: OpenAI-compatible, Ollama
- Models: none
- Keys you need (names only): OPENAI_API_KEY, OPENAI_BASE_URL, OLLAMA_BASE_URL, INFERENCE_TEXT_MODEL, INFERENCE_IMAGE_MODEL, EMBEDDING_OPENAI_API_KEY
- Prompts live in: none
- Tools: search-bookmarks, get-bookmark, get-bookmark-content, create-bookmark, update-bookmark, delete-bookmark, get-lists, create-list, update-list, add-bookmark-to-list, get-tags, attach-tag-to-bookmark, get-asset, list-highlights, create-highlight

## Skills

bundled: Ships a single skill alongside the app and its MCP server.
- Paths: skills/SKILL.md

## Evidence and confidence

- formFactor: README: NextJS web app with app router; docker install docs (confidence 0.95)
- executionModel: README: LLM-based automatic tagging and summarization, local models through Ollama; core CRUD needs no model (confidence 0.8)
- operability: apps/mcp in the same repo and org; README 'Supported Tools' list (confidence 0.95)
- effort: docs.karakeep.app/configuration: configuration handled entirely through environment variables (confidence 0.9)
- editions: README: self-hosting first; no paid edition found on karakeep.app (confidence 0.85)
- active: pushedAt 2026-08-31; release 0.33.1 on HN 2026-08-01
- provenance: CLAUDE.md and AGENTS.md at repo root; project predates them (2024) (confidence 0.4)
- reach:  (confidence 0.9)

## Open questions

- Does the REST API expose feed subscriptions and rules so a second interface could reach them?
- Confirm the CLI (docs.karakeep.app/integrations/command-line) covers admin tasks the MCP omits

## Sources

- https://github.com/karakeep-app/karakeep (sourcing:notes-knowledge:community)
- https://github.com/karakeep-app/karakeep/tree/main/apps/mcp (analysis)
- https://docs.karakeep.app/configuration (analysis)
