If you’ve ever been deep in a remote terminal session (debugging a server, running long processes, or just tinkering in your homelab) only to lose connectivity and watch your work evaporate, you know the pain. Traditional SSH drops the session on network hiccups, IP changes, or brief outages. Enter Eternal Terminal (ET): a remote shell that automatically reconnects without interrupting your session.
Today, I’m excited to share eternal-terminal-client: a fresh, Windows-first implementation of the ET client written in Rust. It speaks the same wire protocol (version 6) as the official client, so it works seamlessly with existing etserver installations on your remote hosts. And yes, it builds and runs great on Linux and macOS too.
What is Eternal Terminal?
Eternal Terminal (from the original MisterTea/EternalTerminal project) is designed for resilience. It uses SSH for the initial secure handshake and authentication, then switches to a direct TCP connection (default port 2022) with its own robust reconnection logic. Your shell, tmux sessions, running commands, and terminal state persist across disconnects. It’s perfect for flaky Wi-Fi, mobile hotspots, travel, or unstable home internet.
Key benefits:
- Automatic reconnection with catch-up buffers.
- Support for window resizing, keepalives, and basic interactivity.
- No need to restart long-running processes.
The official client works well, but native Windows support has historically been limited (often pushing users toward WSL). This is where my new client shines.
Purpose of eternal-terminal-client
This project delivers a high-quality, native Rust client with first-class Windows support:
- Native console handling via Win32 VT for Windows Terminal, conhost, and more.
- Prebuilt binaries for Windows (x64 + ARM64), Linux x64, and macOS (Apple Silicon + Intel).
- Easy installation: Download, rename to
et/et.exe, and add to your PATH. - Full CLI parity for common use cases: usernames, ports, commands, jumphosts, custom SSH options, and more.
- Clean, maintainable code using Rust’s strengths in safety, performance, and cross-platform development.
It’s not a full port of every feature yet (e.g., port forwarding and SSH agent forwarding are on the roadmap), but the core interactive shell, reconnects, and essentials work reliably today.
How I Created It (With a Little Help from Grok)
As a software engineer who spends a lot of time in terminals and homelabs (including managing Ubuntu servers and Windows setups), I wanted a better ET experience on Windows without WSL overhead.
I turned to Grok Build (an AI-powered coding assistant) and described what I needed: a Rust implementation of the Eternal Terminal client protocol. In under 15 minutes, we had a working prototype. The first version failed to connect properly, but Grok diagnosed and fixed it in one quick iteration, and it was good to go.
The process highlighted Rust’s excellent ecosystem for this kind of networking/crypto work (libsodium bindings, etc.) and Grok’s ability to rapidly prototype protocol implementations by referencing the original project’s behavior and docs.
From there, I polished the code: added proper versioning embedded in binaries (including Windows PE metadata), cross-compilation support, CLI flags, jumphost handling, and more. The result is a lightweight, dependency-light client that’s easy to build and distribute.
Getting Started
- Download the latest release from GitHub Releases.
- Rename the binary to
et(oret.exeon Windows) and place it in your PATH. - Ensure you have OpenSSH (
ssh) available and can SSH to your remote host. - Run it just like the original:
et user@hostname(or with flags like-p 2022,--jumphost, etc.).
Check the README for full details, build instructions, and platform notes.
Why Rust? Why Now?
Rust brings memory safety, fearless concurrency, and great cross-compilation to terminal tools. For a protocol-heavy app involving encryption, I/O multiplexing, and reconnection logic, it’s a natural fit. As someone who works extensively with .NET, Docker, and various DevOps stacks, having a reliable native tool like this streamlines my workflow across machines.
This client is MIT-licensed and builds on the excellent design of the original Eternal Terminal by Jason Gauci / MisterTea. Contributions, issues, and feedback are welcome!
Give it a try and let me know how it works for you, especially if you’re on Windows. Happy (eternally connected) hacking!
— Andrew Arnott
GitHub | @aarnott on X