English · 繁體中文
A session browser for Claude Code. List, search, summarize, and resume sessions across every terminal window and project you've worked in.
$ wwi
# when project summary
1 12 min ago backup-kit Wrote restore scripts for the B2 tier, tested
against a scratch bucket. Left off: cron setup.
2 2 hr ago client-dashboard Debugged SSR hydration mismatch on the metrics
page — root cause was a Date() in render.
3 yesterday freelance-skills Extracted the proposal iteration SOP into a
skill. Done.
$ wwi resume 2 # reopens that session, in the right directory
Claude Code sessions are per-terminal and per-directory. Open five windows across three projects over a week and you lose track of which session had the thing you need. claude --resume gives you a picker, but only for the current directory, and it shows you UUIDs and timestamps — not what you were actually doing.
wwi indexes every session across every project and gives each one a one-line summary of what happened.
Requires Python 3.9+ and an existing Claude Code install (it reads ~/.claude/projects/).
git clone https://github.com/noron12234/wwi.git ~/.claude/tools/wwi
echo "alias wwi='python3 ~/.claude/tools/wwi/wwi.py'" >> ~/.zshrc
source ~/.zshrc
wwi syncwwi_hook.py is a SessionStart hook that prints your recent activity when you open a new session, so context arrives before you ask for it.
Add to ~/.claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [
{ "type": "command", "command": "python3 ~/.claude/tools/wwi/wwi_hook.py" }
]
}
]
}
}| Command | What it does |
|---|---|
wwi |
Recent sessions, newest first (default 15) |
wwi list -n 40 -p myproject |
Filter by count or project |
wwi today |
Today's sessions, grouped by project |
wwi show 3 |
Full detail for one session — messages, files touched, duration |
wwi resume 3 |
claude --resume <id>, run from the correct working directory |
wwi search "hydration" |
Grep across all your messages in every session |
wwi projects |
Every project, with session counts |
wwi summary 3 |
Generate an LLM summary for one session (cached) |
wwi sync |
Rebuild the index |
wwi auto |
Sync, then batch-summarize idle sessions |
wwi status |
Auto-summary pipeline health (launchd + cache state) |
Sessions can be addressed by list position (3) or by session UUID.
Claude Code writes each session as JSONL under ~/.claude/projects/<encoded-cwd>/<uuid>.jsonl. wwi:
- Indexes those files into
index.json— timestamps, project, cwd, message counts, first user message - Summarizes idle sessions by calling
claude -pon the transcript, caching results undersummaries/so each session is summarized once - Resumes by looking up the session's original
cwdand runningclaude --resume <uuid>there — which is the part the built-in picker can't do across directories
Summaries only run against sessions that have been idle for a while, so it never fights with a session you're actively using.
- The index is local-only. Nothing leaves your machine except summary generation, which goes through your existing Claude Code auth.
wwi autois designed to run from launchd on a timer.wwi statustells you whether it is.- Deleting
index.jsonis safe —wwi syncrebuilds it from the transcripts.
MIT — see LICENSE.