Local-first AI Knowledge Vault with End-to-End Encryption
Distribution model: Open Core. This repository is the MIT-licensed Core; Pro features identified in
OPEN-CORE.mdare proprietary and not included here.
Your personal knowledge vault β encrypted on your device, works offline, and stays yours. No accounts, no tracking, no one can read your data. Not even us.
Quick Start β’ Features β’ Free vs Pro β’ Documentation β’ Architecture β’ Security β’ Contributing
- End-to-end encryption β AES-256-GCM + Argon2id for secure vault storage
- Zero-knowledge vault β 24-word recovery phrase, tampering detection, fail-closed storage
- BYO AI keys β Provider keys stored encrypted in your vault, never on our servers
- No tracking β Opt-in telemetry only, works fully offline
- Client-side cryptography β All encryption/decryption happens in Web Workers, server never sees keys
- Offline-first β The app lives in your browser; your vault works without internet
- No cloud dependencies β Full Core functionality without external services
- Progressive Web App β Installable on any modern browser, plus browser extensions
- P2P sync (Pro) β Optional device-to-device sync over WebRTC; servers relay encrypted traffic, never content
- Multi-provider support β Gemini, OpenAI, Anthropic, Groq, Hugging Face, OpenRouter with your own keys
- Direct API calls β No proxy: the browser calls the provider you configure
- Free smart search β Fuse.js + semantic embeddings engine included in Core
- Pro AI surfaces (Pro) β Local model runtime, RAG orchestration, expert agents and flashcard generation
- Bookmarks & Notes β Organize your digital knowledge
- Interactive Knowledge Graphs β Visualize connections between concepts
- Advanced Search β Smart search across all your content
- Import / Export β JSON, JSONL, CSV, Markdown, HTML, Notion, Obsidian, and PDF
Most bookmark managers store your library in someone else's cloud in plain text. BookmarkForge keeps everything encrypted on your device (AES-GCM with an Argon2id-derived key), so your data is yours in the strongest sense: we couldn't hand it over even if we wanted to.
- Local-first β Your vault works fully offline. No server required.
- Zero-knowledge β Recovery phrase, tampering detection, fail-closed storage.
- P2P sync (Pro) β Device-to-device sync; servers relay encrypted traffic, never content.
- Open Core, MIT β Audit the public Core; Pro components are not included in this export.
- Node.js >= 20.19.0
- npm (comes with Node.js)
# Clone the public Core
git clone https://github.com/bookmarkforge/bookmarkforge-core.git
cd bookmarkforge
# Install dependencies
npm install
# Start the development server
npm run dev # http://localhost:5173# Type checking (production config)
npm run typecheck:prod
# Linting
npm run lint
# Fast tests (critical paths)
npm run test:fast
# Full test suite
npm run test:slow
# Production build with integrity gates
npm run build:ci
# Full gate chain (open-core, boundaries, docs, security, β¦)
npm run checkBuild for production: npm run build. See docs/architecture.md for the full topology: static web + signaling/licensing companion server.
This repository contains the MIT-licensed Core. The private distribution adds proprietary Pro components, unlocked at runtime by a signed license purchased from the official store:
| Feature | Free (Core) | Pro |
|---|---|---|
| Bookmarks | 300 | Unlimited |
| Smart search (Fuse.js + semantic) | β included | β |
| Encrypted backups & PDF/OCR | β | β |
| Flashcards from bookmarks | β | β |
| P2P device sync | β | β |
| Support | Community | Email 48h |
Buy a Pro license: bookmarkforgeapp.com β $59 Early Bird (first 200 licenses) β $79 regular.
- Architecture β System architecture and design decisions
- Security β Security model and best practices
- API Reference β Companion server API documentation
- OpenAPI Spec β OpenAPI 3.0 specification
- Documentation Index β Full documentation catalog
- Open Core Model β Licensing and feature boundaries
- Contributing β How to contribute to the Core
- Engineering Conventions β Code style and architectural rules
- Trademark Policy β Brand usage guidelines
- Core MIT License β Open source components
- Pro License β Commercial features
- English Β· EspaΓ±ol
- PDF English Β· PDF EspaΓ±ol
- The full set ships in 30 languages under
docs/: see docs/index.md.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Browser / PWA / Extension β
β React 19 + TypeScript + RxDB + IndexedDB + WebRTC β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β HTTPS/WSS
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Reverse Proxy (TLS, CSP, Static) β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββ΄βββββββββββββ
βΌ βΌ
βββββββββββββββββββ βββββββββββββββββββ
β Web Frontend β β Companion Serverβ
β (React/Vite) β β (Node/ws) β
ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ
β β
β βββΊ P2P WebSocket signaling
β βββΊ License endpoints (/api/license/*)
β βββΊ Health, CSP reports
β βββΊ Opt-in telemetry
β
βββΊ Your AI Providers (BYO key)
β’ Gemini, OpenAI, Anthropic
β’ Groq, Hugging Face, OpenRouter
β’ Ollama, WebLLM (local, Pro)
Cryptography: AES-GCM, Argon2id/HKDF, keys managed in Web Workers
- Client-first data β Vault data lives on the client
- End-to-end encryption β Encryption and decryption happen client-side
- Zero-trust model β Server never sees unencrypted data or AI keys
- Stateless services β No shared database or Redis in production
- Your AI keys are stored encrypted in your vault, never on our servers
- Vault content never leaves your device unencrypted
- No tracking β Opt-in telemetry only, no behavioral tracking
- IP privacy β Server logs never contain user IP addresses
- TLS termination at reverse proxy with HTTPS redirect and HSTS
- Content Security Policy (CSP) with strict allow-lists
- Secret scanning β Automated detection of leaked secrets in commits
- 460+ automated tests including security, crypto, and property-based tests
- Monthly DAST (OWASP ZAP) penetration testing
- CodeQL + Semgrep SAST analysis on every PR
Found a vulnerability? Please report it privately β see SECURITY.md. Please do not open public issues for security reports.
| Profile | Coverage | Command |
|---|---|---|
test:fast |
Critical paths | npm run test:fast |
test:slow |
Full test suite | npm run test:slow |
e2e:smoke |
Critical vault operations | npm run e2e:smoke |
check |
~50 gates + lint | npm run check |
- Unit / Integration β Vitest suites for security, DB, and services
- E2E β Playwright specs across Chromium, Firefox, WebKit, and Android
- Open Core boundary β
npm run check:open-coreverifies no Pro code leaks into this export - Performance budgets β Bundle size and runtime metrics enforced per feature
The code in this public repository is the MIT-licensed Core. You may run, study, modify and redistribute it under the terms in LICENSE. Proprietary Pro features and private infrastructure are intentionally excluded. The BookmarkForge name and logo remain protected by TRADEMARKS.md.
Running the Core for yourself or your team is permitted without payment.
Pro code is resolved two ways in this build, both enforced in CI by npm run check:open-core:
-
Behind the entitlement gate. Core components resolve the Pro services (encrypted backups, PDF/OCR extraction, P2P sync, and the proprietary AI surfaces β the local model runtime, RAG orchestration, expert agents and flashcard generation) through
src/services/pro-access.ts(MIT), which callshasProAccess()before fetching the Pro chunk. A Free user never downloads that code; the call rejects with a typedProUnavailableErrorthat the UI presents as a "requires Pro" state or upgrade prompt, never a silent dead button. -
Client-side AI boundary. Cloud providers are called directly by the browser with a user-supplied key; no server-side AI relay or placeholder is shipped. (The AI client tree is largely Core MIT: the BYOK cloud path and the embedding engine behind free smart search are open; see
OPEN-CORE.mdfor the exact Pro list.)
Reaching a Pro surface is never silent: the placeholder helper also dispatches open-core:pro-reached, and the loader refuses to hand out a placeholder as if it were real. Either signal opens the in-app "Available in Pro" panel (ProRequiredBoundary), which explains what happened and links to the Pro section with the current license price.
BookmarkForge ships 30 languages with complete UI translations. Each language has a Markdown source and a generated PDF under docs/. See docs/index.md for the complete list.
| Language | Markdown | |
|---|---|---|
| English | user-manual-en.md | user-manual-en.pdf |
| Spanish | manual-de-usuario-es.md | manual-de-usuario-es.pdf |
Core contributions are accepted under MIT. Do not send Pro code or copy third-party code with an incompatible license.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run the gates (
npm run check) - Commit your changes
- Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Before opening a change that crosses the Core/Pro boundary, document the decision and update the export gate. See CONTRIBUTING.md and AGENTS.md.
- Documentation β See the documentation index
- Issues β Report bugs on GitHub Issues
- Discussions β Join community discussions on GitHub Discussions
- Security β Report vulnerabilities privately via SECURITY.md
Copyright Β© 2026 BookmarkForge
This Core is free software: you can redistribute and/or modify it under the terms of the MIT License in LICENSE.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
BookmarkForge v1.0.0 β Open Core: MIT Core + proprietary Pro