Skip to content
/ sshx Public

Fast, collaborative live terminal sharing over the web

License

Notifications You must be signed in to change notification settings

ekzhang/sshx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

23188b4 · Sep 17, 2023
Jul 24, 2023
Sep 10, 2023
Sep 10, 2023
Sep 17, 2023
Sep 10, 2023
Mar 11, 2022
Feb 13, 2022
Sep 1, 2023
Sep 17, 2023
Mar 11, 2022
Sep 10, 2023
Sep 10, 2023
Sep 17, 2023
Sep 10, 2023
May 25, 2023
Sep 9, 2023
Sep 12, 2023
Sep 12, 2023
Mar 11, 2022
Feb 13, 2022
Jul 21, 2022
Jul 1, 2023
Mar 14, 2022
Sep 17, 2023

Repository files navigation

sshx

A secure web-based, collaborative terminal.

Features:

  • Run a single command to share your terminal with anyone.
  • Resize, move windows, and freely zoom and pan on an infinite canvas.
  • See other people's cursors moving in real time.
  • Connect to the nearest server in a globally distributed mesh.
  • End-to-end encryption with Argon2 and AES.
  • Automatic reconnection and real-time latency estimates.
  • Predictive echo for faster local editing (à la Mosh).

Visit sshx.io to learn more.

Installation

Just run this command to get the sshx binary for your platform.

curl -sSf https://sshx.io/get | sh

Supports Linux and MacOS, on both x86_64 and arm64 architectures. The precompiled Linux binaries are statically linked.

CI/CD

You can also use sshx in continuous integration workflows to help debug tricky issues, like in GitHub Actions.

name: CI
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      # ... other steps ...

      - run: curl -sSf https://sshx.io/get | sh && sshx
      #      ^
      #      └ This will open a remote terminal session and print the URL. It
      #        should take under a second.

We don't have a prepackaged action because it's just a single command. It works anywhere: GitLab CI, CircleCI, CI on your Raspberry Pi, etc.

Development

Here's how to work on the project, if you want to contribute.

Building from source

To build the latest version of the client from source, clone this repository and run, with Rust installed:

cargo install --path crates/sshx

This will compile the sshx binary and place it in your ~/.cargo/bin folder.

Workflow

Install Rust 1.70+, Node v18, NPM v9, and mprocs. Then, run

$ npm install
$ mprocs

This will compile and start the server, an instance of the client, and the web frontend in parallel on your machine.

Deployment

The application servers are deployed on Fly.io.

fly deploy