nb is a command-line note-taking, bookmarking, and archiving tool with Git-backed versioning, encryption, full-text search, tagging, pinning, and a built-in web server for browsing. It is implemented primarily as a single portable Bash script, with optional Go, Ksh, and Zsh wrappers. The architecture is a monolith CLI with a plugin system for extending subcommands and themes. Key entry points are the `nb` script and its aliases `bin/notes` and `bin/bookmark`. Data flows involve creating/editing notes in `NB_DIR`, where each notebook is a Git repository; operations create automatic commits, and an `.index` file per folder maintains ordering. The tool supports multiple notebooks, nested folders, encryption (OpenSSL/GPG), bookmark import from browsers, and remote sync via Git. The extensive test suite (2200+ BATS tests) covers all major features and edge cases.
Karakeep is a self-hostable bookmarking and read-it-later application. It supports saving links, notes, images, PDFs, and videos, with AI-powered auto-tagging, summarization, and semantic search. The system consists of a Next.js web app, an Expo React Native mobile app, a browser extension (Chrome/Firefox/Safari), a CLI, a Model Context Protocol (MCP) server, and a set of background workers (crawler, embeddings, feeds, webhooks, rule engine, backups). The backend uses tRPC for API, Drizzle ORM with SQLite, and a plugin system for swapping infrastructure (asset stores, queues, search, rate limiting). The architecture is monorepo with shared packages for types, server utilities, and React hooks. It is actively maintained with frequent releases and a large community.