Repolode
butlerx

butlerx/wetty

A terminal emulator you open in a web browser, served over HTTP/HTTPS and built on xterm.js and WebSockets.

Stars
5,479
Forks
771
Open issues
15
Last commit
yesterday

What is it?

WeTTY gives you a shell in the browser. It runs a Node.js server that serves an xterm.js terminal page and relays input and output to a local shell or an SSH server over WebSockets. Compared with older browser terminals such as Ajaxterm and Anyterm, it uses WebSockets instead of Ajax polling, which keeps keystroke response times low.

When run as root, WeTTY launches /bin/login so users can enter a username. Otherwise it starts ssh and connects to localhost by default, and you can point it at a remote host with the SSH host, port and user options. Authentication can be password or public key, and the server requires an explicit list of allowed browser origins. It can be run from npm, from a Docker image, or behind a reverse proxy such as nginx or traefik for HTTPS.

Key features

  • 01Runs a full terminal emulator in the browser via xterm.js.
  • 02Uses WebSockets (Socket.IO) for low-latency input and output.
  • 03Connects to a local login shell or a remote SSH server.
  • 04Supports SSH password and public key authentication.
  • 05Requires an allowed-origin list and offers a configurable base path.
  • 06Ships as an npm package and a Docker image.

Use cases

  • Giving team members browser-based shell access to a server without a native SSH client.
  • Offering a web terminal on an internal machine behind a reverse proxy.
  • Accessing a home server or lab machine from a device without a terminal app.

Quick start

  1. 1

    Install WeTTY globally with npm

    npm -g i wetty
  2. 2

    Start WeTTY with an allowed browser origin

    wetty --allowed-origin http://yourserver:3000
  3. 3

    Open the browser at the server address and log in

Things to know

  • Requires node 20 or newer plus build tools such as make, python and build-essential.
  • Requires an explicit --allowed-origin setting before it will accept connections.
  • Gives full terminal access, so it must be secured with HTTPS and a reverse proxy.

In collections

Topics

FAQ

What is wetty?
A terminal emulator you open in a web browser, served over HTTP/HTTPS and built on xterm.js and WebSockets. WeTTY gives you a shell in the browser. It runs a Node.js server that serves an xterm.js terminal page and relays input and output to a local shell or an SSH server over WebSockets. Compared with older browser terminals such as Ajaxterm and Anyterm, it uses WebSockets instead of Ajax polling, which keeps keystroke response times low.
Is wetty free to use? What license does it have?
wetty is open source under the MIT license. Check the license terms before using it in commercial products.
Is wetty still maintained?
Actively maintained. The last commit to wetty was on Nov 6, 2026.
What can I use wetty for?
Giving team members browser-based shell access to a server without a native SSH client. Offering a web terminal on an internal machine behind a reverse proxy. Accessing a home server or lab machine from a device without a terminal app.
How do I install wetty?
Install WeTTY globally with npm: npm -g i wetty Start WeTTY with an allowed browser origin: wetty --allowed-origin http://yourserver:3000 Open the browser at the server address and log in
Where can I get wetty?
The source code and installation instructions are on GitHub: https://github.com/butlerx/wetty

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects