DEV Community

Echo
Echo

Posted on

From Terminal Tabs to Project Workspaces: How I Organize Claude Code and Codex Sessions

From Terminal Tabs to Project Workspaces: How I Organize Claude Code and Codex Sessions

I used to manage my AI coding sessions like browser tabs. Open Claude Code in a directory, chat for an hour, switch to another project, come back tomorrow, and... where was I?

The built-in /resume shows a flat list. /continue only works if I remember the session ID. After three months of daily Claude Code and Codex use, I had thirty-plus sessions scattered across six repositories, and zero confidence that I could find the conversation where I debugged that auth issue last Tuesday.

This isn't a Claude Code problem. It's a workspace problem.

What I actually needed

Not a better prompt. Not a bigger context window. I needed:

  1. Project-level grouping — All sessions for backend-api in one place, all sessions for mobile-app in another.
  2. Session discovery — A search that actually works across projects, not just within the current directory.
  3. One-click recovery — Open a previous session without typing /resume and scrolling through a chronological dump.

What I built

I ended up writing a small desktop app called Shelf. It's a Tauri-based workspace manager that sits next to my terminal and tracks every Claude Code and Codex session by project.

Key things it does:

  • Scans ~/.claude/projects/ and ~/.codex/ automatically and groups sessions by git repository.
  • Lists every conversation with a preview of the last few turns, so I can spot "the auth debugging session from Tuesday" without opening it.
  • Restores any session in its original working directory with one click.
  • Embedded terminal — I can open a PTY right inside the app if I just want to check a log without launching Claude Code.

It's not trying to replace Claude Code or Codex. It's just the missing workspace layer.

Architecture notes (for the curious)

  • Tauri v2 + Rust for the backend file scanning and session restoration.
  • TypeScript + Vite for the UI.
  • xterm.js for the embedded terminal.
  • Cross-platform: macOS (Apple Silicon) and Linux.

The habit change

The biggest shift wasn't technical. It was mental. I stopped treating each Claude Code session as disposable. Now I name my sessions intentionally, close them cleanly, and trust that I can get back to any project's state within ten seconds.

If you're juggling multiple repos with Claude Code or Codex, the tool is at https://github.com/Harukaon/shelf. It's open source, v0.2.18, and I'd genuinely appreciate feedback or PRs.


What does your Claude Code workspace look like? Still using terminal tabs, or have you found something else that works?

Top comments (0)