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

> Source: <https://dev.to/uzoma_uche_3ec83974b4a8a5/why-i-built-a-small-desktop-app-to-stop-losing-my-claude-code-sessions-2i86>
> Published: 2026-06-03 05:00:22+00:00

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](https://github.com/Harukaon/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:

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](https://github.com/Harukaon/shelf). Pull it apart, tell me what is wrong, fork it, do not use it, all of the above.
