CTK: Manage All Your AI Conversations in One Place
Source: Dev.to
Overview
CTK (Conversation Toolkit) is a powerful, plugin‑based system for managing AI conversations from multiple providers. It lets you import, store, search, and export your conversations in a unified tree format while preserving provider‑specific details.
If you use multiple AI assistants, you’ve likely experienced these pain points:
- ChatGPT conversations live in OpenAI’s web app
- Claude conversations are siloed in Anthropic’s interface
- GitHub Copilot chat history is buried in VS Code storage
- Local LLMs (Ollama, etc.) have no standard export format
Result: Your valuable conversations are scattered across incompatible platforms, unsearchable, and at risk of being lost.
CTK provides a universal tree representation for all conversations:
User: "What is Python?"
└── Assistant: "Python is a programming language..."
└── User: "How do I install it?"
└── Assistant: "You can install Python by..."
Key insight: Linear chats are single‑path trees. Branching conversations (e.g., ChatGPT’s “regenerate” feature) are multi‑path trees, preserving all branching structure while offering a uniform interface.
Setup
pip install conversation-tk
Import from Multiple Providers
ctk import chatgpt_export.json --db my_chats.db
ctk import claude_export.json --db my_chats.db --format anthropic
Search with Beautiful Tables
ctk search "python async" --db my_chats.db --limit 10
Interactive Chat – Talk with All Your Conversations
ctk chat --db my_chats.db
The chat command creates a conversational interface where you can:
- Ask questions about your history – e.g., “What did I discuss with Claude about Python decorators last month?”
- Get summaries – e.g., “Summarize my recent conversations about machine learning.”
- Find patterns – e.g., “What topics come up most often in my ChatGPT conversations?”
- Perform operations – e.g., “Star all conversations about async programming.”
The LLM has access to the entire conversation database and can search, filter, and manipulate it through natural language via tool calling.
LLM‑Powered Tool Calling
ctk say "show me starred conversations" --db chats.db
ctk say "find discussions about async python" --db chats.db
ctk say "star the last conversation about machine learning" --db chats.db
The LLM interprets your command and invokes the appropriate CTK tools, enabling natural‑language operations such as starring, tagging, and exporting.
Provider Support
| Provider | Branch Support |
|---|---|
| ChatGPT | ✅ Full tree (preserves regenerations) |
| Claude | ✅ Full tree |
| GitHub Copilot | Linear |
| Google Gemini | Partial |
| Generic JSONL | Linear (for local LLMs) |
Core Guarantees
- 100 % local – no data leaves your machine.
- No analytics or telemetry.
- Optional secret masking for safe sharing.
Terminal UI for Visual Management
- Browse conversations with a Rich table view.
- Emoji flags for status: ⭐ (starred) 📌 (pinned) 📦 (archived).
- Tree view for branching conversations.
- Fork conversations to explore alternatives.
- MCP tool support.
Export Formats
JSONL for Training
ctk export training.jsonl --db chats.db --format jsonl
Path Selection for Branching Conversations
ctk export out.jsonl --db chats.db --path-selection longest
CTK is built for preserving AI conversations long‑term. Export to formats that will survive platform changes:
- HTML5 – self‑contained, works in any browser.
- Markdown – plain text, readable anywhere.
- JSON – structured data, easy to parse decades later.
Repository & Documentation
- GitHub:
- Full documentation: See the repository README.