Local web app that lists your Claude desktop Code sessions, opens any of them in the desktop app, and shows live cards for the ones you star.
Unofficial community project. It is not made by, affiliated with or endorsed by Anthropic. It reads the files the Claude desktop app and Claude Code already write on your machine, and those formats are undocumented and may change without notice.
All screenshots use the fictional sessions from npm run demo. No real conversations are shown.
Chat with expandable tool calls, a live "now running" strip, token usage with context warnings, the prompt queue and a prompt box.
A session that ended on an unanswered question is flagged, and any card can be opened as a large modal. The URL keeps the card open after a reload.
- Node.js 20 or newer. There are no dependencies to install.
- The Claude desktop app (Code tab) and the
claudeCLI on your PATH, for sending prompts. - macOS paths are the defaults. On another system set
SESSIONS_DIRandPROJECTS_DIR(see Configuration).
npm startThen open http://localhost:4747. Run npm test for the unit tests.
npm run demoThis generates fictional sessions, transcripts and git repositories in a temporary folder (DEMO_DIR to choose another) and starts the board on PORT (default 4747). Prompts are not sent anywhere in demo mode.
/all sessions. Search, status filter and the archived toggle are kept in the URL (?q=,?status=,?archived=1)./focusone live card per starred session. The 1, 2 or Auto column layout is remembered.- New chat (top bar) opens the desktop app's new session screen on a folder you pick, with an optional prompt filled in. You press send in the app, and the session joins Focus once the app records it.
/searchfull-text search inside every conversation, grouped by session with highlighted snippets. A project dropdown narrows it to one project (?project=)./usagetokens per day and per project (stacked chart) plus the top sessions.
- Chat with full-length messages and expandable tool calls (full commands).
- Live strip: the tool Claude is running now with a ticking timer, thinking or writing state, and running subagents.
- Attention banner when a transcript ends on an unanswered question (AskUserQuestion, ExitPlanMode) or a tool has been pending for 45s or more, which usually means it is waiting for approval.
- Token usage with a yellow warning at 100k context and red at 200k.
- Changes tab: git branch, ahead and behind, uncommitted files and diff size for the session folder, the files Claude edited, ticket keys (set
JIRA_BASE_URLto link them) and merge request links mentioned in the chat. - Attach files and images with the paperclip, by pasting, or by dropping them on the prompt box (25 MB each). They are saved under
data/uploads/(deleted after 7 days) and their paths are added to the prompt, so Claude reads them from disk. - Prompt box with a queue, ⚡ shortcuts (stored in
data/snippets.json) and ⏰ scheduling (once, daily or weekdays). - 📣 Broadcast queues one prompt on several focused sessions.
- Prompts run as headless
claude -p --resume <id>in the session folder withPROMPT_PERMISSION_MODE(defaultbypassPermissions, so prompts sent from this page edit files and run commands without asking). Set it todefaultto deny tools that need approval, oracceptEditsto allow edits only. Only run this on a machine you trust and never expose the server beyond localhost. - While a prompt is running, or the session is busy in the desktop app, new prompts are queued and sent in order when it is idle. A failed or stopped run pauses the queue until you press Resume.
- Queues persist in
data/queue.jsonand schedules indata/schedules.json. Due schedules are added to the queue, so they follow the same rules. - The desktop app may not show turns sent from the board until you reopen the session.
Typing / in a card's prompt box opens an autocomplete list of the commands that work in headless runs: your project commands (<session folder>/.claude/commands), your user commands (~/.claude/commands), skills, enabled plugin commands and skills, and the built-ins /compact, /context, /cost and /model. Arrow keys move, Tab or Enter completes, Esc closes.
- Custom commands and skills run as normal turns.
- Output from
/context,/costand/modelis shown in the chat as a command panel. /clear,/resetand/neware refused, because headless mode answers them by starting a new session and the board would lose track of the old one.- Interactive-only commands such as
/help,/statusand/configare not available in headless mode.
The 🔔 button turns on toasts, a short beep, browser notifications and a tab-title counter when a focused session finishes, asks a question, may need approval, passes 100k or 200k context, is marked blocked, or a prompt fails or pauses the queue.
PORT(default4747),SESSIONS_DIR,PROJECTS_DIR,DATA_DIRPROMPT_PERMISSION_MODE,CLAUDE_BIN,JIRA_BASE_URLCLAUDE_HOME(where.claude/commands,.claude/skillsand.claude/pluginsare read from, default your home folder)
The server binds to 127.0.0.1, rejects other Host headers, and only accepts POSTs from its own origin. It reads session files and transcripts and never edits them.





