Karakeep is a self-hostable bookmark-everything app for saving links, notes, images, PDFs, and web pages, then finding them again with fast search, lists, highlights, and optional AI tagging/summarization.
This repository is not the upstream Karakeep repo. It is an opinionated personal fork of karakeep-app/karakeep focused on UX, QoL, and personal operator workflow changes while staying close to upstream.
This fork keeps the upstream Karakeep product intact in spirit, but documents and operates it as a real personal deployment:
- Origin:
absolutepraya/karakeep - Upstream:
karakeep-app/karakeep - Focus: UX polish, quality-of-life improvements, and personal deployment ergonomics
- Local dev: one-command workflow via
pnpm dev:start - Deploy model: pull-based Docker image delivery via GHCR + Watchtower
If you want the main project, releases, or community-first contribution flow, start with the upstream repo:
- Upstream repo: https://github.com/karakeep-app/karakeep
- Upstream docs: https://docs.karakeep.app
If you are here to work on this fork, the most important repo-specific guide is:
Karakeep can:
- save links, notes, images, and PDFs
- fetch link titles, descriptions, and preview images automatically
- organize bookmarks into lists and tags
- support collaborative lists
- provide full-text search across saved content
- run AI tagging and summarization (including local-model setups)
- archive pages to reduce link rot
- save and revisit highlights
- sync with browser workflows through extensions, RSS, CLI, API, and MCP tooling
- ๐ Bookmark links, store notes, images, and PDFs
- ๐ Organize bookmarks into lists
- ๐ฅ Collaborate with others on shared lists
- ๐ Search across saved content
- โจ Automatic AI tagging and summarization
- ๐๏ธ Save highlights from your reading
- ๐๏ธ Archive full pages to protect against link rot
- ๐ฐ Auto-hoard from RSS feeds
- ๐ REST API, SDKs, CLI, and MCP server
- ๐ฑ Browser extension + mobile apps
- ๐พ Self-hosting first
From the repository root:
pnpm install
ln -sf ../../.env apps/web/.env
ln -sf ../../.env apps/workers/.env
ln -sf ../../.env packages/db/.env
pnpm db:migrate
pnpm dev:startThat starts:
- the web app
- background workers
- Meilisearch in Docker
- headless Chrome in Docker
Then open:
Useful variants:
pnpm dev:start -d
pnpm dev:stoppnpm web
pnpm workersMeilisearch and headless Chrome are optional for booting the app, but required for full search/crawling behavior.
The helper below pulls the production /data state from the VPS into your local DATA_DIR.
pnpm prod:pull-state
pnpm prod:pull-state --dry-runThe command replaces local development state by default, first backing up the current DATA_DIR. It always pulls the full /data volume, including SQLite files and stored assets. Use --dry-run to inspect the plan without replacing local state.
Required root .env keys:
DATA_DIRKARAKEEP_PROD_SSH_HOSTKARAKEEP_PROD_COMPOSE_DIR
Optional root .env keys:
KARAKEEP_PROD_SSH_USERKARAKEEP_PROD_COMPOSE_SERVICEKARAKEEP_PROD_EXPORT_IMAGE
For the complete local-dev and deploy workflow, read:
- Fork/local dev/deploy guide:
docs/fork-setup.md - Docs-site development guide:
docs/README.md - Contribution guidance for this repo:
CONTRIBUTING.md
- Main docs: https://docs.karakeep.app
- Installation: https://docs.karakeep.app
- Configuration: https://docs.karakeep.app
- Development docs: https://docs.karakeep.app
- API docs: https://docs.karakeep.app/api
Upstream maintains the public demo at:
Demo credentials:
email: demo@karakeep.app
password: demodemo
The demo is read-only.
Karakeep is inspired by the Arabic word ูุฑุงููุจ (karakeeb), a colloquial term for miscellaneous clutter, odds and ends, or things that look messy but still feel worth keeping. It fits a personal library for links, notes, screenshots, and all the other things you are not ready to lose.
- Web: Next.js, React, TypeScript, Tailwind CSS
- API: Hono + tRPC
- Database: Drizzle ORM over SQLite (
better-sqlite3) - Search: Meilisearch
- Crawling: headless Chrome / browser worker flow
- Tooling: pnpm, Turborepo, oxfmt, oxlint, Vitest
This fork intentionally differs from upstream in a few practical ways:
- deploys are pull-based rather than SSH push-based
- the canonical production compose lives at
deploy/docker-compose.prod.yml knipandreact.doctorare present as additional quality toolingreact-grabis loaded only in local development for component/source capture
There are two contribution paths:
-
Upstream Karakeep contributions
- Use https://github.com/karakeep-app/karakeep
- Follow the upstream community process
-
Fork-specific contributions for this repo
- Use this repository
- Read
CONTRIBUTING.md - Prefer changes that are explicitly valuable for this forkโs UX, operator flow, or maintenance model
- Upstream Discord: https://discord.gg/NrgeYywsFh
- Upstream project site: https://karakeep.app
- Upstream cloud: https://cloud.karakeep.app
This fork remains licensed under AGPL-3.0.
Upstream Karakeep is developed by Localhost Labs Ltd. This repository is a personal fork, not the canonical upstream source.

