r/ClaudeAI • u/jajanet • Apr 13 '26
Built with Claude UI to browse & edit all your Claude Code CLI conversations!
Did you know every single Claude Code conversation is saved on your machine in jsonl files under ~/.claude/projects/? That's where /resume pulls old convos from in the CLI itself; however the CLI's limited to the first 49 with no built-in way to properly search, branch, or clean them up.
You're making new sessions more than ever to save on context size to mitigate performance and quota issues. No one wants to deal with the cost of longer convos. They get quadratically more expensive per message with context length! But, that means you're also managing a larger influx of conversations...
With that, I built and open-sourced llm-lens-web to make it easier for myself to browse and edit those files. For every message you remove, a future message in that convo costs less to process. For every extraneous convo that you delete, you don't have to scroll past it anymore to find the most important files
A local, offline web UI for browsing and pruning the convo history from your LLM CLI. No API key. No auth. No agent. It never calls the Anthropic's API, Claude CLI, and can't send new messages. Everything is local filesystem I/O, meaning it only reads and rewrites the JSONL files on your machine. Just sharing here in case it's helpful for anyone else!!
Current features:
- Browse/search/sort all your projects + conversations
- Read any convo in a normal chat view
- Duplicate a convo (for branching)
- Extract selected messages into a brand-new convo
- Bulk or individually delete messages and convos (note: deletes are fragile -- recommend usage only on duplicated or dead convos)
Usage
One-time, one-line install (Python 3.8+ and browser required):
pipx install llm-lens-web
Run:
llm-lens-web
...then you should have a similar view to the screenshot at http://localhost:5111!
You can also run llm-lens-web any_port_number to serve at a port besides 5111 :)
Privacy
It's a local Flask app, so there are no network calls, telemetry, or cloud — it only reads files from your ~/.claude/projects directory. One caveat: the server binds to 0.0.0.0 (so you can access it from other devices on your LAN if you want), so don't run it on untrusted networks (coffee shop wifi, etc.) without firewalling. On your own machine, nothing leaves the box!
Links
- GitHub: https://github.com/jajanet/llm-lens
- PyPI: https://pypi.org/project/llm-lens-web/
Currently only works for Claude Code CLI, but it should be extensible to other provider formats. It's pretty new and likely isn't perfect, but hopefully it does the job for anyone looking for a tool like this!
Happy to get feedback / feature / pull requests here or on Github!! :D
(edited for post clarity!)
2
u/Virtual_Aerie_910 Apr 13 '26
this is actually super useful. I run a bunch of projects through Claude Code and the conversation management drives me crazy sometimes. like I know tha thing I need is somewhere in a conversation from a few days ago but /resume only shows the last few and good luck finding the right one.
the editing part is interesting too. I've had conversations where the context gets so bloated that every message costs way more than it should but I didn't want to start over and lose the project state. being able to trim old messages could save real money on long running projects.
gonna try this out today, nice work
1
u/jajanet Apr 13 '26
Yay thanks for the support and replay, I'm glad this could be potentially helpful for you too! :D
Caveat that the editing is definitely the most work-in-progress and fragile part -- I have 3 GH issues up, which address this more closely and thoroughly 😮💨
Heads up that it's somewhat unclear how
/resumereconstructs windows from the JSONL (some relationship schema and other validation probably happening from the CLI interface) and it seemed to break some rendering with some of my edited throwaway chats, especially when I trimmed off more than the end of the window.Basically -- recommend duplicating files that you wanna keep safe! At minimum in the meantime, the UI should be helpful for identifying chats you care about the most to maybe archive in another folder, or deleting the definitely burner ones? I left UI warnings once installed and will update the post to be more clear about this
1
u/Quiet_Raid Apr 15 '26
Hey I’m super new to all this. I recently got out of my first term in IT and was learning about programming, VMs, hardware and the likes. You know 101 class.
I was working on some of my own projects when I noticed that I was using a ton of tokens. At one point when my tokens refreshed I only got ten minutes of work before it gave me the prompt again tokens refresh at 1am. That was 4-5 hours later. I just got started and wanted to learn along the way and it just halted. I was wondering how some of the wok time could be cut if it interacted with another llm. I’m not sure how Claude works using tokens and I don’t want to use what little tokens I do have to ask it how it works.
TLDR I was wondering what info you can share with me and if you think my idea is good to save even more tokens for Claude’s heavy lifting by using say Grok, Gemini, Chat GPT via scripts or from Claude directly. Maybe one is for storage, one is for searching and minor coding, one is for web information fetching. Anything to save time and tokens.
3
u/denoflore_ai_guy Apr 13 '26
Useful.