About this project

Eternal Terminal (ET) is a remote shell client-server system that survives network disruptions. Unlike plain SSH, when a connection drops, it automatically reconnects and restores the session exactly where the user left off — no interrupted commands or lost output. ### How it works ET uses three components: - **`et`** (client): Runs on the local machine. Authenticates via SSH, then switches to a persistent ET connection over TCP port 2022. - **`etserver`** (server daemon): Runs as a system service (typically root-managed) on the remote host. Accepts client connections and routes them to the correct user session. - **`etterminal`** (server-side helper): Launched by `et` over SSH. Hosts the actual terminal session and registers with `etserver` via a FIFO. ### Key features - **Automatic reconnection**: Network blips, WiFi transitions, or VPN drops do not kill your session. - **SSH-based auth**: Leverages existing SSH keys and config for secure authentication. - **Port forwarding**: Supports `-t` flag for local and remote port forwarding. - **Jumphost support**: Connect through intermediate hosts with `--jumphost` and `--jport`. - **HTM multiplexer**: Bundled terminal multiplexer (`htm`) supports native windows, tabs, and splits in compatible terminal emulators, integrating with tmux control mode. - **Configurable**: Server settings live in `/etc/et.cfg` (port, bind address, etc.). ### Installation Pre-built packages are available for macOS (Homebrew, MacPorts), Ubuntu/Debian (PPA and official deb repo), Fedora, CentOS 8+, FreeBSD, openSUSE, and NixOS. Windows is supported via WSL. Source builds are also documented for Debian/Ubuntu, CentOS 7, and macOS. ### Usage ```bash et hostname # default port 2022, current username et user@hostname:8000 # custom port et hostname --jumphost jump # via jumphost ``` ET reads both user-specific and system-wide SSH config files; pass `--ssh-config` with an absolute path to isolate from ambient SSH configuration, or `--no-ssh-config` to disable it entirely. ### Protocol docs Detailed protocol and HTM design documentation is available in the repository under `docs/`.