This page lists the user-visible features currently implemented in the sidebar.
Each session row can show:
- Session index for number-key switching
- Session name
- Branch name, truncated when needed
- Running spinner or terminal-state marker
- Focused state highlight
- Current client session emphasis
- Unseen accent for
done,error, orinterruptedstates
The focused session detail panel can show:
- Truncated working directory
- Detected localhost ports
- Agent instances in that session
- Thread names when watchers provide them
Clicking a detected port opens http://localhost:<port>.
- Multiple agent instances per session when a watcher emits
threadId - Per-instance unseen tracking
- Amp thread seen-state integration via Amp's
session.json - Status values:
idle,running,done,error,waiting,interrupted - Automatic pruning of stale running and seen terminal states
- Git branch lookup from the session directory
- Dirty-worktree detection
- Git worktree detection
- Pane count and window count per session
- Session uptime display
- Session ordering persisted across restarts
- Global hooks for session changes, window selection, window creation, resize, and refresh
- Sidebar stash session named
_os_stashso hidden sidebars can be restored - Session creation popup using the bundled
sessionizer.shscript
| Key | Action |
|---|---|
j, Down |
Move focus down |
k, Up |
Move focus up |
Enter |
Switch to focused session |
Tab |
Cycle to next session |
Shift+Tab |
Cycle to previous session |
1-9 |
Switch to session by visible index |
Alt+Up |
Move focused session up in persisted order |
Alt+Down |
Move focused session down in persisted order |
n, c |
Create a new session |
d, x |
Open kill-session confirmation for focused session |
t |
Open theme picker |
r |
Refresh state |
q |
Quit the server and all sidebar panes |
Esc |
Close only the current sidebar client |
| Key | Action |
|---|---|
prefix o → s |
Reveal and focus the sidebar pane |
prefix o → t |
Toggle the sidebar |
prefix o → e |
Spread non-sidebar panes in the current window using even-horizontal |
prefix o → 1 through prefix o → 9 |
Switch directly to the visible session indices |
Configurable @opensessions-focus-global-key such as Alt-s |
Reveal and focus the sidebar pane from any tmux pane |
Configurable @opensessions-index-keys such as Alt-1 through Alt-9 |
Switch directly to the visible session indices from any tmux pane |
- The server exposes
new-sessionthrough the mux provider interface. - The TUI uses a tmux popup sessionizer when it is running inside tmux.
- The bundled sessionizer searches directories listed in
SESSIONIZER_DIR(colon-separated, e.g.$HOME/Code:$HOME/.config) or$HOME/Documentsif unset. The variable is also read from the tmux global environment (tmux set-environment -g) as a fallback. - Search depth is controlled by
SESSIONIZER_MAXDEPTH(defaults to3). - If
fzfis unavailable, the tmux sessionizer exits with a prompt explaining that dependency.
- Switching routes through the server so the server can use authoritative client TTY information.
- tmux is the only supported mux today.
- Git info is cached for 5 seconds.
- Listening localhost ports are re-polled every 10 seconds while clients are connected.
- Amp and Claude Code watchers poll every 2 seconds in addition to file watching.
- OpenCode polls every 3 seconds.
~/.local/share/amp/threads/~/.local/share/amp/session.json~/.claude/projects/~/.local/share/opencode/opencode.db~/.config/opensessions/config.json