Skip to content

Latest commit

 

History

2,686 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Marka

A private library for everything worth keeping.
Save links, notes, images, PDFs, and web pages, then find them again when they matter.

CI CodeRabbit Reviews License Node.js 24.18.1 pnpm 11.2.1

Marka is a self-hostable bookmark library built for people who want their saved knowledge close, searchable, and under their control.

What you can do

  • Save links, notes, images, PDFs, and web pages in one place
  • Fetch titles, descriptions, previews, screenshots, and archived content automatically
  • Organize everything with lists, tags, rules, and collaborative sharing
  • Search across your saved content with full-text search
  • Add highlights while reading and find them again later
  • Use optional AI tagging and summarization, including local-model setups
  • Capture content through browser extensions, RSS, CLI, API, and MCP tooling

Self-host Marka

For a Linux amd64 host with Docker Engine, Docker Compose v2, and OpenSSL already installed:

curl -fsSLo /tmp/marka-setup.sh https://raw.githubusercontent.com/absolutepraya/marka/main/scripts/install.sh && bash /tmp/marka-setup.sh

The guided installer configures the application, search, browser rendering, and optional AI. It writes secrets to restricted env files, validates the generated Compose stack, and starts the deployment.

The default listener is 127.0.0.1:3000. For an Internet-facing deployment, put a reverse proxy with TLS in front of it. The installer does not install Docker, configure DNS, change firewall rules, or provision certificates.

For reproducible setup, replace main with a reviewed release tag or commit SHA:

REF=<tag-or-commit-sha>; curl -fsSLo /tmp/marka-setup.sh "https://raw.githubusercontent.com/absolutepraya/marka/${REF}/scripts/install.sh" && bash /tmp/marka-setup.sh

Read the guided installation guide for all configuration modes and rollback details.

Develop Marka

Start with CONTRIBUTING.md for contribution rules and docs/operator-setup.md for local development and deployment workflows.

Runtime prerequisites

The supported local development runtime is:

  • Node.js 24.18.1 from .nvmrc
  • pnpm 11.2.1 through Corepack, as pinned in package.json
  • Git and a Docker-compatible runtime, such as OrbStack on macOS
  • wt for isolated worktrees

After the repository is configured, the normal development command is:

pnpm dev:start

pnpm dev:start runs the current worktree's web and workers processes. It reuses one machine-level Chrome/CDP service at 127.0.0.1:9250 and one Meilisearch service at 127.0.0.1:7700. Each worktree keeps its own SQLite/assets directory, web port, and Meilisearch index namespace. Worktree slot 1 uses web port 3100, slot 2 uses 3200, and so on. Shared Chrome can be moved with MARKA_DEV_CHROME_PORT when the default port is occupied.

The repository is supported by wt:

wt new ui-polish
wt ls

The project configuration in .wt/config.toml prepares isolated dependencies, data, ports, and Meilisearch namespaces for each worktree.

Pull production state into local development

Use the safe dry run first:

pnpm prod:pull-state --dry-run

The command reads the root .env, connects to the personal VPS, and replaces the current worktree's local data only when run without --dry-run. It backs up the existing DATA_DIR before restoring the full production /data volume.

The personal VPS compose project is /home/praya/marka, configured through KARAKEEP_PROD_COMPOSE_DIR. The service and export image have documented defaults in the script, while machine-specific values belong in .env and must not be committed.

Roadmap

Marka Roadmap

Open the editable Excalidraw source

License

Marka is licensed under AGPL-3.0.

Attribution

Marka builds on the open-source Karakeep project.