streamdrop-cli
v1.0.21
Published
Securely send and receive files directly from your terminal using StreamDrop.
Downloads
1,094
Maintainers
Readme
StreamDrop CLI
The StreamDrop CLI allows you to securely send and receive files (and entire folders) directly from your terminal. It uses the exact same end-to-end encryption (AES-GCM) and HTTP streaming backend as the web app, but optimized for the command line.
Features
- End-to-End Encrypted: Files are encrypted and decrypted locally; the server never sees your data.
- Streaming: Handles massive files without using extra RAM.
- Folder Support: Send an entire directory and it will be archived (
tar) on the fly. The receiver automatically extracts it on the fly. - Live Progress: Real-time progress bars with speed (MB/s) and ETA.
- Terminal QR Codes: Easily share the receive link to a mobile device.
Installation
macOS / Linux (Homebrew)
brew tap AntonyLeons/tap
brew install streamdrop-cliWindows (Scoop & Chocolatey)
# Scoop
scoop bucket add antonyleons https://github.com/AntonyLeons/homebrew-tap.git
scoop install streamdrop-cli
### From Source
Ensure you have [Bun](https://bun.sh/) installed, then build the binary:
```bash
git clone https://github.com/AntonyLeons/streamdrop.git
cd streamdrop
bun run cli:buildYou can then link it or move it to your PATH:
# Example: symlink to your local bin
ln -s $(pwd)/dist/streamdrop-cli /usr/local/bin/streamdropUsage
Sending a File
streamdrop send my-video.mp4Output: Generates a secure share link. It will wait until a receiver connects before starting the encrypted stream.
Tip: Add the --qr flag if you want to generate a terminal QR code of the share link.
Receiving a File
streamdrop receive "https://streamdrop.app/xyz123#key..."Output: Connects to the sender, downloads, decrypts, and saves the file to your current directory.
Sending a Folder
You can pass a directory directly to send:
streamdrop send ./my-projectThe CLI will automatically use tar to archive the folder on the fly. On the receiving end, the StreamDrop CLI will detect the archive and automatically extract it back into a folder without saving the raw .tar file to disk.
If the receiver wants to just save the .tar file without extracting it, they can use the --no-extract flag:
streamdrop receive "https://streamdrop.app/xyz123#key..." --no-extractCustom Save Path
To save a received file under a different name or location:
streamdrop receive "https://streamdrop.app/xyz123#key..." --out ~/Downloads/custom-name.mp4(Note: If a file already exists and you don't provide --out, StreamDrop will automatically append a counter like file (1).mp4 to prevent overwriting.)
Configuration (Custom Server)
By default, the CLI uses https://streamdrop.app. If you are self-hosting StreamDrop, you can point the CLI to your own server in three ways:
1. Command Line Flag (Per Run)
streamdrop send my-file.txt --server http://192.168.1.10:30002. Environment Variable
export STREAMDROP_SERVER="http://192.168.1.10:3000"
streamdrop send my-file.txt3. Global Config File (Recommended)
Create a .streamdroprc file in your home directory (~/.streamdroprc) and add your server URL:
SERVER=http://192.168.1.10:3000The CLI will automatically read this file every time it runs.
