Repolode
MisterTea

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. 1

    Install the client on macOS with Homebrew

    brew install et
  2. 2

    Install on Ubuntu via PPA, after adding the repository

    sudo add-apt-repository ppa:jgmath2000/et
  3. 3

    Install on FreeBSD with pkg

    pkg install eternalterminal
  4. 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

#remote-shell#ssh#terminal#cpp#reconnect#tmux#devops#mosh

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