An OpenSSH-compatible SSH client that adds login prompts, batch login, trzsz/zmodem file transfer and a UDP mode similar to mosh.
MisterTea/EternalTerminal
A remote shell client and server that keeps SSH-style sessions alive and reconnects automatically after network changes.
Open-source alternative to:Mosh
- Stars
- 3,944
- Forks
- 240
- Open issues
- 28
- Last commit
- 2 days ago
What is it?
Eternal Terminal (ET) is a remote shell that reconnects automatically without interrupting the session. The client `et` uses SSH to authenticate and start the remote session, then keeps a persistent connection to the `etserver` daemon on TCP port 2022 by default, so a laptop sleeping or a changed network does not end the shell.
ET works like ssh in its command syntax and supports jumphosts, port forwarding through `--tunnel`, SSH config files, and SSH agent forwarding. Sessions can be saved and reattached after a client restart, and the project also offers `etctl`, a tool for driving a session from scripts with captured output and exit codes. It bundles HTM, a tmux-compatible terminal multiplexer, and can be used as the transport for VS Code and Cursor Remote-SSH.
The project is written in C++ and installs on macOS, Linux distributions such as Ubuntu, Debian, Fedora and NixOS, FreeBSD, and under WSL on Windows. Telemetry is enabled by default and can be turned off with a flag, a config setting, an environment variable, or a build option.
Key features
- 01Reconnects automatically, keeping the remote shell session alive across network changes.
- 02Uses SSH for authentication and startup, with ssh-style command syntax.
- 03Supports jumphosts, port forwarding via --tunnel, and SSH config files.
- 04Saves sessions so they can be reattached after the client restarts.
- 05Provides etctl for scripted control with captured output and exit codes.
- 06Works as the transport for VS Code and Cursor Remote-SSH.
Use cases
- Working on a remote server over an unstable Wi-Fi or mobile connection.
- Keeping long-running remote editing sessions alive while a laptop sleeps.
- Driving interactive remote commands from scripts with etctl.
- Connecting to servers behind a jumphost with custom SSH ports.
Quick start
- 1
Install the client on macOS with Homebrew
brew install et - 2
Install on Ubuntu via PPA, after adding the repository
sudo add-apt-repository ppa:jgmath2000/et - 3
Install on FreeBSD with pkg
pkg install eternalterminal - 4
Connect to a host (requires working ssh to it and an open port 2022 on the server)
et hostname
Things to know
- Requires working SSH access to the host, since ET uses ssh for handshaking.
- Needs an open TCP port on the server, 2022 by default.
- Telemetry is on by default and sends error logs to Datadog and crash reports to Sentry; it must be disabled manually.
In collections
Topics
FAQ
- What is EternalTerminal?
- A remote shell client and server that keeps SSH-style sessions alive and reconnects automatically after network changes. Eternal Terminal (ET) is a remote shell that reconnects automatically without interrupting the session. The client `et` uses SSH to authenticate and start the remote session, then keeps a persistent connection to the `etserver` daemon on TCP port 2022 by default, so a laptop sleeping or a changed network does not end the shell.
- Is EternalTerminal free to use? What license does it have?
- EternalTerminal is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is EternalTerminal still maintained?
- Actively maintained. The last commit to EternalTerminal was on Nov 4, 2026.
- What can I use EternalTerminal for?
- Working on a remote server over an unstable Wi-Fi or mobile connection. Keeping long-running remote editing sessions alive while a laptop sleeps. Driving interactive remote commands from scripts with etctl. Connecting to servers behind a jumphost with custom SSH ports.
- How do I install EternalTerminal?
- Install the client on macOS with Homebrew: brew install et Install on Ubuntu via PPA, after adding the repository: sudo add-apt-repository ppa:jgmath2000/et Install on FreeBSD with pkg: pkg install eternalterminal Connect to a host (requires working ssh to it and an open port 2022 on the server): et hostname
- Where can I get EternalTerminal?
- The source code and installation instructions are on GitHub: https://github.com/MisterTea/EternalTerminal
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A modern, GPU-accelerated C++ terminal emulator for Windows, macOS, Linux and BSD with persistent sessions, tabs, splits and graphics support.
A macOS terminal emulator that replaces the built-in Terminal app with tmux integration, shell awareness, inline images and session restoration.
A file transfer tool for SSH terminals that replaces lrzsz (rz/sz) and works inside tmux sessions.
A GPU-rendered terminal emulator in Rust whose background server keeps shells and panes alive after the window closes, with agent-aware sessions and SSH remote work.
A terminal TUI for browsing, connecting to, and managing SSH hosts defined in your ~/.ssh/config file.