A local-first archive, search, and intelligence engine
for your LLM conversation history.
$ pip install ricoeur
Import, search, analyze, and explore your conversations across platforms β entirely on your machine.
Your data stays on your machine. SQLite database, no cloud required. Full ownership of your conversation archive.
ChatGPT exports, Claude exports, and Claude Code sessions read straight from disk. Gemini and custom JSON imports coming soon.
FTS5-powered instant search across all messages. Filter by platform, language, model, date, or role.
Browse, search, and read your entire archive without leaving the terminal. Markdown-rendered conversations, instant keyword search, keyboard-driven.
No export step. ricoeur reads the session logs Claude Code writes as it works, archiving your prompts, its replies, and the code it wrote β tagged with the repo each session ran in.
BERTopic-powered topic modeling. Discover themes and patterns in your conversation history automatically.
Embedding-powered similarity search using sentence-transformers or Ollama. Find conversations by meaning, not keywords.
Expose your archive as a Model Context Protocol server. Let your current AI access your past conversations.
Import your data, search your history, discover patterns.
# Install ricoeur pip install ricoeur # Initialize database ricoeur init Initialized ricoeur at ~/.ricoeur # Import your ChatGPT export ricoeur import chatgpt ~/Downloads/export.zip Import from ChatGPT Parsed: 3,756 conversations (42,618 messages) New: 3,756 # ...and your Claude export ricoeur import claude ~/Downloads/claude-export.zip Parsed: 412 conversations (5,908 messages) # Check your archive stats ricoeur stats
# Claude web & desktop: Settings β Privacy β Export data ricoeur import claude ~/Downloads/claude-export.zip Import from Claude Parsed: 412 conversations (5,908 messages) New: 412 # Artifacts, analysis-tool code and reasoning are recovered # from the export's structured blocks, not left as placeholders # Claude Code needs no export β sessions are already on disk ricoeur import claude-code Import from Claude Code Parsed: 87 conversations (7,981 messages) New: 83 Skipped: 4 Code blocks: 6,058 extracted # Run it again to catch up β unchanged sessions are skipped, # growing ones gain only their new messages ricoeur import claude-code New: 0 Updated: 2 Skipped: 85 # Sessions are tagged with the repo they ran in ricoeur stats --project ricoeur # Search one platform, or all of them at once ricoeur search "schema migration" --platform claude-code ricoeur search "schema migration" # Search the code Claude Code actually wrote ricoeur search "ALTER TABLE" --code
# Hybrid search (keyword + semantic, default) ricoeur search "deployment strategies" Found 18 results for "deployment strategies" (hybrid) # Semantic search β find by meaning, not keywords ricoeur search "how to containerize apps" --semantic # Keyword search (FTS5) ricoeur search "neural networks" --keyword # Filter by platform and language ricoeur search "API design" --platform chatgpt --lang en # Search only in code blocks ricoeur search "async def" --code --limit 10 # More output formats coming: json, full, ids
| Date | Platform | Msgs | Title |
|---|---|---|---|
| 2026-05-30 | chatgpt | 24 | Deploying FastAPI on Fly.io |
| 2026-05-29 | claude | 8 | Rust lifetimes, explained simply |
| 2026-05-29 | chatgpt | 41 | Designing a hybrid search ranker |
| 2026-05-28 | claude | 15 | SQLite FTS5 vs. vector embeddings |
| 2026-05-27 | chatgpt | 6 | Refactoring a Textual DataTable |
| 2026-05-26 | claude | 33 | BERTopic for conversation clustering |
| 2026-05-25 | chatgpt | 12 | Async patterns in modern Python |
| 2026-05-24 | claude | 19 | Local-first app architecture notes |
A focused, composable interface for your conversation history.
To understand oneself is to understand oneself in front of the text.Paul Ricoeur