CTK: Manage All Your AI Conversations in One Place

Published: (December 16, 2025 at 03:45 AM EST)
3 min read
Source: Dev.to

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

ProviderBranch Support
ChatGPT✅ Full tree (preserves regenerations)
Claude✅ Full tree
GitHub CopilotLinear
Google GeminiPartial
Generic JSONLLinear (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.
Back to Blog

Related posts

Read more »