https://github.com/ekzhang/sshx Skip to content Toggle navigation Sign up * Product + Actions Automate any workflow + Packages Host and manage packages + Security Find and fix vulnerabilities + Codespaces Instant dev environments + Copilot Write better code with AI + Code review Manage code changes + Issues Plan and track work + Discussions Collaborate outside of code Explore + All features + Documentation + GitHub Skills + Blog * Solutions For + Enterprise + Teams + Startups + Education By Solution + CI/CD & Automation + DevOps + DevSecOps Resources + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} ekzhang / sshx Public * Notifications * Fork 2 * Star 181 Fast, collaborative live terminal sharing over the web sshx.io License MIT license 181 stars 2 forks Activity Star Notifications * Code * Issues 3 * Pull requests 0 * Actions * Security * Insights More * Code * Issues * Pull requests * Actions * Security * Insights ekzhang/sshx This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository. main Switch branches/tags [ ] Branches Tags Could not load branches Nothing to show {{ refName }} default View all branches Could not load tags Nothing to show {{ refName }} default View all tags Name already in use A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch? Cancel Create 1 branch 0 tags Code * Local * Codespaces * Clone HTTPS GitHub CLI [https://github.com/e] Use Git or checkout with SVN using the web URL. [gh repo clone ekzhan] Work fast with our official CLI. Learn more about the CLI. * Open with GitHub Desktop * Download ZIP Sign In Required Please sign in to use Codespaces. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching GitHub Desktop If nothing happens, download GitHub Desktop and try again. Launching Xcode If nothing happens, download Xcode and try again. Launching Visual Studio Code Your codespace will open once ready. There was a problem preparing your codespace, please try again. Latest commit @ekzhang ekzhang Add teaser image ... 91c82d4 Nov 4, 2023 Add teaser image 91c82d4 Git stats * 266 commits Files Permalink Failed to load latest commit information. Type Name Latest commit message Commit time .github/workflows Update CI action for fly deploy July 23, 2023 22:51 crates Bump version to 0.2.0 November 4, 2023 18:21 scripts Add gzip compression to binaries September 10, 2023 00:57 src Remove public TODO text November 4, 2023 18:05 static Make install script work in minimal containers September 10, 2023 01:16 .dockerignore Implement deployment with Fly.io and Docker March 11, 2022 13:06 .editorconfig Initial commit, with minimal gRPC server February 13, 2022 16:03 .eslintrc.cjs Disable false positive no-undef eslint rule September 16, 2023 23:06 .gitignore Fix issues with rev-parse HEAD breaking in Docker September 16, 2023 23:00 .prettierrc Initialize frontend SvelteKit app with Tailwind March 10, 2022 23:30 Cargo.lock Bump version to 0.2.0 November 4, 2023 18:21 Cargo.toml Bump version to 0.2.0 November 4, 2023 18:21 Dockerfile Speed up Rust builds a lot with Docker cache October 29, 2023 17:27 LICENSE Bump version to 0.2.0 November 4, 2023 18:21 README.md Add teaser image November 4, 2023 19:04 compose.yaml Implement server recovery and peer routing (#15) October 29, 2023 12:37 fly.toml Implement server recovery and peer routing (#15) October 29, 2023 12:37 mprocs.yaml Implement server recovery and peer routing (#15) October 29, 2023 12:37 package-lock.json Add a dialog for users to choose their name October 7, 2023 18:32 package.json Add a dialog for users to choose their name October 7, 2023 18:32 postcss.config.cjs Initialize frontend SvelteKit app with Tailwind March 10, 2022 23:30 rustfmt.toml Initial commit, with minimal gRPC server February 13, 2022 16:03 svelte.config.js Update SvelteKit and Vite 3.0 July 20, 2022 23:39 tailwind.config.cjs Chore: Update JS dependencies June 30, 2023 22:18 tsconfig.json Add strict typechecking March 13, 2022 23:36 vite.config.ts Bump version to 0.2.0 November 4, 2023 18:21 View code sshx Installation CI/CD Development Building from source Workflow Deployment README.md sshx A secure web-based, collaborative terminal. [6874747073] 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 (a 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 First, start service containers for development. docker compose up -d 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 About Fast, collaborative live terminal sharing over the web sshx.io Topics rust ssh share terminal web tty collaborative Resources Readme License MIT license Activity Stars 181 stars Watchers 4 watching Forks 2 forks Report repository Releases No releases published Languages * Rust 45.1% * TypeScript 29.5% * Svelte 22.4% * Shell 1.1% * JavaScript 0.9% * HTML 0.4% * Other 0.6% Footer (c) 2023 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact GitHub * Pricing * API * Training * Blog * About You can't perform that action at this time.