AI Conversation Viewer 🔍
A beautiful, unified web interface for browsing and searching your AI conversation history across multiple platforms.
✨ Features
- 🤖 Multi-IDE Sources — Claude, Qwen, and Cursor/Trae/Kiro views with quick switcher
- 🔎 Global & Scoped Search — Search across all IDEs or within a session, with term highlighting
- 📁 Project & Session Browsing — Grouped by date with activity timeline and rich metadata
- 💻 Markdown + Code Highlight — Pygments-driven fenced code rendering and inline code styling
- 🧩 Tool Use Visualization — Structured tool calls rendered with readable params and outputs
- 🧾 Diff Viewer for Edits — Inline unified diff for Edit tool results with added/removed lines
- 🎛️ Filters & Pagination — Filter by role (User/Assistant/Summary), page size, and paginate large threads
- 🎨 Modern UX — Dark/light theme toggle, responsive layout, copy buttons on code blocks
- 🌍 Internationalization — Language switcher (English/中文) with consistent UI labels
- 📈 Dashboard & Stats — Global statistics cards and recent sessions across all sources
Feature Details
-
Multi-IDE support
- Toggle views for
Claude/Qwen/Cursor/Trae/Kirodirectly from the header - Default data paths are auto-detected; override via environment variables:
CLAUDE_PROJECTS_PATH,QWEN_PROJECTS_PATH,CURSOR_WORKSPACE_STORAGE_PATH,TRAE_WORKSPACE_STORAGE_PATH,KIRO_WORKSPACE_STORAGE_PATH
- Toggle views for
-
Project and session browsing
- Projects listed with session counts, modified time, and display names derived from workspace metadata
- Sessions show message count, size, modified time, and extracted title; timeline view for recent activity
-
Conversation viewer
- Markdown rendering with syntax highlighting for fenced blocks and inline code
- Search within a conversation with keyword highlighting; filter by
user/assistant/summary - Large results are paginated with quick controls; long tool outputs are safely truncated when needed
- Tool calls are rendered in human-friendly format, including parameters and results
- Edit tool results include an inline unified diff with line numbers and add/remove markers
-
Global dashboard and search
- Global search across all IDEs with previews and quick navigation to sessions
- Statistics cards per IDE: project/session counts and availability, plus recent sessions listing
-
Internationalization and theming
- Language toggle via cookie; fully localized UI labels in English/Chinese
- Theme toggle with persisted dark/light mode; mobile-responsive layout
-
Health and diagnostics
/healthendpoint surfaces counts and paths for each IDE store to aid setup and troubleshooting
Favorites & Annotations
- Save sessions and individual messages to a persistent favorites store
- Click the star button on a session header or per-message row to add to favorites
- Open the Favorites page from the header to browse, filter, edit, and remove
- Storage
- Persisted in SQLite at
~/.aicode-viewer/favorites.db - Includes tags, annotation text, and lightweight content preview
- Persisted in SQLite at
- Filters and stats
- Filter favorites by
type(session/message), IDEview,tag, and textsearch - Favorites statistics: totals by type and IDE, plus top tags
- Filter favorites by
Implementation references
- Favorites DB:
claude_viewer/db/favorites_db.py - Favorites UI:
claude_viewer/templates/favorites.html, conversation star buttons inclaude_viewer/templates/conversation.html
🚀 Quick Start
Installation
pip install ai-coder-viewer
Usage
# Start with default settings (looks for ~/.claude/projects)
aicode-viewer
# Custom Claude projects path
aicode-viewer --projects-path /path/to/your/claude/projects
# Custom port
aicode-viewer --port 8080
# Accessible from other machines
aicode-viewer --host 0.0.0.0 --port 3000
Then open your browser to: http://localhost:6300
⚡ Performance Optimization
The system includes built-in performance optimizations for faster response times:
Features
- Memory Caching: Multi-level cache system (LRU + TTL) for projects, sessions, and conversations
- Database Optimization: SQLite with WAL mode, 64MB cache, and 9 optimized indexes
- Smart Caching: Automatic cache expiration with configurable TTL
- Cache Management: API endpoints for monitoring and clearing cache
Performance Improvements
- 10x faster project list loading (~500ms → ~50ms)
- 10x faster session list loading (~300ms → ~30ms)
- 10x faster conversation loading (~800ms → ~80ms)
- 10x faster search operations (~1000ms → ~100ms)
Cache Management
# View cache statistics
curl http://localhost:6300/api/cache/stats
# Clear all caches
curl -X POST http://localhost:6300/api/cache/clear?cache_type=all
# Clear specific cache
curl -X POST http://localhost:6300/api/cache/clear?cache_type=projects
Performance Testing
# Install test dependencies
pip install tabulate
# Run performance tests
python test_performance.py
For detailed information, see:
📸 Screenshots
Main Dashboard - Multi-IDE Navigation
Browse and navigate across multiple AI platforms including Claude, Qwen, Cursor, Trae, and Kiro. Real-time viewing of conversation history from all supported IDEs with quick platform switcher.
Claude Conversation Viewer
Real-time conversation viewing with syntax highlighting, markdown rendering, and tool use visualization. View detailed conversation history with proper formatting and code highlighting.
Global Search Interface
Powerful search functionality across all conversations and platforms. Search globally with instant results and quick navigation to any session.
Search Results Detail
Detailed search results with context highlighting and preview. Navigate through search results efficiently with keyword highlighting.
Favorites Management
Save and manage your favorite conversations and messages. Organize with tags, add annotations, and filter by IDE platform or type.
X-IDE Mode
Advanced X-IDE mode with powerful features for enhanced productivity. Experience the next level of AI conversation management.
🛠️ Command Line Options
aicode-viewer --help
Available options:
--projects-path- Path to Claude projects directory (default:~/.claude/projects)--host- Host to bind the server (default:127.0.0.1)--port- Port to run on (default:6300)--version- Show version information
📁 How It Works
AI conversation platforms store conversation history in JSONL files. This tool:
- Scans your AI projects directory (Claude:
~/.claude/projects/, Qwen: local storage) - Parses JSONL conversation files from multiple AI platforms
- Presents them in a unified, beautiful web interface
- Enables powerful search and filtering across all conversations
- Supports multi-language UI for international users
🔧 Development
Local Development
git clone https://github.com/lohasle/AI-Conversation-Viewer
cd AI-Conversation-Viewer
pip install -e .
aicode-viewer
Run with reload
uvicorn claude_viewer.main:app --reload --host 127.0.0.1 --port 6300
Configure data paths
CLAUDE_PROJECTS_PATH— Claude project directoryQWEN_PROJECTS_PATH— Qwen storage directoryCURSOR_WORKSPACE_STORAGE_PATH— Cursor workspace storageTRAE_WORKSPACE_STORAGE_PATH— Trae workspace storageKIRO_WORKSPACE_STORAGE_PATH— Kiro workspace storage
Example:
export CLAUDE_PROJECTS_PATH=~/.claude/projects
export QWEN_PROJECTS_PATH=~/.qwen/tmp
aicode-viewer --port 6300
Develop without install
python -m uvicorn claude_viewer.main:app --reload
Project Structure
claude-code-viewer/
├── claude_viewer/ # Python package
│ ├── main.py # FastAPI application
│ ├── cli.py # Command line interface
│ ├── i18n.py # UI translations
│ ├── db/ # Favorites SQLite (CRUD, tags, stats)
│ ├── utils/ # Parsers and helpers (Claude/Qwen/etc.)
│ ├── templates/ # Jinja2 templates (dashboard, project, conversation, favorites)
│ └── static/ # Frontend assets (CSS/JS)
├── img/ # Screenshots used in README
├── pyproject.toml # Packaging metadata (preferred)
├── setup.py # Legacy packaging metadata
├── MANIFEST.in # Package data inclusion rules
├── LICENSE # Apache 2.0 license
├── README.md / README_CN.md # Documentation (English/Chinese)
├── QWEN.md # Qwen-specific notes
├── build_and_upload.sh # Publishing helper script
└── .github/workflows/ci.yml # CI pipeline
🤝 Contributing
Contributions welcome! Please:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
Development Setup
git clone <your-fork>
cd claude-code-viewer
pip install -e ".[dev]"
🤖 Supported AI Platforms
Currently supports:
- Claude Code — Anthropic's official CLI for Claude
- Qwen (通义千问) — Alibaba Cloud's AI assistant
- Cursor — AI coding IDE workspace sessions
- Trae — AI coding IDE workspace sessions
- Kiro — AI coding IDE workspace sessions
More platforms coming soon!
📋 Requirements
- Python 3.8+
- AI Platform (Claude Code, Qwen, or other supported platforms)
- Modern web browser (Chrome, Firefox, Safari, Edge)
🐛 Troubleshooting
"Projects path does not exist"
Make sure Claude Code has been used and has created conversation files. The default path is ~/.claude/projects.
"No JSONL files found"
Ensure you have used Claude Code and it has generated conversation history. Try specifying a custom path with --projects-path.
Port already in use
Use a different port: aicode-viewer --port 8080
📄 License
Apache 2.0 License - see LICENSE file for details.
🙏 Acknowledgments
- Built with FastAPI and Bootstrap
- Syntax highlighting by Pygments
- Created for the AI development community
📊 Highlights
- 🎯 Zero configuration - Works out of the box for most users
- ⚡ Fast startup - Sub-second launch time
- 🔍 Full-text search - Search across all conversations instantly
- 📱 Mobile responsive - Works seamlessly on all devices
- 🌍 Multi-language - English and Chinese UI support
- 🤖 Multi-platform - Support for multiple AI platforms
🗺️ Roadmap
- Support for more AI platforms (Gemini, etc.)
- Export conversations to various formats (PDF, Markdown, HTML)
- Advanced filtering and tagging system
- Conversation analytics and statistics
- Real-time conversation monitoring
- Continue conversations directly via Web interface
- UI overhaul with IM-style messaging interface
Made with ❤️ for the AI development community
Metadata
Release files for ai-coder-viewer 1.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| ai_coder_viewer-1.1.4.tar.gz | 1.9 MB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ai_coder_viewer-1.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 2.0 MB
Release files / ai_coder_viewer-1.1.4.tar.gz
| Download URL | ai_coder_viewer-1.1.4.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f4e876583548a995cc56cc18191566896ea974ce76bd12b765fbf8ee31a5fef1
|
|
BLAKE2b-256 checksum How to use checksums |
f5ec524854c524e538f94b8d267f4df2cf61c320a996e099edd185d3c769c285
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Release files / ai_coder_viewer-1.1.4-py3-none-any.whl
| Download URL | ai_coder_viewer-1.1.4-py3-none-any.whl |
|---|---|
| Size | 103.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
510bd0f0adc3b3f3bf167c8afe50e9d6a9a263180ed3cbea97bc7737b1cb08f4
|
|
BLAKE2b-256 checksum How to use checksums |
58b305c4882e9d60a7c93f35a859f5c340488fa5fac1a36dc6c8ac53fb910abf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.8
|
Security for ai-coder-viewer 1.1.4
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.