mothermachine

Browse / Notes and knowledge

Karakeep

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

AdaptableOperable Business appWeb app Hybrid TypeScript MCP server License: AGPL-3.0

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.

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

Last activity Aug 31, 2026. Fit: adaptable 2, operable 3.

Editions

Free · Free open source

  • Clonegit clone https://github.com/karakeep-app/karakeep
  • ImageContainer
  • Installnpx @karakeep/mcp

For agents: JSON · Markdown

Adaptable: what is yours to change

Make it yours

Config only31 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 need
OpenAI or another OpenAI-compatible provider (optional, for tagging)Ollama (optional, local alternative)

Source

Operable: what an agent can drive

Interface

OfficialMCP serverpublished by the builderlocal

How an agent can drive an Operable Listing, in five levels: native (built for the agent as the primary interface), official (the Builder ships an agent interface), wrapped (a third party wraps the software's API), config (an agent can only drive it by editing files), gui (screen control only). An interface is official only when it is published by the same organization that ships the software. GUI-level Listings are allowed and sorted last.

Docs
github.com/karakeep-app/karakeep/tree/main/apps/mcp
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

Reach

Partial coverage. 8 of 10 jobs reachable through the stated interface.

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

Code stack

Languages
TypeScript
Frameworks
Next.jsDrizzletRPC
Package manager
pnpm
Database
SQLiteMeilisearch
Hosting target
docker
Built
Mixed (recorded, never ranked)

Model stack

Providers
OpenAI-compatibleOllama
Models
none
Keys you need
OPENAI_API_KEY OPENAI_BASE_URL OLLAMA_BASE_URL INFERENCE_TEXT_MODEL INFERENCE_IMAGE_MODEL EMBEDDING_OPENAI_API_KEY
Prompts live in
none

Skills

Ships a single skill alongside the app and its MCP server.

Kind
bundled
Paths
skills/SKILL.md

Evidence and confidence

FieldWhere it was seenConfidence
formFactorREADME: NextJS web app with app router; docker install docs95%
executionModelREADME: LLM-based automatic tagging and summarization, local models through Ollama; core CRUD needs no model80%
operabilityapps/mcp in the same repo and org; README 'Supported Tools' list95%
effortdocs.karakeep.app/configuration: configuration handled entirely through environment variables90%
editionsREADME: self-hosting first; no paid edition found on karakeep.app85%
activepushedAt 2026-08-31; release 0.33.1 on HN 2026-08-01–
provenanceCLAUDE.md and AGENTS.md at repo root; project predates them (2024)40%
reach90%

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