English · 한국어
An interactive CLI for picking SSH · Eternal Terminal · tmux hosts and sessions. Pure Bash, and it falls back to plain SSH whenever ET is unavailable.
- tmux session management — list, create and rename remote sessions, then attach right away.
- Auto-reconnect — prefers Eternal Terminal (ET), so sessions survive a closed laptop lid or a network change.
- SSH fallback — hosts without ET, or without a usable tmux, are reached over plain SSH.
Hosts and tmux sessions are picked from the same dashboard.
Host picker:
Narrowing the list with search:
Session picker:
Adding a host:
brew install zoo3323/tap/ezetor:
curl -fsSL https://raw.githubusercontent.com/zoo3323/ezet/main/install.sh | bashFor ET auto-reconnect, install et locally and etserver on the remote host. Without them ezet still connects over SSH.
ezet # pick a host
ezet <host> # pick a session
ezet <host> <name> # connect to a session directly
ezet --doctor # check the setup
ezet --versionMove with the arrow keys and pick with Enter. The host screen adds, edits, deletes and reorders hosts; the session screen attaches or creates tmux sessions, or connects without tmux through the SSH Direct row. q quits and ← goes back to the previous screen.
In the add and edit forms, Enter accepts the shown default, < steps back to the previous field and q cancels.
- Bash 3.2+
- OpenSSH (
ssh) - Eternal Terminal (
et, optional) - Remote
tmux(optional; without it ezet connects throughSSH Direct)
A local tmux is not needed.
ezet runs on macOS and Linux (WSL included, since it reports itself as Linux). Both are covered by the CI matrix on every push.
It does not run on Windows natively: --doctor rejects Git Bash/MSYS2, because
the Include line ezet writes uses an MSYS path (/c/Users/...) that Windows
OpenSSH cannot resolve. Use WSL there.
A Windows host on the remote side is supported. Its shell is not POSIX, so the
tmux query cannot run; ezet detects that, reports non-POSIX shell (e.g. Windows)
and offers the SSH Direct row to connect without tmux. This path is covered by the
test suite with a stub that reproduces the real cmd.exe behaviour (it runs only the
first line of a multi-line command and still exits 0).
ezet hosts live in ~/.ssh/config.d/ezet. Your existing config only gains a single Include line, and it is backed up before the change. ET ports are stored as a comment:
Host host-ext
HostName 203.0.113.10
User user
Port 30001
# ezet: et-port 30002ezet --uninstall removes only the Include line ezet added.
make test # regression tests (bash -n, shellcheck, expect)
make docs # regenerate the README screenshots from the real TUImake docs drives the actual TUI with expect against a fixed fixture and converts the captured terminal output to SVG, so the screenshots cannot drift from the UI.