All Projects → maxmcd → Webtty

maxmcd / Webtty

Licence: mit
Share a terminal session over WebRTC

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
typescript
32286 projects

Projects that are alternatives of or similar to Webtty

Mediastreamrecorder
Cross browser audio/video/screen recording. It supports Chrome, Firefox, Opera and Microsoft Edge. It even works on Android browsers. It follows latest MediaRecorder API standards and provides similar APIs.
Stars: ✭ 2,381 (+0.04%)
Mutual labels:  webrtc, webrtc-experiments
Webrtc
Pure Go implementation of the WebRTC API
Stars: ✭ 8,399 (+252.9%)
Mutual labels:  webrtc, pion-webrtc
foxrtc
media sdk based on webrtc
Stars: ✭ 36 (-98.49%)
Mutual labels:  webrtc, webrtc-experiments
Webrtc Experiment
WebRTC, WebRTC and WebRTC. Everything here is all about WebRTC!!
Stars: ✭ 10,335 (+334.24%)
Mutual labels:  webrtc, webrtc-experiments
rtc-ssh
WebRTC wrapper for SSH connect
Stars: ✭ 95 (-96.01%)
Mutual labels:  webrtc, pion-webrtc
Rtcmulticonnection
RTCMultiConnection is a WebRTC JavaScript library for peer-to-peer applications (screen sharing, audio/video conferencing, file sharing, media streaming etc.)
Stars: ✭ 2,187 (-8.11%)
Mutual labels:  webrtc, webrtc-experiments
Fonos
🚀 The open-source alternative to Twilio
Stars: ✭ 3,785 (+59.03%)
Mutual labels:  webrtc
Video Meeting
Google Meet / Zoom clone in a few lines of code
Stars: ✭ 187 (-92.14%)
Mutual labels:  webrtc
Node Webrtc
node-webrtc is a Node.js Native Addon that provides bindings to WebRTC M87
Stars: ✭ 2,258 (-5.13%)
Mutual labels:  webrtc
Playcanvas Ar
Fast and Easy Augmented Reality for the Web 🚀
Stars: ✭ 172 (-92.77%)
Mutual labels:  webrtc
Mediadevices
Go implementation of the MediaDevices API.
Stars: ✭ 197 (-91.72%)
Mutual labels:  webrtc
Blindpad
Collaborative text editor (like Google Docs or CoderPad) with integrated semi-anonymizing voice chat intended to help reduce bias in technical communication.
Stars: ✭ 191 (-91.97%)
Mutual labels:  webrtc
Twilio Video App Android
A collaboration application built with the Twilio Video Android SDK
Stars: ✭ 186 (-92.18%)
Mutual labels:  webrtc
Webcamera
Camera controls for the Web
Stars: ✭ 182 (-92.35%)
Mutual labels:  webrtc
Netflux
JavaScript client and server side transport API based on WebRTC & WebSocket
Stars: ✭ 188 (-92.1%)
Mutual labels:  webrtc
Twilio Contact Center
A contact center built on Twilio, supporting voice calls, web chat, callback, Facebook Messenger and SMS chat
Stars: ✭ 176 (-92.61%)
Mutual labels:  webrtc
Twilio Video App Ios
A collaboration application built with the Twilio Video iOS SDK
Stars: ✭ 196 (-91.76%)
Mutual labels:  webrtc
Webrtc To Sip
Setup for a WEBRTC client and Kamailio server to call SIP clients
Stars: ✭ 173 (-92.73%)
Mutual labels:  webrtc
Opentok Ios Sdk Samples
Example applications that use the OpenTok iOS SDK
Stars: ✭ 186 (-92.18%)
Mutual labels:  webrtc
Peer To Peer Cue System
Cue system for simple two-way communication and visual signaling using a PeerJS peer-to-peer connection.
Stars: ✭ 190 (-92.02%)
Mutual labels:  webrtc

WebTTY

WebTTY allows you to share a terminal session from your machine using WebRTC. You can pair with a friend without setting up a proxy server, debug servers behind NATs, and more. WebTTY also works in-browser. You can connect to a WebTTY session from this static page: https://maxmcd.github.io/webtty/

Status

There are a handful of bugs to fix, but everything works pretty well at the moment. Please open an issue if you find a bug.

Installation

Download a binary from the releases page: https://github.com/maxmcd/webtty/releases

Or, install directly with Go. WebTTY requires go version 1.9 or higher.

go get -u github.com/maxmcd/webtty

There were recent breaking api changes in the pion/webrtc library. Make sure to run go get -u github.com/pion/webrtc if you're running into any installation errors.

Running

> webtty -h
Usage of webtty:
  -cmd
        The command to run. Default is "bash -l"
        Because this flag consumes the remainder of the command line,
        all other args (if present) must appear before this flag.
        eg: webtty -o -v -ni -cmd docker run -it --rm alpine:latest sh
  -ni
        Set host to non-interactive
  -non-interactive
        Set host to non-interactive
  -o    One-way connection with no response needed.
  -s string
        The stun server to use (default "stun:stun.l.google.com:19302")
  -v    Verbose logging

On the host computer

> webtty
Setting up a WebTTY connection.

Connection ready. Here is your connection data:

25FrtDEjh7yuGdWMk7R9PhzPmphst7FdsotL11iXa4r9xyTM4koAauQYivKViWYBskf8habEc5vHf3DZge5VivuAT79uSCvzc6aL2M11kcUn9rzb4DX4...

Paste it in the terminal after the webtty command
Or in a browser: https://maxmcd.github.io/webtty/

When you have the answer, paste it below and hit enter.

On the client computer

> webtty 25FrtDEjh7yuGdWMk7R9PhzPmphst7FdsotL11iXa4r9xyTM4koAauQYivKViWYBskf8habEc5vHf3DZge5VivuAT79uSCvzc6aL2M11kcUn9rzb4DX4...

Terminal Size

By default WebTTY forces the size of the client terminal. This means the host size can frequently render incorrectly. One way you can fix this is by using tmux:

tmux new-session -s shared
# in another terminal
webtty -ni -cmd tmux attach-session -t shared

Tmux will now resize the session to the smallest terminal viewport.

One-way Connections

One-way connections can be enabled with the -o flag. A typical webrtc connection requires an SDP exchange between both parties. By default, WebTTY will create an SDP offer and wait for you to enter the SDP answer. With the -o flag the initial offer is sent along with a public url that the receiver is expected to post their response to. This uses my service 10kb.site. The host then polls the url continually until it gets an answer.

I think this somewhat violates the spirit of this tool because it relies on a third party service. However, one-way connections allow you to do very cool things. Eg: I can have a build server output a WebTTY connection string on error and allow anyone to attach to the session.

SDP descriptions are encrypted when uploaded and encryption keys are shared with the connection data to decrypt. So presumably the service being compromised is not problematic.

Very open to any ideas on how to enable trusted one-way connections. Please open an issue or reach out if you have thoughts. For now, the -o flag will print a warning and link to this explanation.

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].