Zero-Trust, VPN-free remote access

Inbound P2P Terminal
Without a VPN

Access any servers, IoT devices, embedded systems, or workstations from anywhere using WebRTC peer-to-peer data channels with WebSocket signaling and end-to-end encryption. No VPN, no port forwarding, no exposed services — just a secure, direct connection.

Works behind NATNo firewall changes requiredNo static IP needed

How It Works

XShell is a three-component system: a Host that spawns PTY sessions, a Signaling Server for connection brokering, and Clients that connect securely — via CLI or web browser.

Host

Runs on the target machine. Spawns an interactive PTY shell, handles SRP authentication, and bridges encrypted I/O to the network.

Server

Lightweight signaling relay. Pairs hosts and clients by ID, forwards encrypted traffic when P2P is unavailable, and relays WebRTC signaling.

Client

CLI or web-based terminal. Connects via WSS, authenticates with SRP-6a, and establishes a direct WebRTC P2P channel for zero-relay device access.

Features

Built from the ground up for security, performance, and simplicity.

End-to-End Encryption

AES-256-SIV encryption between host and client with keys derived via HKDF-SHA256. The relay server is cryptographically excluded — your terminal data stays private whether routed via P2P or relay fallback.

WebRTC Peer-to-Peer

After authentication, a direct P2P data channel is established via WebRTC data channels. Terminal data bypasses the relay server entirely for minimal latency.

SRP-6a Authentication

Secure Remote Password protocol ensures no password is ever transmitted. Mutual proof exchange verifies both sides without exposing credentials.

Lightweight & Fast

Written in C with minimal dependencies. Low memory footprint, instant startup, and efficient binary protocol with sub-millisecond overhead.

Multiplexed Sessions

Multiple concurrent PTY sessions over a single connection. Efficient resource usage with unique session routing and zero extra transport overhead.

Secure File Transfer

Bidirectional chunked file transfer over P2P or relay. SHA-256 integrity verification, and full E2E encryption on every byte. A complete file manager API with a web client.

Architecture

After SRP-6a authentication, the client initiates a WebRTC peer-to-peer data channel. Once established, the relay server is completely removed from the data path.

Host(PTY)Server(Signaling)Client(CLI / Web)WSS/TLSWSS/TLSWebRTC Data Channel (P2P)AES-256-SIV End-to-End EncryptionDTLS + HKDF-SHA256 key derivation — Zero Knowledge Relay

P2P Mode (Preferred)

All terminal I/O and file transfers flow directly between host and client via DTLS-secured WebRTC data channels. The relay server handles only initial signaling. E2E encryption remains active at the application layer.

Relay Fallback

If P2P negotiation fails (symmetric NAT, firewall) and the TURN is not configured, the system transparently falls back to the WSS relay path. E2E encryption is maintained regardless. No security downgrade, no key renegotiation exposure.

Encrypted Signaling

WebRTC signaling (SDP offers, answers, ICE candidates) is exchanged inside the E2E encrypted channel after authentication. The relay server cannot read or tamper with DTLS fingerprints or session descriptions.

Layered Security

XShell does not rely on any single layer for protection. Transport, channel, application, and authentication each operate independently — compromising one does not weaken the others. Defense in depth by design.

1
Transport
TLS/SSL

All WebSocket connections secured with WSS. Server certificate verification and MITM protection.

2
P2P Channel
DTLS

WebRTC data channels secured with Datagram TLS. Signaling integrity protected by authenticated E2E channel.

3
Application
AES-256-SIV

Terminal data encrypted end-to-end using AES-256-SIV. Encryption keys are derived via HKDF-SHA256 from the SRP session key, combined with dual nonces (host + client) and host ID context, ensuring mutual freshness and preventing key prediction or replay.

4
Authentication
SRP-6a

Zero-knowledge password proof. Mutual verification without transmitting credentials in any form. No stored plaintext secrets. Resistant to passive and active interception.

Zero-Knowledge Relay: The relay server is cryptographically incapable of decrypting session data. Every encrypted packet includes a monotonic continuity counter for replay protection and authenticated message framing for tamper detection.

How XShell Compares

XShell is not a VPN, not an access proxy, and not a tunnel service. It is a purpose-built P2P terminal and file access solution with a fundamentally different security model.

FeatureXShellTailscaleTeleportCF TunnelWireGuard
Primary ModelDirect P2P terminalMesh VPNAccess proxyReverse tunnelLayer-3 VPN
Requires VPNNoYesNoNoYes
Port ForwardingNot neededNoNoNoDepends
Direct P2PYes (preferred)YesNoNoYes
Relay FallbackE2E preservedDERP relayN/AAlways proxiedNo
Post-Transport E2EAES-256-SIVTransport onlyTransport onlyTransport onlyTransport only
Zero-Knowledge RelayYesYes (DERP cannot decrypt)No (proxy terminates TLS)No (terminates at edge)N/A
Zero-Knowledge AuthSRP-6aNo (OIDC)No (IdP/cert)NoNo
Attack Exposure ModelSingle controlled execution channel (PTY)Network-level access (subnet routing)Proxy-mediated access controlEdge-proxied service exposureNetwork-level access
ScopeTerminal / FileFull networkInfra platformHTTP servicesFull network

Installation

Install XShell in seconds using your system package manager. Add the repository and install with a single command.

XShell is currently in active development. Stable repositories will be published with the first production release.

Debian / Ubuntu (apt)

# Add the XShell repository

echo "deb https://pkg.xshell.online/apt stable main" | sudo tee /etc/apt/sources.list.d/xshell.list

curl -fsSL https://pkg.xshell.online/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/xshell.gpg

# Install

sudo apt update && sudo apt install xshell

Fedora / RHEL 8+ (dnf)

# Add the XShell repository

sudo dnf config-manager --add-repo https://pkg.xshell.online/rpm/xshell.repo

# Install

sudo dnf install xshell

CentOS / RHEL 7 (yum)

# Add the XShell repository

sudo yum-config-manager --add-repo https://pkg.xshell.online/rpm/xshell.repo

# Install

sudo yum install xshell

macOS (Homebrew)

# Add the XShell tap

brew tap xshell-online/xshell https://pkg.xshell.online/homebrew

# Install

brew install xshell

Quick Start

# Generate host configuration interactively

sudo xshell -i

# Start the host service

sudo systemctl restart xshell

# Connect from another machine via CLI

xshcli -d <device_id>

# Or log in to use the web client and workspaces

xshell.online/login

Ready to Get Started?

Sign in to access the web terminal, manage your devices, and start secure remote sessions.

Log In to XShell