docs/start here/getting started

Getting started — in ninety seconds.

You already have tmux. You already have Claude. Agent Dash finds the sessions you have and lays them side by side. This page walks through the first minute.

PREREQ tmux ≥ 3.2 · claudeTIME ~90sOS macOS · LinuxSHELL any

Launch

Start Agent Dash from any terminal. It connects to your running tmux server and finds Claude Code sessions automatically — no config, no registration.

text
1$ agent-dash
2# or, if you prefer it to exit when you attach to a pane:
3$ agent-dash --exit

Anything you start in a tmux pane appears on the next scan tick, within about two seconds. To bring in sessions you already have, import them once.

If a running Claude session doesn't show up, your Claude Code is probably older than 2.1.119 and doesn't write ~/.claude/sessions/<pid>.json. See Claude Code.

The interface, in two panes

Agent Dash is a dual-pane TUI. On the left: your sessions, live and closed. On the right: a live preview of the one you've selected, rendered with full ANSI fidelity. A closed session has no pane to show, so the preview shows its title, folder, last activity, and last prompt instead.

j and k step through the list; arrow keys and Ctrl+n / Ctrl+p work too, in every list and picker. 0 focuses the preview pane; 1 focuses the list. / filters the list with fuzzy matching.

Switching and resuming

When you want to type into a session, press o (or Enter). On a live session, Agent Dash attaches your terminal to that tmux pane. On a closed session, it starts a new tmux session named agent-dash-<title> (slugified) in the session's folder, runs claude --resume <id> in it, and switches there. If the folder no longer exists, you get an error and nothing is started.

O opens a live session in a popup instead, leaving Agent Dash in place.

KeyAction
j / ↓ / Ctrl+nNext session
k / ↑ / Ctrl+pPrevious session
o / EnterSwitch to the pane, or resume a closed session
OOpen the pane in a popup
cNew session: pick a folder, optionally a mode and a new git worktree
rToggle read / unread
?Toggle the help overlay

Grouping and filters

By default the list groups sessions by what needs you:

GroupSessions in it
In progressLive and busy
CompletedUnread: finished working, or marked with r
Need actionLive and waiting on you: a permission prompt, a question, or a Plan or Ask prompt
IdleEverything else, including closed sessions

A session lands in the first group it matches. Press ` to cycle the grouping: state, then folder (grouped by git repository, so worktrees of one repo share a group, or by working directory outside git), then date. h collapses the group under the cursor and l expands it.

S opens the view settings, which are saved across restarts:

SettingOptionsDefault
StatusAll, Active, ArchivedActive
GroupingState, Folder, DateState
Last activity1d, 3d, 7d, 30d, All7d

Press 1, 2, or 3 to jump to a setting, or move with j / k and press Enter. Live sessions are never hidden by the Last activity window.

Archive

a archives the selected session, or unarchives it if it already is. Archiving never stops a running Claude; it only takes the session out of the default view. A session you close on purpose is archived automatically, and one that was archived comes back when you resume it. To see archived sessions, set Status to All or Archived in S. Claude Code has the exact rules.

x closes the selected live session's pane after you confirm, and the session is then archived like any other explicit close.

Import what you already have

Importing is a one-time action, so it is a command rather than a key:

text
1$ agent-dash import

It opens a picker listing Claude sessions Agent Dash doesn't know about yet, read from the Claude CLI's transcripts and from Claude Desktop. If a session is in both, it is listed as Desktop. Sessions archived in Desktop are not listed. Nothing is selected to start with. Enter imports the selection, prints Imported N sessions and exits; Esc or q exits without importing. While the session list is empty, Agent Dash shows a hint to run this command.

KeyAction
Tab / Shift+TabCycle the source filter: All, CLI, Desktop
SpaceToggle a session
aSelect every visible session (honoring the source and text filters)
nDeselect all
/Fuzzy filter (Enter keeps it, Esc clears it)
EnterImport the selected sessions
Esc / qQuit without importing

The source filter combines with /. Your selection stays when either filter changes, and Enter imports every selected session, including ones currently filtered out.

To skip the picker, pass a flag. Both print the count and exit.

FlagImports
--allEvery session not tracked yet
--since <1d|3d|7d|30d>Untracked sessions active within that window
--source <cli|desktop>Only sessions from that source; combine with --all or --since

Copy mode

Press v in the preview pane to freeze it and enter copy mode — the same motions you know from vim, plus forward/backward search.

Where state lives

Agent Dash keeps its own files next to your config. You can inspect or delete any of them by hand.

PathPurpose
~/.config/agent-dash/config.tomlConfiguration (takes precedence over config.json)
~/.config/agent-dash/config.jsonConfiguration (used when no config.toml exists)
~/.config/agent-dash/sessions.jsonEvery session Agent Dash knows: title, folder, last activity, archived, unread
~/.config/agent-dash/state.jsonView settings, the Worktree checkbox state and collapsed groups
/tmp/agent-dash-{pid}-preview.fifoLive preview FIFO
Warning · FIFO cleanup

FIFOs are created with O_NONBLOCK in /tmp. If Agent Dash crashes hard, a stale FIFO may be left behind — it's harmless, and the next launch will replace it.

What next

You've got the loop. From here, a few common places to go: