-
Notifications
You must be signed in to change notification settings - Fork 0
Compared to et and mosh
Ken Tobias edited this page Jun 21, 2026
·
4 revisions
Eternal Terminal by Jason (Jez) Gao and contributors is the direct inspiration for etr. ET solved the reconnecting shell problem elegantly and has been widely used in production for years. etr exists because:
- The original ET is written in C++ with a complex build system; etr is a single
cargo install - ET requires a pre-running daemon (
etserver) on the server; etr starts the server on the fly like mosh - etr uses QUIC (TLS 1.3) as the transport — no custom crypto, reliable ordered delivery, and multiplexed streams built in
- etr supports port forwarding (
-L) - etr's wire format is documented in PROTOCOL.md
If you need a battle-tested, production-grade reconnecting terminal today, use the original ET. etr is newer and less proven. That said — go give ET a star: https://github.com/MisterTea/EternalTerminal
mosh is another reconnecting shell that also uses SSH for bootstrap and UDP for the session. Key differences:
| mosh | etr | |
|---|---|---|
| Protocol model | State sync (roaming cursor) | Ordered stream with replay |
| Transport | UDP (custom) | QUIC (TLS 1.3) |
| Crypto | AES-128-OCB | TLS 1.3 (AES-256-GCM / ChaCha20-Poly1305) |
| Post-quantum | No | Not yet (planned via rustls-post-quantum) |
| Forward secrecy | No | Yes (TLS 1.3 ephemeral X25519 per connection) |
| Server process | Per-session (like etr) | Per-session |
| Scrollback | No (roaming display only) | Yes (stream replay) |
| Port forwarding | No | Yes (-L/-R TCP and UDP, multi-sender) |
| Escape sequence | ~. |
~. |
| Login shell | Yes | Yes (.zprofile/.zlogin sourced) |
| Session env vars | SSH_CONNECTION |
ETR_CONNECTION, ETR_VERSION, SSH_CONNECTION
|
mosh's roaming-display model makes it very bandwidth-efficient for interactive use. etr's stream model is simpler to reason about and enables correct scrollback and replay.
| et | mosh | etr | |
|---|---|---|---|
| Language | C++ | C++ | Rust |
| Server model | Pre-running daemon | Per-session | Per-session |
| Crypto | AES-256-GCM | AES-128-OCB | TLS 1.3 (AES-256-GCM / ChaCha20) |
| Post-quantum | No | No | Planned |
| Forward secrecy | Yes | No | Yes (TLS 1.3) |
| Protocol spec | Internal | Published | PROTOCOL.md |
| Install | Package manager | Package manager | cargo install etr |