<div align="center">
<img src="https://raw.githubusercontent.com/wannabemrrobot/claude-sessions-dashboard/HEAD/docs/mascot.gif" alt="" width="112">
Claude Code 세션
사용자의 기기에서 모든 Claude Code 세션을 탐색하고, 검색하며, 재개하고, 관리할 수 있는 실시간 로컬 대시보드입니다.
더 이상 ~/.claude/projects를 뒤지거나 세션 이름을 추측할 필요가 없습니다. 클릭 한 번으로 새로 고침, 이름 변경, 삭제, 열기 또는 재개 명령 복사까지 할 수 있습니다.
<img alt="Claude Code Sessions — browsing sessions, the conversation view with declutter, and the artifacts view" src="https://raw.githubusercontent.com/wannabemrrobot/claude-sessions-dashboard/HEAD/docs/demo.gif" width="900">
▶ 10초 만에 사용해 보세요 — 설정 불필요, 실제 데이터 사용 안 함: claude-sessions --demo
</div>
왜 필요한가 (Why)
Claude Code는 각 세션을 ~/.claude/projects/... 아래의 .jsonl 파일로 저장합니다. 시간이 지남에 따라 수백 개의 세션이 쌓이며, 올바른 세션을 재개하려면 정확한 이름과 디렉터리를 기억해야 합니다 (claude --resume "name"은 잘못된 폴더에서 실행하면 "no session named X" 오류가 발생합니다). 이 도구는 이러한 파일 더미를 빠르고 검색 가능한 대시보드로 변환하여, 로컬 브라우저에서 제공합니다.
주요 기능 (Features)
<div align="center">
<img alt="The dashboard: session cards with model, tokens, active time, and per-session artifacts" src="https://raw.githubusercontent.com/wannabemrrobot/claude-sessions-dashboard/HEAD/docs/screenshot-dark.png" width="900">
</div>
찾기 (Find)
- 🔎 검색: 이름, 프롬프트, 프로젝트 경로, 브랜치 및 세션 ID 전반에 걸쳐 검색할 수 있습니다.
- 🗂️ 필터링 및 정렬: 프로젝트별, 마지막 활동/가장 오래된/지속 시간/프롬프트 수/이름별/프로젝트별로 필터링하고 정렬할 수 있습니다.
- ☑️ 토글 기능: 이름만 포함(Named-only) 및 SDK/에이전트 포함(Include SDK/agent) 토글 (후자는 기본적으로 숨겨져 있는 프로그래밍 방식/서브 에이전트 세션을 보여줍니다).
- 🎬 데모 모드:
--demo를 사용하면 가상의 세션으로 UI가 채워져 탐색하거나 스크린샷을 찍을 수 있으며, 실제 데이터를 읽지 않습니다.
실시간 상태(Live status)
- 🟢 작동 표시기(Running indicator) — 에이전트가 작업 중인 세션에 나타나는 깜빡이는 점: 현재 작성 중이거나, 서브 에이전트 또는 장시간 실행되는 도구 호출(응답하지 않은 도구 호출에서 감지됨)로 인해 활동을 멈춘 경우 (따라서 작업을 위임해도 세션이 유휴 상태처럼 보이지 않게 함)
- ⬆️ 작동 중인 세션은 상단으로 정렬되며, 헤더에 “N개 실행 중(N running)” 카운터가 표시됩니다.
- 🔄 자동 새로고침(Auto-refresh) — 목록이 자체적으로 10초마다 새로운 세션과 업데이트된 개수를 가져옵니다. **새로고침(Refresh)**을 누르면 즉시 재검색이 강제됩니다.
헤더 총계(Header totals)
- ⏳ 클라우딩(Clauding) — 전체 시간 및 지난 24시간 동안의 총 활동 작업 시간입니다. 중복되는 턴은 한 번만 계산되므로, 병렬 도구 호출이나 서브 에이전트가 벽시계 시간보다 높게 표시할 수 없습니다.
- 🔢 토큰(Tokens) — 입력 + 출력 + 캐시 토큰으로, 전체 시간 및 지난 24시간 / 7일 동안의 총합입니다.
세션별 통찰력 (Per-session insight) (각 카드)
- 📦 아티팩트 버튼(Artifacts button) — 이 세션에서 생성된 파일 수이며, 한 번의 클릭으로 확인할 수 있습니다.
- 🧠 모델 칩(Model chip) — 사용된 모델(예:
Opus 4.8 +1); 마우스를 올리면 모델별 턴 분석이 표시됩니다.
- 🔢 출력 토큰 칩(Output-tokens chip) — 생성된 토큰 수입니다; 마우스를 올리면 입력 / 출력 / 캐시가 표시됩니다.
- 🕐 상대 시간 및 절대 시간의 최근 활동, 경과 시간, 세션 지속 시간(session duration), 그리고 **활성 작업 시간(active working time)**이 표시됩니다.
- 📁 홈에서 보이는 프로젝트 경로(
~/…)와 (마우스를 올리면 전체 절대 경로가 표시됨) 그 아래에 git 브랜치가 표시됩니다.
- 🔖 명명된(Named) 세션은 Claude 강조 색상으로 카드 제목에 이름이 표시됩니다.
관리(Manage) (터미널 왕복 과정 없음)
- ✏️ 인라인 이름 변경(Rename) (세션 파일에
custom-title 행을 작성하며, mtime을 보존하여 이름 변경이 에이전트 활동처럼 보이지 않게 합니다.)
- 🗑️ 확인 단계가 있는 삭제(Delete) 기능과 대량 삭제를 위한 다중 선택(multi-select) 기능. 세션이 에이전트에 의해 작업 중인 경우, ID, 제목 또는 재개 이름으로 명명되었는지 여부와 관계없이 UI 및 CLI 모두에서 거부됩니다.
- 📂 파일 관리자에서 프로젝트 폴더를 열기(Open) 합니다.
- 📋 재개(Resume) —
cd /path && claude --resume "name" 명령어를 복사하며, 붙여넣기만 하면 됩니다.
아티팩트(Artifacts) (세션에서 실제로 생성된 결과물)
- 📦 파일당 한 줄 표시: 도구 호출별이 아닌 파일 단위로 표시됩니다. 예를 들어, 하나의 파일에 대한 46개 수정 사항은 '사용된 편집 / 도구 결과'의 92줄 대신 단일 아티팩트로 처리됩니다.
- 📄 Claude가 작성한 인라인 콘텐츠 또는 그 수정 내용에 대한 빨간색/녹색 diff(차이점) 표시(최신 hunks, 따라서 표시되는 버전과 일치함).
- 🏷️ Claude 자체 파일은 분리되어 태그가 지정됩니다.
memory (자동 메모 노트)와 config (.claude/ 설정, launch.json, CLAUDE.md) 등은 별도의 필터 칩 뒤에 숨겨져 있어 기본 보기에서는 사용자의 실제 작업 결과물만 표시됩니다.
- 🚫 임시/스크래치 디렉토리,
.git/, 그리고 Claude Code의 내부 상태는 건너뛰어지며, 이 과정에서 제외된 항목의 가시적인 개수가 표시되어 조용한 생략이 없습니다.
- ⚠️ 파일 경로에 더 이상 존재하지 않을 경우
gone 배지가 표시됩니다 (이후 삭제, 이동 또는 이름 변경됨).
읽기(Read)
- 📝 프롬프트: 붙여넣은 이미지를 포함하여 전송한 모든 프롬프트가 기록되며, 프롬프트별로 접고 복사할 수 있습니다.
- 💬 전체 대화 기록: 사용자의 프롬프트와 Claude의 답변이 Markdown (제목, 목록, 코드 블록, 링크) 형식으로 렌더링되고, 붙여넣은 모든 이미지가 포함됩니다. 도구 호출 및 결과는 접을 수 있는 행으로 표시되며, 모델 이름은 턴(turn)마다 레이블링됩니다 (변경될 때만).
- 🧹 정리: 한 번의 클릭으로 모든 도구 호출과 그 출력을 숨겨서, 마치 터미널 세션이 읽어내는 방식 그대로(사용자는 녹색, Claude는 테라코타 색상) 대화 내용만 남고, 숨겨진 단계별 카운트가 표시됩니다.
- 🔦 대화 내 검색:
⌘/Ctrl-F를 사용하여 일치하는 항목을 강조 표시하고 n/total 개수를 보여주며 상하 탐색이 가능합니다.
- ↕️ 최신 ↔ 가장 오래된 순서 토글 기능 (두 뷰어 모두 지원).
- 📊 통계 스트립: 모델별 × 턴 수 · 입력/출력/캐시 토큰 · 웹 검색/가져오기 횟수 · Claude Code 버전 · 선택적 비용 추정치를 제공합니다.
디자인 및 사용성(Look & feel)
- 🌙 기본 다크 모드: 라이트/다크 전환 스위치가 있으며 (선호하는 설정이 기억됨).
- ⌨️ Claude 팔레트 내의 깔끔한 고정폭 글꼴(monospace) UI; 테마가 적용된 툴팁;
prefers-reduced-motion 설정을 준수합니다.
개인용 및 독립적 실행
- 🔒 순수 파이썬 표준 라이브러리(Python standard library)만 사용 — pip 설치, 의존성, 네트워크 연결 불필요
127.0.0.1에만 바인딩되며, 루프백 호스트가 아닌 주소는 거부하고, JSON POST 본문이 필요합니다 (따라서 임의의 웹 페이지로는 접근할 수 없습니다).
<div align="center">
<img alt="클리터(declutter) 기능이 적용된 대화 기록 — 당신은 녹색, Claude는 테라코타 색상, 도구 단계 숨김" src="https://raw.githubusercontent.com/wannabemrrobot/claude-sessions-dashboard/HEAD/docs/conversation.png" width="820">
</div>
요구 사항 (Requirements)
- Python 3.7 이상 — 표준 라이브러리만 사용
- macOS, Linux 또는 Windows
~/.claude/projects에 있는 일부 Claude Code 세션 (설정할 것이 없습니다 — 사용자 홈 디렉토리를 사용합니다)
설치 (Install)
curl -fsSL https://raw.githubusercontent.com/wannabemrrobot/claude-sessions-dashboard/main/claude-sessions -o claude-sessions
chmod +x claude-sessions
...
…또는 클론(clone) 방식으로 설치합니다:
git clone https://github.com/wannabemrrobot/claude-sessions-dashboard.git
cd claude-sessions-dashboard && chmod +x claude-sessions
./claude-sessions
사용법 (Usage)
claude-sessions
claude-sessions --demo
claude-sessions --all
...
라이브 대시보드는 Ctrl+C를 누를 때까지 실행됩니다.
두 가지 모드 (Two modes)
| 모드 | 명령어 | 새로고침 / 이름 변경 / 삭제 / 대화 내용 | 휴대성 |
|---|
| 라이브(Live) (기본값) | claude-sessions | ✅ 원클릭 방식 | 프로세스가 실행되어야 함 |
| 정적(Static) | claude-sessions --static | 읽기 전용 (프롬프트만 표시) | ✅ 단일 독립형 .html 파일 |
바로가기 및 심층 링크 (Shortcuts & deep-links)
⌘/Ctrl-F — 열린 대화 내부에서 검색 · Enter / Shift+Enter — 다음/이전 일치 항목 · Esc — 검색 내용 지우기 후 닫기
- URL에 추가하기:
?theme=light|dark · ?conversation=<id> (선택적으로 &find=<text>) · ?prompts=<id> · ?order=oldest|newest
설정 (Configuration)
모든 기능은 별도 설정 없이(out of the box) 작동합니다. 스크립트 상단에 몇 가지 조정 가능한 항목이 있습니다:
-
비용 추정치 (Cost estimate) — SHOW_COST (켜기/끄기) 및 PRICING (모델군당 100만 토큰당 USD). 제공된 요율은 예시이므로 반드시 확인하고 수정해야 합니다; 요율이 없는 모델은 제외되며 해당 수치는 *“(부분적)”*으로 표시됩니다. 이 추정치는 Max/Pro 구독에서는 의미가 없습니다(사용량은 토큰 단위로 청구되지 않으므로), 따라서 대략적인 API 요금 추정치로만 간주하세요.
-
ACTIVE_WINDOW_S — 세션 파일이
-
**아티팩트(Artifacts)**는 세션의 Write / Edit / MultiEdit / NotebookEdit 호출에서 파생되며, 파일 경로별로 그룹화됩니다. Bash가 작성한 파일(heredocs, cp, 리디렉션)은 여기에 표시되지 않습니다. 도구 호출만으로는 셸 명령이 무엇을 건드렸는지 신뢰성 있게 알 수 없기 때문에 추측하기보다는 제외합니다. 파일은 이 세션이 직접 저술했을 때만 **생성됨(created)**으로 표시됩니다. 만약 먼저 읽히거나 편집되었다면, 이미 존재했던 것입니다.
-
**활성 시간(Active time)**은 각 턴의 지속 간격의 합이 아니라 합집합입니다. 기록에는 실제로 중첩된 턴이 포함될 수 있으며, 이를 모두 더하면 세션이 물리적으로 차지하는 시간보다 더 많은 작업 시간을 보고하게 됩니다.
-
아티팩트의 **라인 수(Line counts)**는 Claude가 작성한 콘텐츠를 설명합니다. 나중에 이루어진 편집(그리고 세션 이후 파일을 건드린 모든 것)은 파일을 변경할 수 있기 때문에 배지에는 "작성된 라인 수(lines written)"라고 표시됩니다.
개인정보 보호 및 보안 (Privacy & safety)
모든 것이 로컬에서 처리됩니다. 서버는 127.0.0.1에서만 수신하며, 아웃바운드 요청은 전혀 보내지 않고, 비루프백 호스트 및 경로 탐색(path traversal)으로부터 보호합니다. 그리고 --static 내보내기 기능은 사용자가 이미 볼 수 있는 메타데이터만을 포함합니다. 이는 읽을 수 있는 단일 Python 파일이며—1분 안에 감사할 수 있습니다.
크레딧 (Credits)
아이콘은 Lucide에서 가져왔습니다 (ISC). Claude Code로 구축되었습니다.
라이선스 (License)
MIT © wannabemrrobot