CLI tool
MatinSenPai/Aether-GUI avatar
MatinSenPai/Aether-GUI

Aether-GUI: a Windows one-click front end for the Aether tunnel

One-click desktop GUI for the Aether censorship-circumvention tunnel — Tauri v2, React 19, Rust

928 stars49 forksTypeScriptAGPL-3.0

At a glance

What is it?
Aether-GUI wraps the Aether censorship-circumvention CLI in a Tauri desktop app, driving the real binary through a pseudo-terminal. It is a convenience layer, not a new tunnel, and it is Windows x64 only for now.
Who is it for?
Aether-GUI is worth adopting if you want Aether's tunnel on Windows without typing interactive setup answers, and you accept that the GUI ships no tunneling logic of its own. Skip it if you need Linux or macOS installers today, or if you cannot run the upstream aether binary at all, since the README states the app cannot substitute for it.
Can I use it commercially?
Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
Is it still maintained?
Yes. The repository last received commits 28 days ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 17, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

What Aether-GUI actually solves, and for whom

Aether, the upstream project, is a terminal tool. The README describes it as discovering a working route out, establishing an encrypted tunnel, and exposing a local SOCKS5 proxy. That workflow assumes a user comfortable answering interactive setup prompts and reading terminal output. Aether-GUI exists to remove that assumption. It is a desktop application that presents a single Connect button and handles identity provisioning, route discovery and prompt answering in the background.

The audience is narrow and specific: Windows users who want Aether's tunnel without the command line. The README is explicit that this project does not reimplement any of Aether's tunneling logic. MASQUE/QUIC obfuscation, WireGuard and route probing all belong to the upstream binary. What this repository contributes is the wrapper: a pseudo-terminal host, a state machine, and a UI. Anyone evaluating it should judge it as an interface, not as a circumvention protocol.

How the GUI drives the real aether binary

The backend is Rust and uses portable-pty to spawn the real Aether v1.5.0 binary in a genuine pseudo-terminal. That detail matters. Rather than reimplementing Aether's CLI contract, the GUI pretends to be a terminal and talks to the program the way a human would. Your chosen profile, covering protocol, scan mode, IP version, MASQUE transport, obfuscation profile, quick reconnect, Zero Trust, tunnel DNS and routing rules, is passed up front as CLI flags and environment variables, so the interactive prompts normally never appear. One prompt is bridged into the GUI: the Zero Trust email-code flow. The README states credentials are never written to the saved profile.

The most interesting design decision is how the app decides it is connected. It does not trust Aether's log wording, which the README calls fragile across releases. Instead it attempts a TCP connection to the local SOCKS5 port at 127.0.0.1:1819 and treats success as proof the tunnel is up. That is a sound choice for a wrapper that cannot control upstream log formats, though it also means a listening port is the only signal the GUI has. The state machine runs Idle, Launching, Connecting, Connected, with Reconnecting and Error as the two terminal states. Reconnecting retries with backoff capped at 3 attempts; Error is final once retries are exhausted or the failure is not retriable, such as a missing binary.

On the frontend, React 19 and Tailwind v4 handle rendering, Zustand holds state, and Motion drives animation. The README notes the ambient background is two compositor-only CSS gradient orbs and that looping animations freeze while the window is unfocused.

Installing Aether-GUI on Windows and making a first connection

The README points to the Releases page for installers. Two artifacts are named: Aether-GUI_x.y.z_x64-setup.exe, described as the standard installer, and Aether-GUI_x.y.z_x64_en-US.msi for scripted or enterprise installs. Windows x64 only for now.

If you prefer to build, the README lists Node.js with npm, a stable Rust toolchain, and Tauri's platform prerequisites. On Windows that means the MSVC C++ Build Tools and the WebView2 Runtime. Frontend dependencies install with npm install. The Aether binary itself is not built here; the repository bundles it.

bash
npm install

The fetch script covers Linux and macOS directly. On Windows the README instructs you to download the matching aether-windows-*.zip from the Aether releases page, verify it against the published SHA256SUMS.txt, and extract aether.exe into src-tauri/binaries/.

bash
./src-tauri/binaries/fetch-aether.sh

Development mode and release builds use the Tauri CLI wired through npm scripts.

bash
npm run tauri dev
npm run tauri build

Installers land under src-tauri/target/release/bundle/. The README notes that cross-platform bundles must each be built on their own OS or via CI. For a first real use, the default screen is the Auto mode button. No configuration is required; it connects using your last-successful settings or sensible defaults on first run. Once Aether reports its own scan budget, the GUI shows a real percentage and progress bar rather than an indeterminate spinner.

Where Aether-GUI is the wrong tool

The clearest limitation is platform coverage. Installers are Windows x64 only. The README directs other platforms to the source build, and even there the fetch-aether.sh script covers Linux and macOS while Windows users must fetch and verify the binary by hand. If you need a packaged Linux or macOS application, this project does not currently provide one.

A second boundary is architectural and cannot be fixed by configuration. Aether-GUI ships no tunneling logic. If the upstream aether binary is missing, the state machine lands in Error and the README gives a missing binary as its example of a non-retriable failure. The GUI cannot route around that. It also cannot route around upstream behaviour: if Aether's route discovery fails on your network, the wrapper has nothing to fall back on.

The reconnect behaviour deserves a caveat of its own. The README says drops are observed occasionally with WARP-in-WARP but handled the same way for every protocol, with automatic retries and backoff capped at 3 attempts. Three attempts is a modest budget. On a network that intermittently blocks the tunnel, you may still end up at Error and have to press Connect again. A user-requested disconnect is never retried, which is the right call but worth knowing when you are watching the state indicator.

Aether-GUI against v2rayN and the raw CLI

The obvious comparison for Windows users is v2rayN, which appears in the related searches around this project. The difference is in what each program owns. v2rayN is a front end for the V2Ray/Xray core, and that core implements the proxy protocols itself. Aether-GUI is a front end for Aether, and Aether implements the tunnel. Neither GUI is a protocol implementation, but the cores underneath them are separate projects with separate configuration models, so the profiles and options do not transfer between them.

The other comparison is Aether itself, without the wrapper. Running the CLI gives you the full prompt surface and the raw log stream, and it works wherever the binary runs, including platforms where Aether-GUI has no installer. What you give up is the automatic prompt answering, the SOCKS5 port check as a connection signal, and the reconnect state machine. If you already have a working Aether setup and a terminal habit, the wrapper adds convenience rather than capability. If you do not, the wrapper is the point.

Maintenance, licensing and what an upgrade costs

The repository is not archived, and the last push was on 2026-08-21. Releases are frequent and closely spaced: v0.5.0 on 2026-07-20, v0.6.0 on 2026-07-25, and v0.7.0 on 2026-07-31. The version in package.json is 0.7.0, matching the latest release tag. That cadence suggests the wrapper is still being shaped, so expect the profile surface to move.

Upgrade cost sits mostly in the bundled binary. Aether-GUI pins the upstream Aether v1.5.0 binary according to the README, which means the wrapper's tunnel behaviour is whatever that release does. When you rebuild from source, you are responsible for fetching and checksum-verifying the binary yourself on Windows. A future wrapper release that moves to a different Aether version changes your tunnel without changing your GUI settings.

The licence is AGPL-3.0. Anyone distributing a modified build, or offering it as a network service, should read the licence text in the repository rather than rely on a summary; that is a question for your own counsel, not for this article. The practical point for most readers is that AGPL is a copyleft licence with network-use terms, which is a different posture from the permissive licences common in desktop utilities.

Editorial conclusion

Aether-GUI is worth adopting if you want Aether's tunnel on Windows without typing interactive setup answers, and you accept that the GUI ships no tunneling logic of its own. Skip it if you need Linux or macOS installers today, or if you cannot run the upstream aether binary at all, since the README states the app cannot substitute for it. Before relying on it, confirm the Aether release you fetched passes its published SHA256SUMS.txt check and that the bundled binary sits in src-tauri/binaries/.

Frequently asked questions

What is the purpose of Aether-GUI?

It is a one-click desktop GUI for Aether, a censorship-circumvention tunnel that is otherwise a terminal tool. It drives the real aether binary in a pseudo-terminal and answers its interactive setup prompts so you do not have to touch a command line.

Is Aether-GUI the same as the Aether protocol?

No. The README states this project does not reimplement any of Aether's tunneling logic. MASQUE/QUIC obfuscation, WireGuard and route probing belong to the upstream Aether project; Aether-GUI is the wrapper.

Which platforms can run Aether-GUI?

Installers are Windows x64 only for now, per the README. Other platforms are directed to the source build, where the fetch-aether.sh script covers Linux and macOS while Windows users download and verify the binary manually.

How does Aether-GUI know the tunnel is connected?

It does not rely on Aether's log wording, which the README calls fragile across releases. It treats a successful TCP connection to the local SOCKS5 port at 127.0.0.1:1819 as the actual proof the tunnel is up.

What happens when the Aether tunnel drops mid-session?

The GUI retries automatically with backoff, shown as a reconnecting status with an attempt count, capped at 3 attempts. A user-requested disconnect is never retried, and once retries are exhausted the state becomes an error.

Under what licence is Aether-GUI released?

AGPL-3.0, according to the repository licence badge and the LICENSE file at the top level of the repository.

Official sources

  1. Issues
  2. License: AGPL-3.0
  3. MatinSenPai/Aether-GUI on GitHub
  4. README
  5. Releases
Community notes

Community notes