Why I built a small desktop app to stop losing my Claude Code sessions A developer built a desktop app called Shelf to recover lost Claude Code sessions after struggling to find a three-week-old session across twelve repositories. The tool, now at version 0.2.18, evolved from a 200-line Python script with SQLite into a Tauri-based desktop application that indexes and searches local session files. The developer chose a local desktop app over a web service to keep private session data, including personal notes, off any server. 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.