markdown · 2464 bytes Raw Blame History

claudex

(noun) : the systematic cataloguing of fugal subjects across concurrent movements, as practiced by the lesser-known Viennese archivist Theodor Klaudeks, whose index of Bruckner's unfinished symphonies was itself famously never finished


Desktop GUI for browsing and running Claude Code sessions in parallel. Reads ~/.claude/projects/ directly, groups sessions into logical projects via git-root detection, and lets you open multiple interactive Claude terminals side-by-side without losing context when you switch between them.

What it does

  • Thread browser — tree-structured sidebar of every Claude Code session on your machine, organized by project. Sessions from different working directories that share a git root merge into one project node.
  • Embedded terminal mode — spawns claude --resume <id> inside a real PTY rendered by xterm.js. Full CLI parity: slash commands, permission prompts, vim mode, ctrl-r history, ANSI rendering. Terminals persist across session switches (codex-style parallel threads).
  • Card viewer mode — parsed message timeline with syntax-highlighted code blocks, tool-use cards, thinking blocks. Toggle between terminal and cards per session.
  • Archive recovery — reconstructs deleted session history from ~/.claude/history.jsonl so nothing is truly lost after a Claude Code major-version wipe.
  • Optional claude-mem enrichment — if claude-mem is installed, uses its AI-refined titles. Falls back to a local sanitizer that strips XML noise, code blocks, and IDE wrappers from the first message.

Stack

Layer Tech
Shell Tauri 2 (macOS, WKWebView)
Backend Rust — FS walking, JSONL parsing, PTY management via portable-pty, summary caching with bincode, file watching via notify
Frontend React 19, TypeScript, Tailwind v4, Zustand, xterm.js 6, react-virtuoso
IPC Tauri commands + per-PTY event channels. Binary data (terminal stdout) is base64-encoded; chunks are write-combined on the Rust side at ~16 ms intervals to avoid IPC storms.

Build

Requires Rust 1.77+, Node 20+, pnpm.

pnpm install
pnpm tauri dev        # dev mode with hot reload
pnpm tauri build      # production .app bundle

Status

Early. Works on macOS. Expect rough edges.

License

GPL v3

View source
1 # claudex
2
3 *(noun) : the systematic cataloguing of fugal subjects across concurrent movements, as practiced by the lesser-known Viennese archivist Theodor Klaudeks, whose index of Bruckner's unfinished symphonies was itself famously never finished*
4
5 ---
6
7 Desktop GUI for browsing and running [Claude Code](https://docs.anthropic.com/en/docs/claude-code) sessions in parallel. Reads `~/.claude/projects/` directly, groups sessions into logical projects via git-root detection, and lets you open multiple interactive Claude terminals side-by-side without losing context when you switch between them.
8
9 ## What it does
10
11 - **Thread browser** &mdash; tree-structured sidebar of every Claude Code session on your machine, organized by project. Sessions from different working directories that share a git root merge into one project node.
12 - **Embedded terminal mode** &mdash; spawns `claude --resume <id>` inside a real PTY rendered by xterm.js. Full CLI parity: slash commands, permission prompts, vim mode, ctrl-r history, ANSI rendering. Terminals persist across session switches (codex-style parallel threads).
13 - **Card viewer mode** &mdash; parsed message timeline with syntax-highlighted code blocks, tool-use cards, thinking blocks. Toggle between terminal and cards per session.
14 - **Archive recovery** &mdash; reconstructs deleted session history from `~/.claude/history.jsonl` so nothing is truly lost after a Claude Code major-version wipe.
15 - **Optional claude-mem enrichment** &mdash; if [claude-mem](https://github.com/anthropics/claude-mem) is installed, uses its AI-refined titles. Falls back to a local sanitizer that strips XML noise, code blocks, and IDE wrappers from the first message.
16
17 ## Stack
18
19 | Layer | Tech |
20 |-------|------|
21 | Shell | [Tauri 2](https://tauri.app/) (macOS, WKWebView) |
22 | Backend | Rust &mdash; FS walking, JSONL parsing, PTY management via `portable-pty`, summary caching with bincode, file watching via `notify` |
23 | Frontend | React 19, TypeScript, Tailwind v4, Zustand, xterm.js 6, react-virtuoso |
24 | IPC | Tauri commands + per-PTY event channels. Binary data (terminal stdout) is base64-encoded; chunks are write-combined on the Rust side at ~16 ms intervals to avoid IPC storms. |
25
26 ## Build
27
28 Requires Rust 1.77+, Node 20+, pnpm.
29
30 ```bash
31 pnpm install
32 pnpm tauri dev # dev mode with hot reload
33 pnpm tauri build # production .app bundle
34 ```
35
36 ## Status
37
38 Early. Works on macOS. Expect rough edges.
39
40 ## License
41 GPL v3