MCPcopy
hub / github.com/butlerx/wetty

github.com/butlerx/wetty @v3.1.0 sqlite

repository ↗ · DeepWiki ↗ · release v3.1.0 ↗
116 symbols 280 edges 55 files 7 documented · 6%
README

WeTTY = Web + TTY.

All Contributors

Documentation License: MIT

Terminal access in browser over http/https

WeTTY

Terminal over HTTP and https. WeTTY is an alternative to ajaxterm and anyterm but much better than them because WeTTY uses xterm.js which is a full fledged implementation of terminal emulation written entirely in JavaScript. WeTTY uses websockets rather than Ajax and hence better response time.

Prerequisites

  • node >=20
  • make
  • python
  • build-essential

Install

npm -g i wetty

Usage

$ wetty --help
Options:
  --help, -h              Print help message                            [boolean]
  --version               Show version number                           [boolean]
  --conf                  config file to load config from                [string]
  --ssl-key               path to SSL key                                [string]
  --ssl-cert              path to SSL certificate                        [string]
  --ssh-host              ssh server host                                [string]
  --ssh-port              ssh server port                                [number]
  --ssh-user              ssh user                                       [string]
  --title                 window title                                   [string]
  --ssh-auth              defaults to "password", you can use
                          "publickey,password" instead                   [string]
  --ssh-pass              ssh password                                   [string]
  --ssh-key               path to an optional client private key
                          (connection will be password-less and
                          insecure!)                                     [string]
  --ssh-config            Specifies an alternative ssh configuration
                          file. For further details see "-F" option in
                          ssh(1)                                         [string]
  --force-ssh             Connecting through ssh even if running as
                          root                                          [boolean]
  --known-hosts           path to known hosts file                       [string]
  --base, -b              base path to wetty                             [string]
  --port, -p              wetty listen port                              [number]
  --host                  wetty listen host                              [string]
  --socket                Make wetty listen on unix socket               [string]
  --command, -c           command to run in shell                        [string]
  --allow-iframe          Allow wetty to be embedded in an iframe,
                          defaults to allowing same origin              [boolean]
  --allow-remote-hosts    Allow wetty to use the host and port params
                          in a url as ssh destination                   [boolean]
  --allow-remote-command  Allow wetty to use the command and path
                          params in a url as command and working
                          directory on ssh host                         [boolean]
  --log-level             set log level of wetty server                  [string]

Open your browser on http://yourserver:3000 and you will prompted to login. Or go to http://yourserver:3000/ssh/<username> to specify the user beforehand.

If you run it as root it will launch /bin/login (where you can specify the user name), else it will launch ssh and connect by default to localhost. The SSH connection can be forced using the --force-ssh option.

If instead you wish to connect to a remote host you can specify the --ssh-host option, the SSH port using the --ssh-port option and the SSH user using the --ssh-user option.

Check out the Flags docs for a full list of flags

Docker container

To use WeTTY as a docker container, a docker image is available on docker hub. To run this image, use

docker run --rm -p 3000:3000 wettyoss/wetty --ssh-host=<YOUR-IP>

and you will be able to open a ssh session to the host given by YOUR-IP under the URL http://localhost:3000.

It is recommended to drive WeTTY behind a reverse proxy to have HTTPS security and possibly Let’s Encrypt support. Popular containers to achieve this are nginx-proxy and traefik. For traefik there is an example docker-compose file in the containers directory.

FAQ

Check out the docs

What browsers are supported?

WeTTY supports all browsers that xterm.js supports.

Author

👤 Cian Butler butlerx@notthe.cloud

Contributing ✨

Contributions, issues and feature requests are welcome!

Feel free to check issues page.

Please read the development docs for installing from source and running is dev node

Thanks goes to these wonderful people (emoji key):

Cian Butler Cian Butler 💻 📖 Krishna Srinivas Krishna Srinivas 💻 acalatrava acalatrava 💻 Strubbl Strubbl 💻 Oleg Kurapov Oleg Kurapov 💻 Boyan Rabchev Boyan Rabchev 💻 Jimmy Jimmy 💻
Luca Milanesio Luca Milanesio 💻 Anthony Jund Anthony Jund 💻 mirtouf mirtouf 💻 Bertrand Roussel Bertrand Roussel 💻 Ben Letchford Ben Letchford 💻 SouraDutta SouraDutta 💻 Koushik M.L.N Koushik M.L.N 💻
Imuli Imuli 💻 perpen perpen 💻 Nathan LeClaire Nathan LeClaire 💻 Mihir Kumar Mihir Kumar 💻 Chris Suszynski Chris Suszynski 💻 Felix Bartels Felix Bartels 💻 Jarrett Gilliam Jarrett Gilliam 💻
Harry Lee Harry Lee 💻 Andreas Klöckner Andreas Klöck

Extension points exported contracts — how you extend this code

Window (Interface)
(no doc)
src/client/wetty/term.ts
SSH (Interface)
(no doc)
src/shared/interfaces.ts
WettyMessage (Interface)
(no doc)
src/client/wetty/term/configuration.ts
SSL (Interface)
(no doc)
src/shared/interfaces.ts
Options (Interface)
(no doc)
src/client/wetty/term/options.ts
SSLBuffer (Interface)
(no doc)
src/shared/interfaces.ts
Server (Interface)
(no doc)
src/shared/interfaces.ts
Config (Interface)
(no doc)
src/shared/interfaces.ts

Core symbols most depended-on inside this repo

buffer
called by 38
src/client/wetty/download.ts
toggleCTRL
called by 7
src/client/wetty/term.ts
logger
called by 6
src/shared/logger.ts
resizeTerm
called by 5
src/client/wetty/term.ts
escapeShell
called by 5
src/server/shared/shell.ts
assetsPath
called by 3
src/server/socketServer/shared/path.ts
cmd
called by 2
build.js
trim
called by 2
src/client/wetty/socket.ts

Shape

Function 89
Method 11
Class 8
Interface 8

Languages

TypeScript100%

Modules by API surface

src/client/wetty/term.ts17 symbols
src/assets/xterm_config/functionality.js14 symbols
src/client/wetty/download.ts7 symbols
src/server/flowcontrol.ts6 symbols
src/shared/interfaces.ts5 symbols
src/shared/config.ts5 symbols
src/server/socketServer/middleware.ts5 symbols
src/server/socketServer/metrics.ts4 symbols
src/client/wetty/term/configuration.ts4 symbols
src/client/wetty/flowcontrol.ts4 symbols
build.js4 symbols
src/server/command.ts3 symbols

Dependencies from manifests, versioned

@commitlint/cli21.0.1 · 1×
@commitlint/config-conventional21.0.1 · 1×
@eslint/js10.0.1 · 1×
@fortawesome/fontawesome-svg-core6.7.2 · 1×
@fortawesome/free-solid-svg-icons6.7.2 · 1×
@types/chai5.2.3 · 1×
@types/compression1.8.1 · 1×
@types/etag1.8.4 · 1×
@types/express5.0.6 · 1×
@types/fresh0.5.3 · 1×
@types/jsdom21.1.7 · 1×
@types/mocha10.0.10 · 1×

For agents

$ claude mcp add wetty \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact