Archive your AI chats.
No cloud needed.

What's Kept?

Kept captures conversations from popular LLM providers and writes them to your filesystem as plain markdown.

Readable, grep-able, yours. One markdown file per conversation, indexed across every supported provider.

How do I get it?

$ curl -fsSL https://kept.work/install.sh | bash
~/.kept  —  your archive on disk
~ $
Markdown-native
Local-first
Cross-platform
Community-driven
MIT license
How it works

Capture, search, use, integrate.

@kept
01 · capture
Use @kept inline if you want manual control over what gets saved. Capture works against the same DOM and APIs you already use; nothing is scraped you didn't trigger.
find
02 · search
Look for an exact word and you get instant full-text matches across every conversation, with platform, date, and length filters. Ask in plain English and you get relevant passages with citations back to the source — same archive, same vault, two lenses.
use
03 · use
Anything that reads markdown can use the archive — your editor, ripgrep, Obsidian, a diff against last quarter. Continue any chat in-app against your own keys, or let the tools you already trust do the work.
link
04 · integrate
Kept ships an MCP server, so any MCP-aware client can read, write, and search your vault. Point it at your Claude Code projects to manage skills and memory in one place, or sync the vault into Obsidian with one command.
Supported features

What's included.

Everything below is in the public release on GitHub. No premium tier, no waitlist. If something is broken, open an issue.

Feature What it does Status
01 · Capture & storage
@kept in any chat
Type the trigger inline and a palette appears over it. Save the full conversation, the last N messages, or a specific branch. Works in ChatGPT, Claude, Gemini, Grok, and Kimi.
stable
Background auto-sync
The Chrome extension writes new conversations to the vault as they happen, on a configurable interval. SHA-256 dedup, no doubles.
stable
Markdown vault
Every conversation is a plain markdown file with YAML frontmatter, written to your filesystem. Diffable, grep-able, and readable in any editor on the planet.
stable
BYOK
Bring your own keys for OpenAI, Anthropic, or OpenRouter. Or run local models via Ollama. The inference layer is yours to choose.
stable
02 · Search & recall
Full-text search (FTS5)
SQLite FTS5 indexes every word in every conversation. Filter by platform, date, or message count. Fast on archives in the tens of thousands.
stable
Smart Recall
Ask plain-English questions across the archive. Semantic search returns the right passages even without exact keywords, with citations back to the source conversation.
included
Topics
Conversations are auto-clustered by theme. No manual tagging required; related threads surface alongside whatever you're looking at.
included
Knowledge graph
Entities, decisions, and relationships are extracted from every conversation and linked into a graph you can explore, query, and pivot through.
included
03 · Use the archive
Continue in-app
Pick up an archived conversation against any provider you have a key for, without going back to the original platform.
included
Code execution
Run scripts inside Kept against your archive — process data, automate workflows, compute over conversations. Each execution prompts for explicit consent.
use responsibly
Filesystem context
Point Kept at any directory and bring those files into the agent's context — read, search, and reference local code or notes alongside your archived chats.
use responsibly
PDF and image reading
Drop PDFs and screenshots into a conversation; Kept extracts text and passes them to the agent as part of the context.
included
Claude Code integration
Manage skills, memory, and templates across your Claude Code projects from inside Kept. Edit, diff, and copy files between projects without leaving the app.
use responsibly
MCP server
Kept ships kept-vault-server on npm — an MCP server that exposes your vault to any MCP-aware client (Claude Desktop, Cursor, Cline, etc.) for read, write, and search.
use responsibly
Digests
Weekly recaps, project summaries, and decision logs generated across the archive. Plain markdown, exportable, editable.
included
Obsidian export
Copy the vault into an existing Obsidian vault you point Kept at. Re-running preserves any edits you've made on the Obsidian side.
included
Install

Three steps. No account.

Download the desktop app, sideload the extension, type @kept in a chat. The vault writes to your home directory; nothing else needs setup.

01 · desktop app
Run the install command
Detects your platform, fetches the right build, and registers the MCP server. Works on Linux, macOS, and Windows.
$ curl -fsSL https://kept.work/install.sh | sh
Or browse the releases page and grab a specific build.
02 · chrome extension
Sideload the extension
It's not in the Web Store yet. Loading it unpacked takes about a minute. Developer mode in chrome://extensions required.
Extension .zip
1Unzip to a local folder
2chrome://extensions → enable Developer mode
3Load unpacked → select unzipped folder
4# Kept icon appears in toolbar
03 · start capturing
Type @kept in a chat
Open any supported platform and type the trigger to bring up the palette. Or enable auto-sync and forget it's there.
·Supported: ChatGPT · Claude · Gemini
·Supported: Grok · Kimi
 
# vault is at ~/.kept/vault by default
FAQ

Common questions.

Yes. The public release on GitHub is the full feature set; there's no premium tier and no gated build. MIT licensed. If you want to support the project, star the repo or send a friend a link.

Nothing leaves your machine by default. Conversations are stored locally in SQLite and as markdown on your filesystem. If you use Smart Recall or the knowledge graph against a cloud API (OpenAI, Anthropic, OpenRouter), those queries go to that provider — same as a normal API call. Pointing Kept at Ollama keeps everything on-device end to end.

The Web Store review queue takes time, especially for an extension that touches multiple AI sites. The extension is feature-complete; loading it unpacked is straightforward and the instructions are in the install section above. It'll go through the store eventually.

Two things. First: Kept's own agent can call any MCP server you connect, so the AI layer in Kept gets access to the same tools you'd use in Claude Desktop, Cursor, or other MCP-aware clients. Second: Kept ships kept-vault-server on npm, which exposes your vault over MCP — so you can plug your archive into those other clients and read, write, or search it from there.

Not currently. The vendors don't expose write APIs for chat history, and we'd rather not ship a fragile DOM-injection workaround that breaks on every UI redesign. If a clean way to do it shows up, it'll be opt-in and clearly labeled. In the meantime, "Continue any chat in-app" runs the conversation forward against your own API key, against any provider you have one for.

The markdown vault is where Kept writes by default — its own directory under your home folder. "Obsidian export" is a separate, opt-in operation that copies the vault into a folder you point Kept at. The reconciliation logic preserves any edits you've made on the Obsidian side, so re-runs don't clobber your annotations. It's not full two-way sync; if you need writes to flow from Obsidian all the way back into Kept's index, that's roadmap.

Yes. The repo is on GitHub under MIT. Open issues, send PRs, or just star it to help with visibility. The desktop app is Rust + TypeScript; the extension is vanilla JS; the MCP server is TypeScript. The contribution guide is in the repo.

Try it.
It's just markdown.

Download the desktop build for your platform, sideload the extension, and type @kept in any supported chat. The vault writes to your home directory.