DOCUMENTATION HUB

DropWire Docs

Everything you need to know about the DropWire CLI and TUI, all in one place.

Installation

Install the DropWire CLI on your machine to start sending and receiving files instantly from your terminal.

Windows

# Install via PowerShell
irm https://install.dropwire.dev/windows | iex

Uninstall (Windows)

irm https://install.dropwire.dev/windows-uninstall | iex

macOS / Linux

# Install via curl
curl -sSL https://install.dropwire.dev | sh

# Or with Cargo (build from source):
cargo install dropwire

Uninstall (macOS / Linux)

curl -sSL https://install.dropwire.dev/uninstall | sh

Quick Start

Sending a file is as simple as running one command. DropWire will automatically generate a memorable room code for the receiver.

Machine A (Sender)

dropwire send ./photo.jpg
# Output: Code: 7-guitar-revenge

Machine B (Receiver)

dropwire receive 7-guitar-revenge
# File saved to ~/Downloads/Dropwire/
Zero-Knowledge Encryption
All files are End-to-End Encrypted using ChaCha20Poly1305. The relay server (if used) routes encrypted frames but never sees your filenames or file content.

dropwire send

Sends a file or directory over an encrypted P2P channel. When sending a directory, DropWire automatically respects .gitignore and .ignore files to skip build artifacts.

dropwire send <FILE_OR_DIR> [OPTIONS]

Flags

FlagTypeDescription
--codeStringCustom room code phrase (e.g. secret-code-123)
--streamsNumberNumber of parallel TCP streams to multiplex
--relayURLOverride the signaling relay server URL
--no-lanBooleanSkip local UDP peer discovery and force WAN routing via relay

Examples

# Send a folder using 8 parallel streams
dropwire send ./project/ --streams 8

# Send with a custom code
dropwire send report.pdf --code top-secret

# Force relay (no LAN attempt)
dropwire send video.mp4 --no-lan

dropwire receive

Connects to a sender using a room code phrase and downloads the payload.

dropwire receive <CODE> [OPTIONS]

Flags

FlagTypeDescription
--outPathOutput directory destination
--relayURLOverride the signaling relay server URL
--no-lanBooleanSkip local UDP peer discovery

dropwire relay

Runs a self-hosted zero-knowledge signaling and TCP stream relay server for when LAN discovery isn't possible.

dropwire relay [OPTIONS]

Flags

FlagTypeDescription
--bindIP:PORTTCP stream server bind address
--ws-bindIP:PORTWebSocket signaling server address

dropwire config

Manages persistent CLI configuration stored in your OS config directory.

dropwire config show
dropwire config set <KEY> <VALUE>

Keys

FlagTypeDescription
relayURLDefault relay server
no_lanBooleanAlways skip LAN discovery
download_dirPathDefault download folder
parallel_streamsNumberDefault stream count
chunk_size_kbNumberChunk size in KB

LAN Discovery

DropWire always attempts to find peers locally before using the relay server to guarantee maximum possible speed.

Machine A (Sender)                 Machine B (Receiver)
      │                                    │
      ├──── UDP Multicast Announce ────────►│
      │                                    │
      │◄─── TCP Direct Connection ─────────┤
      │                                    │
      └══════ Direct P2P (No Relay) ═══════┘

Relay Fallback

If LAN discovery times out after 15 seconds (or fails due to a firewall), DropWire automatically cascades to the Relay server via TCP. You can force the relay immediately by passing --no-lan.

Resumable Transfers

When receiving, DropWire saves a .dwstate file tracking every received chunk with a BLAKE3 hash.

Zero-Config Resume
If a transfer is interrupted, simply run the exact same receive command in the same directory. DropWire will auto-detect the .dwstate file and resume downloading only the missing chunks!