A sleek, fast viewer for Claude Code and Codex CLI chat history stored locally on your machine. Browse, search, and export your AI conversations with a beautiful dark interface inspired by Claude's native design.
- Auto-launching server - Just type
ccpeekand your browser opens automatically - Zero configuration - Automatically discovers all Claude Code conversations in
~/.claude/projects/ - Codex support - Also discovers local Codex CLI sessions in
~/.codex/sessions/ - Lightning-fast search - Search across all conversations and messages simultaneously
- Smart filtering - Hide/show tool uses and results for cleaner reading
- Export to Markdown - Download any conversation as a formatted
.mdfile - Real-time updates - Auto-refreshes every 30 seconds to catch new conversations
- Claude-inspired design - Familiar dark theme matching Claude's interface
- Collapsible sidebar - More room for reading when you need it
- Search highlighting - Yellow highlights with orange for current match
- Match navigation - Previous/next buttons to jump between search results
- Match counting - See how many matches in each conversation
- Copy messages - One-click copy for any message
- Thinking blocks - View Claude's thinking process in special formatted blocks
- Tool use indicators - Clear visual distinction between messages, tools, and results
- Local command filtering - Automatically hides
/modeland other local commands - Tool toggle - Hide all tool uses and results for distraction-free reading
- Export respects filters - Markdown exports honor your current filter settings
/- Focus searchEsc- Clear searchj/k- Navigate conversationsEnter- Open selected conversationn/p- Next/previous search result?- Show keyboard shortcuts
- Python 3.x installed
- Claude Code and/or Codex CLI installed with existing local chat history
- Clone the repository:
git clone https://github.com/yourusername/ccpeek.git
cd ccpeek- Make the scripts executable:
chmod +x ccpeek server.py- Create a system-wide command (requires sudo):
sudo ln -sf $(pwd)/ccpeek /usr/local/bin/ccpeekThat's it! Now you can run ccpeek from anywhere.
Simply run from your terminal:
ccpeekThis will:
- Start a local server on port 8888 (or next available)
- Automatically open your default browser
- Load all your Claude Code and Codex conversations
- Click any conversation in the sidebar to load it
- Use
j/kkeys to navigate with keyboard - Press
Enterto open the selected conversation
- Type in the search box or press
/to focus - Search works across conversation titles AND message content
- Use
n/pto navigate between matches - Click the
โto clear search
- Click "Show/Hide Tools" to toggle tool visibility
- When hidden, tool uses and results are completely filtered out
- Export respects your current filter setting
- Select a conversation first
- Click "Export" button
- Downloads as a formatted Markdown file
- Backend: Python HTTP server with automatic browser launching
- Frontend: Vanilla JavaScript with no dependencies
- Storage: Reads JSONL files from
~/.claude/projects/and~/.codex/sessions/ - Port Management: Automatically finds available ports starting from 8888
When running inside WSL2, ccpeek automatically detects the environment and opens your default Windows browser via cmd.exe /c start instead of xdg-open, which avoids silent failures caused by the lack of a controlling TTY in background/daemon contexts.
If you'd like ccpeek always available at http://localhost:8888 (great for bookmarking), install it as a systemd user service:
cp contrib/ccpeek.service ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now ccpeek.serviceCheck status with systemctl --user status ccpeek.
ccpeek/
โโโ ccpeek # Main executable script
โโโ server.py # Python server with API endpoints
โโโ index.html # Single-page web application
โโโ contrib/
โ โโโ ccpeek.service # systemd user service unit
โโโ README.md # This file
GET /- Serves the main HTML interfaceGET /api/conversations- Returns list of all conversations with metadataGET /api/conversation/{id}- Returns all messages for a specific conversation
Edit server.py and modify the PORT variable:
PORT = 8888 # Change to your preferred portAll styles are contained in index.html. Look for the <style> section to customize colors, fonts, and layout.
Make sure the scripts are executable:
chmod +x ~/ccpeek/ccpeek ~/ccpeek/server.pyThe symlink might not be created. Run:
sudo ln -sf ~/ccpeek/ccpeek /usr/local/bin/ccpeekThe server automatically finds the next available port. If you're having issues, you can manually specify a different port in server.py.
Ensure you have Claude Code history in ~/.claude/projects/ and/or Codex history in ~/.codex/sessions/. The tool only shows existing local conversations.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Add support for other AI chat formats
- Implement conversation search/filter by date
- Add syntax highlighting for code blocks
- Create themes (light mode, custom colors)
- Add conversation statistics and analytics
- Implement conversation merging
- Add support for attachments/images
This project is open source and available under the MIT License.
- Inspired by Claude Code by Anthropic
- Built for the Claude Code community
- Special thanks to all contributors
- Language: Python (backend) + HTML/CSS/JavaScript (frontend)
- Dependencies: None (uses Python standard library only)
- Size: < 50KB total
- Performance: Handles thousands of conversations smoothly
Note: This tool is not officially affiliated with Anthropic or Claude. It's a community project designed to enhance the Claude Code experience.
Made with โค๏ธ for the Claude Code community




