Skip to content

santhoshkammari/sesh

 
 

Repository files navigation

sesh

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.

한국어 · License

Demo


Why this is powerful

Normal tmux workflow: Ctrl+b dtmux ls → remember which session → tmux attach -t name → wrong one → repeat

With sesh: Open it. See all sessions live. Press i. Type. Done.


The killer combos

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

Install

git clone https://github.com/santhoshkammari/sesh.git
cd sesh
make install

Needs Go. Install Go: sudo snap install go --classic


Remote servers setup

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-server

All keys

Navigation

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

What you see

 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

Popup mode (open mux over anything)

sesh setup-keybind        # adds prefix+m binding
tmux source ~/.tmux.conf

Press Ctrl+b then m anywhere — mux appears as overlay, pick session, it disappears.


Statusbar widget

# ~/.tmux.conf
set -g status-right '#(sesh status)'

Shows ✦ ◈ when AI sessions are active.


Requirements

  • tmux 3.2+
  • Go 1.21+ (to build)
  • SSH key auth for remote servers

License

MIT

About

TUI tmux session manager with live preview — built for AI coding workflows

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Go 92.2%
  • Shell 7.5%
  • Makefile 0.3%