The problem
If you use Claude Code, all your sessions are stored locally as JSONL files. There's no built-in way to go back and browse them, search through old conversations, check what files were changed, or revisit commands you ran.
I kept opening JSONL files manually, and it wasn't a great experience.
The solution
I built Poirot. A native macOS app that reads your local Claude Code data and gives you a proper interface for everything.
What it does
- Session browser: All your sessions grouped by project, with timestamps, token counts, and model info
- Rich conversation view: Markdown rendering, syntax highlighting, collapsible tool blocks, code diffs
- Extended thinking: See Claude's reasoning process in collapsible blocks
- Fuzzy search (⌘K): Search across all sessions, commands, skills, and configs
- Config dashboard: Browse your slash commands, skills, MCP servers, models, sub-agents, plugins, and output styles
- One-click open: Open any file in VS Code, Cursor, Xcode, or Zed. Copy or re-run any Bash command in your terminal
No login. No tracking. No analytics. No API key needed. No extra cost. Runs fully offline. Under 6 MB.
The tech stack
- Swift 6 with strict concurrency
- SwiftUI with
@Observable(noObservableObject) -
@MainActordefault isolation - Protocol-driven DI via SwiftUI
EnvironmentValues - MarkdownUI + HighlightSwift for rendering
- Swift Testing for tests
- Custom JSONL parser and real-time file watching with GCD
The story
The whole thing was vibe-coded in a weekend using Claude Code itself. What started as "I wonder if I can build a companion app for Claude Code using Claude Code" turned into a real tool that I use daily.
Named after Hercule Poirot, Agatha Christie's detective because every investigation needs the right tools.
Try it
Open source (MIT). Feedback and contributions welcome.


Top comments (0)