An SSH workspace with persistent sessions and live health dashboards.
Keep remote shells running across connection drops, switch between hosts with keys or the mouse, and check system health without leaving your terminal. ESSH uses OpenSSH for connections and tmux to keep your work alive.
Watch the 38-second demo · Download the browser replay
Inspect disks with df and lsblk, find busy processes with ps, sample system
activity with vmstat, and check sockets and interfaces with ss and ip.
The demo shows the side, half and full health views, session switching, help,
and a dropped connection recovering the same remote shell.
Download a binary for Linux or macOS, on x86_64 or ARM64, from
Releases. Extract the archive
and put essh somewhere on your PATH.
You need tmux 3.3+ and OpenSSH locally, and tmux on each remote host. Detailed health metrics are available for Linux hosts.
Or build from source with Rust:
git clone https://github.com/matthart1983/essh.git
cd essh
cargo build --release
./target/release/essh
ESSH reads hosts from ~/.ssh/config, its own configuration, and its host cache.
For example:
Host web-01
HostName 192.168.1.20
User deploy
IdentityFile ~/.ssh/id_ed25519
Run essh, select a host, and press Enter. Use / to filter hosts and
Esc to clear the filter. Press a to add a host or e to edit one.
OpenSSH handles authentication and host-key checking.
| Key | Action |
|---|---|
| F1 | Open or close help |
| F2 | Cycle terminal → side health → half health → full health → terminal |
| F3 | Open Sessions; select a session or press n to start another |
| F4 | Return to the main menu while sessions keep running |
| F5 / F6 | Switch to the previous / next session |
| h on Hosts | Open health for the selected host |
| r after a connection drop | Reconnect |
| q on Hosts | Leave ESSH while remote work keeps running |
Click session tabs and navigation controls to switch views. Click a row to select it; double-click to connect or switch. Use the mouse wheel to scroll, click panes to focus them, and drag dividers to resize them.
If your keyboard uses the function row for brightness or volume, hold Fn while pressing an F-key, or enable standard function keys in your keyboard settings. The navigation controls are also clickable, and F1 lists the available keys.
Press F2 to cycle through:
| View | What you see |
|---|---|
| Terminal | Your shell with the session and navigation bars |
| Side health | A narrow strip with traffic, CPU, memory, disk and latency |
| Half health | Your shell and a dashboard sharing the terminal |
| Full health | Network traffic, CPU cores, memory, storage, peers and processes |
The dashboards use thin meters and live readings. Unavailable readings show —; disconnected hosts are clearly marked. Narrow terminals skip the side layouts.
In the dashboard:
For direct access, press Ctrl+A, release it, then h for full health or m to cycle side health → half health → off.
Use F3, then n, to open another independent session. Switch with F5 / F6, the Sessions picker, or the mouse. F4 returns to the host list without ending your sessions.
Session IDs survive local restarts. Reconnecting reattaches the remote shell when it still exists; if it has ended, ESSH starts a new shell. A disconnected session's remote state remains unverified until you reconnect.
Ctrl+A controls local tmux. Ctrl+B controls tmux on the remote host. Press the prefix, release it, then press the next key:
| Keys | Action |
|---|---|
| Ctrl+B, then % | Split the remote terminal side by side |
| Ctrl+B, then " | Split the remote terminal top and bottom |
| Ctrl+B, then an arrow | Move between remote panes |
| Ctrl+A, then v | Send the next key directly to the remote application |
| Ctrl+A, then x | Terminate a remote session after confirmation |
F1–F6 are reserved for ESSH. Use Ctrl+A, then v, when a remote application needs one of those keys.
cargo fmt --check
cargo test
cargo clippy --all-targets --all-features -- -D warnings
cargo build --release
ESSH_BIN=target/release/essh python3 scripts/test-tmux-v3.py
The live regression check uses an isolated SSH server and tmux sockets. Demo recording and verification explains how to reproduce the tour.
To contribute, create a branch, make your change, run the checks, and open a pull request.