P2P secure file transfer tool using WebRTC. Transfer files directly between machines behind NAT without a server.
From Source (recommended for testing):
# Clone and build
git clone https://github.com/abrekhov/hypertunnel
cd hypertunnel
go build -o ht
# Sender (machine with the file)
./ht -f myfile.txt
# Receiver (other machine)
./htExample: Transfer between macOS and cloud VM:
# On your Mac (sender):
./ht -f important-data.tar.gz
# Copy the printed base64 signal
# On the cloud VM (receiver):
./ht
# Paste the Mac's signal, press Enter twice
# Copy the VM's signal back to Mac
# On Mac: paste VM's signal, press Enter twice
# Transfer starts automaticallyTips:
- Both machines need internet access
- Press Enter twice after pasting a signal
- Use
--auto-acceptto skip confirmation prompts - Use
-vfor verbose debug output
curl -fsSL https://abrekhov.github.io/hypertunnel/install.sh | shThis downloads the latest release binary and installs ht to /usr/local/bin (or ~/.local/bin if sudo is not available).
Download the latest .deb package from the releases page:
# Download the latest .deb package
wget https://github.com/abrekhov/hypertunnel/releases/latest/download/hypertunnel_linux_amd64.deb
# Install with apt
sudo apt install ./hypertunnel_linux_amd64.deb
# Or use dpkg directly
sudo dpkg -i hypertunnel_linux_amd64.deb# Download the latest .rpm package
wget https://github.com/abrekhov/hypertunnel/releases/latest/download/hypertunnel_linux_amd64.rpm
# Install with dnf/yum
sudo dnf install ./hypertunnel_linux_amd64.rpm
# or
sudo yum install ./hypertunnel_linux_amd64.rpm# Download the latest .apk package
wget https://github.com/abrekhov/hypertunnel/releases/latest/download/hypertunnel_linux_amd64.apk
# Install with apk
sudo apk add --allow-untrusted ./hypertunnel_linux_amd64.apk# Download and extract the archive for your platform
wget https://github.com/abrekhov/hypertunnel/releases/latest/download/hypertunnel_linux_amd64.tar.gz
tar -xzf hypertunnel_linux_amd64.tar.gz
sudo mv ht /usr/local/bin/brew tap abrekhov/hypertunnel
brew install hypertunnelDownload the .zip archive from the releases page and extract ht.exe to your desired location. Add it to your PATH for easy access.
# Clone the repository
git clone https://github.com/abrekhov/hypertunnel
cd hypertunnel
go build -o htOr using go install (GOBIN must be set):
export GOPATH=$HOME/go
export GOBIN="${GOPATH}/bin"
export PATH="$PATH:${GOPATH}/bin:${GOROOT}/bin"
go install github.com/abrekhov/hypertunnel@latestThe installer script is hosted on GitHub Pages at:
https://abrekhov.github.io/hypertunnel/install.sh
Both computers must have access to the Internet!
# First machine (sender)
./ht -f <file>
# Second machine (receiver)
./ht
# Cross insert signals (copy-paste the encoded signal from each side)# First machine (sender)
./ht -f <directory>
# Second machine (receiver)
./ht
# Cross insert signals (copy-paste the encoded signal from each side)
# The directory will be automatically archived, transferred, and extracted# Auto-accept incoming files/directories (skip confirmation prompts)
./ht --auto-accept
# Enable verbose logging
./ht -v -f <file-or-directory>
# Encrypt a file before transfer
./ht encrypt -k "your-passphrase" <file>
# Decrypt a received encrypted file
./ht decrypt -k "your-passphrase" <file.enc>- ✅ File Transfer: Secure P2P file transfer between machines behind NAT
- ✅ Directory Transfer: Recursive directory transfer with automatic archiving (tar.gz)
- ✅ Encryption/Decryption: AES-256-CTR file encryption with keyphrase
- ✅ Progress Tracking: Real-time progress monitoring with checksums
- ✅ NAT Traversal: WebRTC-based connection through STUN/TURN/ICE
- ✅ Auto-accept Mode: Skip confirmation prompts for automation
- ✅ File Integrity: SHA-256 checksum verification
- ✅ Cross-platform: Linux, macOS, Windows support
Completed:
- Encrypt/decrypt file with key as stream (AES-256-CTR)
- WebRTC P2P connection through STUN/TURN/ICE
- ORTC connection behind NAT
- Single file transfer between peers
- Directory transfer with automatic archiving (tar.gz)
- Progress tracking and SHA-256 checksums
- Auto-accept mode (
--auto-accept) - File overwrite protection with prompts
- Tests infrastructure (unit + integration)
- Multi-platform packaging (DEB/RPM/APK)
- Basic TUI framework (Bubble Tea)
In Progress:
- Start candidates in any order (symmetric connection)
- Terminal UI polish (keep signals copyable!)
Planned:
- Resumable transfers
- SSH tunnel mode
- Benchmarks
- Homebrew/Scoop packaging