Pair programming, remote troubleshooting, and technical mentoring often require multiple engineers to collaborate inside a command-line environment simultaneously. While traditional tools like tmux or screen paired with SSH allow multi-user shell sharing, they require complex firewall port forwarding, SSH key distribution, and identical terminal window geometries. If a collaborator is behind a strict corporate NAT or using a mobile device, connecting via raw SSH is often impossible.
sshx is a modern, lightweight, open-source terminal sharing tool written in Rust that enables instant collaborative shell sessions over the web. With a single command, sshx creates an end-to-end encrypted link that collaborators can open in any modern web browser—complete with multiplayer cursor presence, real-time shared typing, an infinite canvas, and zero port-forwarding requirements.
Key Architectural Advantages of sshx
- Zero Configuration: No public IP address, dynamic DNS, or router port-forwarding needed; connections route automatically through secure WebSocket relays.
- Multiplayer Cursors: View real-time coloured cursor positions, selections, and typing activity of all connected participants.
- Infinite Workspace Canvas: Open multiple distinct terminal panes inside an expansive, zoomable web canvas rather than being confined to a single fixed window.
- End-to-End Cryptography: All terminal traffic is encrypted client-side using modern TLS/AES primitives, ensuring intermediate relays cannot read commands or keystrokes.
- Cross-Platform Browser Access: Teammates do not need Linux or
sshxinstalled to assist you; they simply open the generated URL in Chrome, Safari, Edge, or Firefox.
Installing sshx on Linux
Method 1: Direct Installation Script (Quickest)
The developers maintain a standalone installer script that automatically detects your architecture (AMD64 or ARM64) and installs the binary:
curl -sSf https://sshx.io/get | sh
The script installs the compiled binary into ~/.local/bin/sshx or /usr/local/bin/sshx depending on user permissions.
Method 2: Using the Cargo Toolchain
If you have the Rust development environment configured, install directly via Cargo:
cargo install sshx
Method 3: Downloading Pre-Built Binaries
Download pre-compiled binaries directly from GitHub releases for automated server deployments:
# Download latest release
wget https://github.com/ekzhang/sshx/releases/latest/download/sshx-x86_64-unknown-linux-musl.tar.gz
# Extract binary
tar -xzf sshx-x86_64-unknown-linux-musl.tar.gz
# Move to system path
sudo mv sshx /usr/local/bin/
# Verify version
sshx --version
Starting and Sharing a Collaborative Session
1. Launching an Instant Session
To begin sharing your current terminal, simply run:
sshx
sshx connects to the encrypted relay network and prints a unique URL in your console:
$ sshx
➜ Link: https://sshx.io/s/AbC123XyZ#secret_key
➜ Shell: /bin/bash
Copy the generated URL and send it to your trusted collaborator. When they open the link in any web browser, they are instantly connected to your active terminal session.
2. Interacting inside the Web Canvas
The web interface provides an expansive collaborative workspace:
- Typing & Execution: Both you and your collaborators can type commands simultaneously. Each user’s cursor is assigned a distinct colour and name tag.
- Multiple Panes: Click the New Terminal button in the browser to spawn additional shell windows running on your Linux host.
- Chat & Notes: Use the built-in sidebar to send quick text notes and code snippets without cluttering the active shell command line.
3. Ending the Session
To terminate the session and immediately revoke all web access, press Ctrl + D or type exit in the initiating terminal window. Alternatively, press Ctrl + C in the console running sshx.
Feature Comparison: sshx vs Traditional Remote Tools
| Feature | sshx | tmux over SSH | tmate |
|---|---|---|---|
| Client Requirement | Web Browser only | SSH Client + Key | SSH Client or Web |
| Port Forwarding | None required | Mandatory (Port 22) | None required |
| Multiplayer Cursors | Yes (Coloured real-time cursors) | No | No |
| Multi-Window Canvas | Infinite 2D spatial canvas | Fixed grid splits only | Fixed grid splits only |
| Self-Hostable Relay | Yes (via sshx-server) |
Native | Yes |
Self-Hosting an Internal sshx Server
For enterprise environments with strict data sovereignty policies where traffic cannot transit public relays, you can self-host the lightweight sshx-server container internally:
# Run self-hosted relay on internal Docker infrastructure
docker run -d -p 8080:8080 ekzhang/sshx-server:latest
To connect clients to your private internal server, use the --server flag:
sshx --server https://sshx.internal.yourdomain.com
By simplifying remote pairing into a secure, zero-friction web experience, sshx revolutionises command-line collaboration and technical incident response on Linux systems.