DEV Community

Echo
Echo

Posted on

Why I built a small desktop app to stop losing my Claude Code sessions

This is a builder note, not a launch post. I am writing it because the project is now at v0.2.18, and the question I keep getting asked in private is: why a desktop app, why Tauri, why not just a web app?

Here is the honest answer.

The trigger was small. I had twelve repos I was actively using Claude Code on. One afternoon I wanted to recover a session from three weeks ago, in a repo I had not touched in a month. I knew what I had asked the model to do. I did not know which of the twelve project folders under ~/.claude/projects/ the session lived in, and I did not remember the timestamp.

The session was technically on disk. I just could not find it. That gap (the data exists, but the index is missing) is what I wanted to close.

The first version of Shelf was 200 lines of Python and a SQLite table. It just listed every session in every project, sorted by mtime. I could grep the table. That alone was useful.

The current version is a Tauri app (Rust + WebView). The reason I switched from a CLI to a desktop app was not aesthetics. It was because the actual use case has three sub-tasks that are awkward on a terminal:

  1. Scan, then show the result in a way that surfaces "this is the session that touched file X" without me having to open the JSONL.
  2. One click to resume the session. Claude Code's CLI resume is fine if you know the id, but you never know the id.
  3. Work on more than one project at once. The terminal is great for one project. It is bad at three.

Local, not cloud, was a deliberate choice. The session files contain everything I have ever typed into a model, including private notes about my own work. I do not want a server roundtrip just to read my own data. Tauri was the smallest path to a real desktop app I could ship and maintain myself.

If you have ever grepped ~/.claude/projects/*/*.jsonl and felt like that should not be the answer, the project is here: https://github.com/Harukaon/shelf. Pull it apart, tell me what is wrong, fork it, do not use it, all of the above.

Top comments (0)