# Karakeep

Bookmark manager that saves links, notes and images and can tag them with a language model.

- Replaces: [Pocket](https://openlogs.fyi/alternatives/pocket)
- Summary: Paid read-later services, such as Pocket.
- Stack: TypeScript (language)
- Deployment: docker_compose
- License: AGPL-3.0 (osi) [source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/LICENSE)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/README.md), read 2026-10-22)
- Difficulty: medium. 3 services (1 database or broker: meilisearch), 2 volume mounts, 1 env value to set, no elevated host access. Heuristic score 4 of 11: medium.
- Requirements: not stated
- Repository: [karakeep-app/karakeep](https://github.com/karakeep-app/karakeep)

## Install

1. Docker with the Compose plugin ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yml ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docker/docker-compose.yml))

   ```yaml
   services:
     web:
       image: ghcr.io/karakeep-app/karakeep:${KARAKEEP_VERSION:-release}
       restart: unless-stopped
       volumes:
         # By default, the data is stored in a docker volume called "data".
         # If you want to mount a custom directory, change the volume mapping to:
         # - /path/to/your/directory:/data
         - data:/data
       ports:
         - 3000:3000
       env_file:
         - .env
       environment:
         MEILI_ADDR: http://meilisearch:7700
         BROWSER_WEB_URL: http://chrome:9222
         # OPENAI_API_KEY: ...
   
         # You almost never want to change the value of the DATA_DIR variable.
         # If you want to mount a custom directory, change the volume mapping above instead.
         DATA_DIR: /data # DON'T CHANGE THIS
     chrome:
       image: ghcr.io/karakeep-app/karakeep-chrome:release
       restart: unless-stopped
       init: true
       command:
         - --disable-gpu
         - --disable-dev-shm-usage
         - --hide-scrollbars
         - --disable-blink-features=AutomationControlled
         - --window-size=1440,900
     meilisearch:
       image: getmeili/meilisearch:v1.41.0
       restart: unless-stopped
       env_file:
         - .env
       environment:
         MEILI_NO_ANALYTICS: "true"
       volumes:
         - meilisearch:/meili_data
   
   volumes:
     meilisearch:
     data:
   ```

3. Save as .env next to the compose file ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md#L32-L37))

   ```dotenv
   KARAKEEP_VERSION=release
   NEXTAUTH_SECRET=super_random_string
   MEILI_MASTER_KEY=another_random_string
   NEXTAUTH_URL=http://localhost:3000
   ```

4. What the compose file check ran with ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md))

   ```text
   The compose file check ran together with a .env file copied unchanged from the code block in https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md#L32-L37. The folder held only these files. The Docker install guide tells the reader to download the compose file, create a .env file with the minimal settings shown and start the service.
   ```

5. Start it ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md))

   ```bash
   docker compose up -d
   ```

6. Open the app ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docker/docker-compose.yml))

   ```text
   Open http://localhost:3000. The compose file publishes host port 3000 for the web service.
   ```

Compose file check: config_ok on 2026-10-22.

## Gotchas and maintenance

### Gotchas

- The compose file publishes host ports: Host ports: 3000 (web). A port without a host address listens on all host network interfaces. ([source](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docker/docker-compose.yml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 707
- Stars: 29884, forks: 1588
- Last push: 2026-10-22 (0 days ago)
- Latest release: v0.34.1 on 2026-10-22 (0 days ago)

## Sources

- [Repository: https://github.com/karakeep-app/karakeep](https://github.com/karakeep-app/karakeep)
- [License: https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/LICENSE](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/LICENSE)
- [Business model: https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/README.md](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/README.md)
- [Compose file: https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docker/docker-compose.yml](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docker/docker-compose.yml)
- [Install step: https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md)
- [Install step: https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md#L32-L37](https://github.com/karakeep-app/karakeep/blob/85054d9a67de08bc83029a2e960e0a0621fd715f/docs/docs/02-installation/01-docker.md#L32-L37)

---
Canonical: https://openlogs.fyi/tools/karakeep  
Last updated: 2026-10-22
