All Projects → elisescu → Tty Share

elisescu / Tty Share

Licence: mit
Share your linux or osx terminal over the Internet.

Programming Languages

go
31211 projects - #10 most used programming language

Labels

Projects that are alternatives of or similar to Tty Share

std
stdout, for humans.
Stars: ✭ 17 (-94.69%)
Mutual labels:  tty
tty-tree
Print directory or structured data in a tree like format
Stars: ✭ 54 (-83.12%)
Mutual labels:  tty
cloudterm
Cloud Web Terminal Emulator. Opens your terminal to Web.
Stars: ✭ 58 (-81.87%)
Mutual labels:  tty
ansicolor
A JavaScript ANSI color/style management. ANSI parsing. ANSI to CSS. Small, clean, no dependencies.
Stars: ✭ 91 (-71.56%)
Mutual labels:  tty
std-env
Detect current Javascript environment
Stars: ✭ 85 (-73.44%)
Mutual labels:  tty
uniterm
🚧Universal Terminal Emulator, might be a great toy terminal front-end for geeks.
Stars: ✭ 22 (-93.12%)
Mutual labels:  tty
sexpect
Expect for Shells
Stars: ✭ 99 (-69.06%)
Mutual labels:  tty
Tty Markdown
Convert a markdown document or text into a terminal friendly output.
Stars: ✭ 275 (-14.06%)
Mutual labels:  tty
gdb-dashboard
Modular visual interface for GDB in Python
Stars: ✭ 8,699 (+2618.44%)
Mutual labels:  tty
CLIp
CLIp is a clipboard manager for a command line interface written in 100% standard C only. Pipe to it to copy, pipe from it to paste.
Stars: ✭ 12 (-96.25%)
Mutual labels:  tty
shellcast
Shellcasting client and server
Stars: ✭ 26 (-91.87%)
Mutual labels:  tty
sfm
simple file manager
Stars: ✭ 163 (-49.06%)
Mutual labels:  tty
bash-streams-handbook
💻 Learn Bash streams, pipelines and redirection, from beginner to advanced.
Stars: ✭ 153 (-52.19%)
Mutual labels:  tty
x-terminal
An xterm based Atom plugin for providing terminals inside your Atom workspace.
Stars: ✭ 34 (-89.37%)
Mutual labels:  tty
ttycopy
A tool scanning other terminal.
Stars: ✭ 15 (-95.31%)
Mutual labels:  tty
multitextor
Multiplatform command line text editor.
Stars: ✭ 27 (-91.56%)
Mutual labels:  tty
showme
Rapid diagnostic system status tool (performance monitoring, network scanning, mysql performance monitoring, kubectl status)
Stars: ✭ 24 (-92.5%)
Mutual labels:  tty
Peaclock
A responsive and customizable clock, timer, and stopwatch for the terminal.
Stars: ✭ 314 (-1.87%)
Mutual labels:  tty
tty-reader
A set of methods for processing keyboard input in character, line and multiline modes.
Stars: ✭ 73 (-77.19%)
Mutual labels:  tty
enquirer
Stylish, intuitive and user-friendly prompts, for Node.js. Used by eslint, webpack, yarn, pm2, pnpm, RedwoodJS, FactorJS, salesforce, Cypress, Google Lighthouse, Generate, tencent cloudbase, lint-staged, gluegun, hygen, hardhat, AWS Amplify, GitHub Actions Toolkit, @airbnb/nimbus, and many others! Please follow Enquirer's author: https://github.…
Stars: ✭ 6,523 (+1938.44%)
Mutual labels:  tty

Build Status

tty-share

tty-share is a very simple tool used to share your Linux/OSX terminal over the Internet. It is written in GO, results in a static cross-platform binary with no dependencies, and therefore will also work on your Raspberry Pi.

The remote participant needs not setup, and they can join the session from the browser or from the terminal (tty-share <secret URL>). The session can be shared either over the Internet, or only in the local network. When sharing it over the Internet (outside your NAT), tty-share will connect to proxy server that will mediate the communication between the participants. An instance of this server runs at tty-share.com, but you can run your own.

Demos

Local network session demo

Public session demo

Join a session from another terminal demo

Installing and running

Docker

If you only want to try it out, there's a Docker image you can use:

docker run -it elisescu/tty-share --public

Brew

If you are on OSX and use brew, then you can simply do a brew install tty-share.

Binary releases

Otherwise, download the latest tty-share binary release, and run it:

Running it

~ $ tty-share --public
public session: https://on.tty-share.com/s/L8d2ECvHLhU8CXEBaEF5WKV8O3jsZkS5sXwG1__--2_jnFSlGonzXBe0qxd7tZeRvQM/
local session: http://localhost:8000/s/local/
Press Enter to continue!

~ $

Sessions can be created as read only, with the --readonly flag. See --help for more.

Join a session

You can join a session by opening the session URLs in the browser, or with another tty-share command:

~ $ tty-share https://on.tty-share.com/s/L8d2ECvHLhU8CXEBaEF5WKV8O3jsZkS5sXwG1__--2_jnFSlGonzXBe0qxd7tZeRvQM/

Building

Simply run

go get github.com/elisescu/tty-share

The frontend code (the code that runs in the browser session) lives under server/frontend, and it is compiled into server/assets_bundle.go go file, committed to this git repo. To rebuild this bundle of web resources, make sure you have node and npm installed, and then run: make -C server frontend. Unless you change the browser/frontend code, you don't need to do this - the code is already precompiled and bundled in assets_bundle.go.

For cross-compilation you can use the GO building environment variables. For example, to build the tty-share for raspberrypi, you can do GOOS=linux GOARCH=arm GOARM=6 go build (check your raspberrypi arch with uname -a).

Security

tty-share connects over a TLS connection to the server, which uses a proxy for the SSL termination, and the browser terminal is served over HTTPS. The communication on both sides is encrypted and secured, in the same way as other similar tools are doing it (e.g. tmate, VSC, etc).

However, end-to-end encryption is on the TODO list. Otherwise, if you don't trust my tty-proxy installation, you can run your own.

Similar solutions

VSC (Visual Studio Code) Live Share

I've tried Visual Studio Code sharing, and it seems to work relatively well. One big advantage is that both persons in the session can write code, and navigate independently of each other. It also supports terminal sharing.

However, the two disadvantages with this tool are the need of logging in with a Github (or Microsoft) account, and having to install Visual Studio Code on the remote side too. I don't want to force the remote person to install VSC just for them to get access to a terminal session. Visual Studio Code might be popular in the web development circles, but it is not popular in the other development corners.

tmate.io

This is a great tool, and I used it quite a few times before. At the time I started my project, tmate.io didn't have the option to join the session from the browser, and one had to use ssh. In most cases, ssh is not a problem at all - in fact it's even preferred, but there are cases when you just don't have easy access to an ssh client, e.g.: joining from a Windows machine, or from your smartphone. In the meantime, the project added some support for joining a terminal session in the browser too.

Perhaps one downside with tmate is that it comes with quite a few dependencies which can make your life complicated if you want to compile it for ARM, for example. Running it on a raspberry pi might not be as simple as you want it, unless you use Debian.

Credits

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].