drift
v0.5.2 — single binary

Secure file transfer, zero friction

Self-contained utility for bidirectional file and directory transfers over WebSockets. End-to-end encrypted. No firewall rules. No STUN/TURN.

LOCAL
~/projects/
├── src/
├── data.json
└── ...
E2E ENCRYPTED
X25519 + ChaCha20-Poly1305
REMOTE
gpu-server:8000
├── models/
├── checkpoints/
└── ...
WebSocket transport|Binary frame protocol|Rust + React
CAPABILITIES

Precision engineering for file transfer

SECURITY

End-to-End Encryption

X25519 Diffie-Hellman key exchange with ChaCha20-Poly1305 authenticated encryption. Security baked into the protocol.

SIMPLICITY

Zero Configuration

Works through NATs and firewalls using only outbound HTTP/WebSocket. No STUN/TURN infrastructure required.

FLEXIBILITY

Dual Interface

Two-pane web UI for interactive transfers, plus headless CLI commands for automated pipelines and scripting.

COMPATIBILITY

Built for Restricted Environments

Optimized for cloud GPUs, Kubernetes, and Docker containers where only outbound traffic is permitted.

ARCHITECTURE

Single binary, complete solution

SYSTEM OVERVIEW
Server Layer
axum
tokio
Protocol Layer
WebSocket /ws
Binary Frames
Crypto Layer
X25519 Key Exchange
ChaCha20-Poly1305 AEAD
BINARY FRAME FORMAT
16B
UUID
8B
Offset
Variable
Chunk Data
1
Binary to deploy
0
External dependencies
SUPPORTED ENVIRONMENTS
LinuxmacOSWindowsDockerK8s
CLI REFERENCE

Headless operations for automation

terminal
# Start server with web UI
$ drift serve --port 8000
# Connect two machines with synchronized UI
$ drift serve --port 9000 --target 192.168.1.100:8000
send
drift send ./data remote:8000

Push files or directories to a remote server and exit.

pull
drift pull remote:8000:/models ./

Fetch files or directories from a remote server to local.

ls
drift ls remote:8000:/home

List remote directory contents for browsing and scripting.

Built with v0