A small local dashboard (and a TUI) for keeping track of your Claude Code and Codex sessions. When you've got a few running across different projects, it shows you which ones are working, which finished, and which are sitting there waiting for an answer - scoped to whatever repo you're in.
I built this for myself. I used to use the GitHub Copilot Chat extension in VS Code and genuinely liked it - then they completely fucked it up. The thing I missed most was just seeing the state of each session and being able to answer it without digging through a pile of terminals.
So this is that, kept simple. Claude Code already writes everything to local transcripts; this just reads them and puts a small view on top. Other people have probably built something like it - I figured, shit, why not share mine.
It started Claude-only and that's still the core (it works with the claude
CLI and the VS Code extension). Codex
sessions are supported too, read-only: Codex writes its own transcripts to
~/.codex/sessions, so the same view reads them and shows live status and
stats - it just doesn't resume or answer them (Claude does both). You pick which
sources to show when you install, or later in the settings panel. If you want to
turn it into a real VS Code extension, go for it - PRs welcome, and per the GPL
anything you ship has to stay open.
- Lists every active session, sorted with the ones that need you up top.
- Answer a session's question straight from the browser. Your reply goes in via
claude --resume, in the same conversation. Multi-step questions work too. - Fires a desktop notification the moment a session needs you.
- Resume any session in a fresh terminal with one click.
- Pin the ones you care about, archive the rest.
- Shows per-session stats: context size, tokens used, runtime, message count.
- Has a keyboard-driven TUI if you'd rather stay in the terminal.
- Shows Claude Code and/or Codex sessions in one list, each tagged by source (Codex is read-only — status and stats, no resume/answer).
- Works over VS Code Remote-SSH too — run it on the remote box (see REMOTE.md).
- Reads your transcripts read-only. No network, no telemetry, no dependencies.
Python 3.8+ and Claude Code with the claude
CLI on your PATH. That's it - the server is pure standard library.
For Codex sessions, nothing extra is required: if you use Codex (the codex CLI
or the VS Code extension) it already writes transcripts to ~/.codex/sessions,
and the dashboard just reads them. Enable it at install time or in settings.
python server.pyOpen http://localhost:3456. Pick a repo from the dropdown, or pass one in the
URL: http://localhost:3456/?root=/path/to/your/repo.
Add this to your keybindings.json and Ctrl+Alt+D opens the dashboard scoped
to the current window's repo (in VS Code's built-in Simple Browser):
One instance serves every window, so you only need it running once. Both
installers open with a small checkbox picker (arrow keys + space) so you choose
which sources to track — Claude Code, Codex, or both — and write that to
config.ini. Skip it with -Sources claude,codex (PowerShell) or
--sources claude,codex (shell).
- Windows:
./install.ps1registers a hidden Task Scheduler job that starts the server at login and restarts it if it dies. Remove it withschtasks /delete /tn SimpleAgentSessionManager /f. - macOS / Linux:
./install.shstarts it and prints a ready-madelaunchdorsystemd --usersnippet.
Working over VS Code Remote-SSH? It works there too — run the server on the
remote machine (that's where Claude Code writes its transcripts) and let VS Code
forward port 3456. Ctrl+Alt+D in the remote window then shows the remote
sessions. Full guide: REMOTE.md.
python tui.py # live view
python tui.py --repo myproject # scope to one repo
python tui.py --once # one frame, then exitArrows move, Enter resumes, 1–9 quick-resume, w/a/f filter by
working / needs-you / finished, r refreshes, q quits. Needs a real terminal;
--once is the safe mode for pipes.
Optional. The defaults are fine. To change anything, edit config.ini
(next to server.py) - it's fully commented. Twenty-ish knobs: port, theme,
which sources to show (Claude / Codex), which transitions notify you, what the
Resume button does, the answer permission mode, and so on. The source toggles
are also in the in-app settings panel (the gear icon).
Any key can also be set with an environment variable, which wins over the file:
SASM_PORT=8080 SASM_THEME=dark python server.pyIt's a local tool and meant to be safe to leave running:
- Binds to
127.0.0.1only, and rejects requests whoseHostheader isn't loopback (so a random web page can't poke it through your browser). - Resume/answer only accept a session ID that's already in the list, validated against a strict pattern. Nothing untrusted reaches a shell.
- Session text is rendered as text, never as HTML.
Keep it on localhost. Don't put it behind a proxy or expose the port.
One caveat on answering: Claude Code keeps one transcript per session, so if a
session is still open in a terminal and you also answer it here, the two can
interleave. Answer from one place at a time (or use --fork-session).
GNU GPL-3.0-or-later © 2026 Maj Korent.
Copyleft: use it, run it, share it freely, but if you distribute a modified version it has to stay open source too.


{ "key": "ctrl+alt+d", "command": "simpleBrowser.show", "args": "http://localhost:3456/?root=${workspaceFolder}" }