[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-3164":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":33,"readmeContent":34,"aiSummary":35,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":36,"discoverSource":37},3164,"kept","egroup-labs\u002Fkept","egroup-labs","Search, archive, and recall your AI conversations. ChatGPT, Claude, Gemini, Grok, Kimi. Local-first, MIT licensed.","https:\u002F\u002Fkept.work\u002F",null,"TypeScript",111,8,2,0,4,5,28,12,56.16,"MIT License",false,"main",true,[26,27,28,29,30,31,32],"chrome-extension","claude-code","knowledge-graph","knowledge-management","local-first","mcp-server","obsidian","2026-06-12 04:00:16","\n# Kept\n\n\u003Ca href=\"https:\u002F\u002Fwww.producthunt.com\u002Fproducts\u002Fkept-ai-on-your-local-conversations?utm_source=badge-follow&utm_medium=badge&utm_source=badge-kept&#0045;ai&#0045;on&#0045;your&#0045;local&#0045;conversations\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Fapi.producthunt.com\u002Fwidgets\u002Fembed-image\u002Fv1\u002Ffollow.svg?product_id=1228638&theme=neutral\" alt=\"Kept - Your&#0032;AI&#0032;chats&#0044;&#0032;saved&#0032;as&#0032;Markdown&#0032;locally&#0032;with&#0032;no&#0032;cloud | Product Hunt\" style=\"width: 250px; height: 54px;\" width=\"250\" height=\"54\" \u002F>\u003C\u002Fa>\n\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"demo.gif\" alt=\"Kept archival illustration\" width=\"100%\" style=\"border-radius:20px;\">\n\u003C\u002Fp>\n\nKept saves your AI conversations as local Markdown files, then gives you a desktop app to search, browse, connect, and reuse them.\n\nIt works with ChatGPT, Claude, Gemini, Grok, and Kimi. Your archive lives on your machine under `~\u002F.kept\u002F`, with an Obsidian-compatible vault plus local indexes for full-text search, topics, projects, and graph views.\n\n[Quick Install](#quick-install) | [Download](#download) | [Setup](#setup) | [Build from source](#build-from-source) | [MCP server](#mcp-server)\n\n## Why Kept\n\nAI chats often become working memory: debugging trails, research notes, product decisions, prompts, snippets, and half-finished ideas. Most of that history stays inside vendor UIs.\n\nKept turns it into files you own.\n\n- Plain Markdown, grouped by provider.\n- Fast local search with SQLite FTS5.\n- Graph and topic views for finding connections across old conversations.\n- Optional chat over your own archive using the model provider you configure.\n- An MCP server so coding agents can read, search, and manage the vault.\n\n## How It Works\n\n```\nChromium browser extension\n  -> reads conversations from provider API endpoints using your signed-in session\n  -> normalizes messages and supported image assets\n  -> sends them to the Kept desktop app on http:\u002F\u002Flocalhost:18241\n\nKept desktop app\n  -> writes Markdown files to ~\u002F.kept\u002Fvault\u002F\n  -> indexes content in SQLite\n  -> builds a local knowledge graph in CozoDB\n  -> exposes search, graph, project, export, and agent tools\n\nMCP server\n  -> lets Claude Code, OpenClaw, and other MCP clients work with the vault\n```\n\nKept does not scrape rendered chat pages. The extension syncs conversation data from provider API responses and hands the normalized payload to the local app.\n\n## Supported Providers\n\n| Provider | Sync | Notes |\n| --- | --- | --- |\n| ChatGPT | Yes | Full conversations, streaming history, branch-aware saves |\n| Claude | Yes | Full conversations and streaming history |\n| Gemini | Yes | Best effort; Google's API format changes often |\n| Grok | Yes | Includes supported image assets |\n| Kimi | Yes | Uses the Kimi auth helper included in the extension |\n\nProvider APIs are private and can change without notice. Kept keeps the archive as plain files so your saved conversations stay readable even if an adapter needs an update.\n\n## Quick Install\n\nWindows PowerShell:\n\n```powershell\nirm https:\u002F\u002Fkept.work\u002Finstall.ps1 | iex\n```\n\nmacOS and Linux:\n\n```bash\ncurl -fsSL https:\u002F\u002Fkept.work\u002Finstall.sh | bash\n```\n\nThe installer downloads the latest GitHub Release, installs the desktop app, and extracts the Chromium extension to a local folder. Browsers still require you to load the extension manually in Developer Mode.\n\nThe same scripts can be run directly from GitHub:\n\n```powershell\nirm https:\u002F\u002Fraw.githubusercontent.com\u002Fegroup-labs\u002Fkept.work\u002Fmain\u002Fscripts\u002Finstall.ps1 | iex\n```\n\n```bash\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fegroup-labs\u002Fkept.work\u002Fmain\u002Fscripts\u002Finstall.sh | bash\n```\n\n## Download\n\nDesktop builds are published on [GitHub Releases](https:\u002F\u002Fgithub.com\u002Fegroup-labs\u002Fkept.work\u002Freleases\u002Flatest).\n\nCurrent release targets:\n\n- macOS Apple Silicon: `.dmg`\n- Windows x64: NSIS `.exe` installer\n- Linux x64: `.deb` and `.AppImage`\n\nThe release also includes the Chromium extension package. Until the Web Store listing is live, install the extension in developer mode.\n\n## Setup\n\n### 1. Install The Desktop App\n\nUse the [Quick Install](#quick-install) command above, or download the build for your OS from [Releases](https:\u002F\u002Fgithub.com\u002Fegroup-labs\u002Fkept.work\u002Freleases\u002Flatest), install it, and launch Kept.\n\nOn first launch, Kept creates:\n\n```\n~\u002F.kept\u002F\n  vault\u002F\n  index.db\n  kg.db\u002F\n  config.toml\n  token\n```\n\nThe app also starts a local server on `http:\u002F\u002Flocalhost:18241`. The browser extension uses this local server to send conversations into the vault.\n\n### 2. Load The Browser Extension\n\nKept supports Chromium-based browsers: Chrome, Brave, Edge, Vivaldi, Arc, Opera, and Chromium.\n\n1. Extract the extension from the release, or use `extension\u002F` from this repo.\n2. Open your browser's extensions page, for example `chrome:\u002F\u002Fextensions`.\n3. Enable Developer Mode.\n4. Click Load unpacked.\n5. Select the `extension\u002F` directory.\n\n### 3. Connect The Extension\n\nWith the Kept app running, open this page in the same browser:\n\n```\nhttp:\u002F\u002Flocalhost:18241\u002Fconnect\n```\n\nThat page gives the extension its per-install token. After that, use the extension popup or Kept onboarding flow to sync your providers.\n\n## Vault Layout\n\nKept writes conversations as Markdown with YAML frontmatter:\n\n```\n~\u002F.kept\u002Fvault\u002F\n  chatgpt\u002F\n    2026-05-02_optimizing-cuda-kernel.md\n  claude\u002F\n    2026-05-02_kept-readme-draft.md\n  gemini\u002F\n  grok\u002F\n  kimi\u002F\n```\n\nYou can open `~\u002F.kept\u002Fvault\u002F` directly in Obsidian, VS Code, or any editor. The files are the source of truth; the search and graph databases can be rebuilt from them.\n\n## MCP Server\n\n`mcp\u002F` is an MCP server named `kept-vault-server`. It lets agentic clients list, read, write, search, rename, and delete files in your Kept vault.\n\nInside Claude Code:\n\n```text\n\u002Fplugin marketplace add egroup-labs\u002Fkept.work\n\u002Fplugin install kept-vault@kept-plugins\n```\n\nOne-line installer for Linux and macOS:\n\n```bash\nbash \u003C(curl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Fegroup-labs\u002Fkept.work\u002Fmain\u002Fscripts\u002Finstall-kept-mcp.sh)\n```\n\nPowerShell:\n\n```powershell\n& ([scriptblock]::Create((irm https:\u002F\u002Fraw.githubusercontent.com\u002Fegroup-labs\u002Fkept.work\u002Fmain\u002Fscripts\u002Finstall-kept-mcp.ps1)))\n```\n\nSet `KEPT_VAULT_PATH` if your vault is not at `~\u002F.kept\u002Fvault`.\n\nTools exposed by the server:\n\n- `list_vault`\n- `list_directory`\n- `read_file`\n- `write_file`\n- `update_file`\n- `delete_file`\n- `move_file`\n- `grep_vault`\n\n## Build From Source\n\nRequirements:\n\n- Node.js 20+\n- Rust toolchain\n- A Chromium-based browser\n- Optional: [Ollama](https:\u002F\u002Follama.com\u002F) for local models and embeddings\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Fegroup-labs\u002Fkept.git\ncd kept\u002Fapp\nnpm ci\nnpm run tauri dev\n```\n\n### Linux Dependencies\n\nUbuntu\u002FDebian:\n\n```bash\nsudo apt install -y \\\n  build-essential clang libclang-dev pkg-config \\\n  libgtk-3-dev libwebkit2gtk-4.1-dev libsoup-3.0-dev \\\n  libpango1.0-dev libcairo2-dev libgdk-pixbuf-2.0-dev libglib2.0-dev\n```\n\n`build-essential`, `clang`, and `libclang-dev` are required for Rust crates that\nuse `bindgen` (e.g. `zstd-sys` pulled in by CozoDB). The rest are the GTK \u002F\nWebKitGTK \u002F GLib stack Tauri 2 links against.\n\nThen run:\n\n```bash\nnpm run tauri:dev:linux\n```\n\n### Frontend-Only Mode\n\nYou can run the UI against mock data without the Rust app:\n\n```bash\ncd app\nnpm ci\nnpm run dev\n```\n\nVite serves the UI at `http:\u002F\u002Flocalhost:1420`.\n\n## Repository Layout\n\n```\napp\u002F                Tauri 2 desktop app\n  src\u002F              React frontend\n  src-tauri\u002F        Rust backend, Axum server, vault, search, graph, agent tools\nextension\u002F          Chromium extension\n  platforms\u002F        Provider sync adapters\nmcp\u002F                MCP server for the vault\nscripts\u002F            App and MCP install scripts\n```\n\n## Privacy And Security\n\n- Core archive and search data stays on your machine in `~\u002F.kept\u002F`.\n- The extension talks to the desktop app over `localhost` and must include the bearer token stored at `~\u002F.kept\u002Ftoken`.\n- Kept has no hosted account and no cloud sync.\n- Optional chat, topic discovery, and graph features call only the model provider you configure, or your local Ollama server.\n- The updater checks the configured Kept update endpoint for new desktop releases.\n\n## Contributing\n\nIssues and pull requests are welcome. Conventional commits are preferred:\n\n```text\nfeat(scope): add ...\nfix(scope): repair ...\n```\n\nUseful areas to start:\n\n- `extension\u002Fplatforms\u002F` for provider adapters\n- `app\u002Fsrc-tauri\u002Fsrc\u002Fvault.rs` for vault writes\n- `app\u002Fsrc-tauri\u002Fsrc\u002Fdb.rs` for search indexing\n- `app\u002Fsrc-tauri\u002Fsrc\u002Fkg-gen\u002F` for graph generation\n- `mcp\u002Fsrc\u002F` for MCP vault tools\n\n## License\n\nMIT\n","Kept 是一个用于搜索、归档和回溯 AI 对话的工具，支持 ChatGPT、Claude、Gemini、Grok 和 Kimi 等主流AI聊天平台。它通过浏览器扩展从这些平台同步对话，并将内容保存为本地 Markdown 文件，便于用户在没有网络的情况下也能访问自己的对话历史。Kept 的核心功能包括快速本地搜索（基于 SQLite FTS5）、知识图谱构建与主题视图等，旨在帮助用户更好地管理和重用他们的AI交流记录。该工具特别适合需要长期保存并频繁回顾AI辅助工作过程的研究人员、开发者以及任何重度依赖AI助手进行思考和决策的人士。","2026-06-11 02:52:42","CREATED_QUERY"]