See all your tmux sessions. Type into them. Without leaving.
Built on lunemis/mux — original TUI, AI detection, popup system by @lunemis. This fork adds remote servers, input mode, and visual upgrades.
한국어 ·
Normal tmux workflow:
Ctrl+b d → tmux ls → remember which session → tmux attach -t name → wrong one → repeat
With sesh:
Open it. See all sessions live. Press i. Type. Done.
Watch a GPU job while working locally
2 → switch to gpu3 tab
↓ → select the training session
i → enter input mode
nvidia-smi → type command
Enter → send it, see output in preview
Esc → back to navigating
Manage 4 Claude sessions without losing your mind
/claude → filter to only claude sessions
j/k → navigate between them
(preview updates live — see which one is waiting for you)
Enter → attach to the right one instantly
Jump to any session in 2 keystrokes
1 → local sessions
2 → gpu3 sessions
3 → gpu4 sessions
Create a session on a remote server without SSH-ing in
2 → switch to gpu3 tab
n → new session
myexp → name it
Enter → created on gpu3, you never left your terminal
Kill a dead session on remote without attaching
navigate to it → x → y → gone
git clone https://github.com/santhoshkammari/sesh.git
cd sesh
make installNeeds Go. Install Go: sudo snap install go --classic
Add via s key in TUI, or edit directly:
~/.config/sesh/servers.json
[
{"name": "gpu3", "host": "user@192.168.1.100"},
{"name": "gpu4", "host": "user@192.168.1.101"}
]Needs SSH key auth (no password prompts). Set up once:
ssh-copy-id user@your-serverNavigation
| Key | Action |
|---|---|
j / k or ↑↓ |
Move up / down |
g / G |
Jump to top / bottom |
Tab or l |
Expand session → windows → panes |
Shift+Tab or h |
Collapse |
Enter |
Attach to session |
Session management
| Key | Action |
|---|---|
n |
New session |
r |
Rename session |
x |
Kill session (asks y/n) |
/ |
Filter by name or path |
Esc |
Clear filter |
Server tabs
| Key | Action |
|---|---|
1 2 3 ... |
Jump to tab (1=local, 2=first server...) |
H / L |
Previous / next tab |
s |
Add a server |
d |
Remove current server tab |
Input mode (i to enter, Esc to exit)
| Key | Action |
|---|---|
| type anything | Builds up in the input bar |
Enter |
Send to session |
Backspace |
Delete last char |
Ctrl+c |
Send interrupt to session |
Ctrl+u |
Clear input |
↑ / ↓ |
Send arrow keys (history navigation) |
Tab |
Send tab (autocomplete) |
Other
| Key | Action |
|---|---|
? |
Toggle debug mode (shows pid, uptime, window count) |
q |
Quit |
local gpu3 gpu4 (3)
╭────────────────────╮╭──────────────────────────────────────────────────╮
│▶ ● myproject 2m ││[ myproject ] ~/work/myproject ⌥ main│
│▶ ◑ claude 15m ✦││──────────────────────────────────────────────────│
│▶ ○ logs 1h ││> implement the auth system │
╰────────────────────╯│ Sure! I'll start with the JWT middleware... │
╰──────────────────────────────────────────────────╯
●green — you're attached here◑spinning — AI tool active (claude/aider/codex/gemini)○dim — idle- Preview refreshes every 500ms — you see output as it happens
- Token usage + cost shown for Claude sessions
sesh setup-keybind # adds prefix+m binding
tmux source ~/.tmux.confPress Ctrl+b then m anywhere — mux appears as overlay, pick session, it disappears.
# ~/.tmux.conf
set -g status-right '#(sesh status)'Shows ✦ ◈ when AI sessions are active.
- tmux 3.2+
- Go 1.21+ (to build)
- SSH key auth for remote servers
