🚀 WARP
WARP is a peer-to-peer (P2P) file and messaging tool aimed at secure, simple sharing across networks.
🔍 Project Overview
WARP provides direct P2P messaging and file transfers between machines. It focuses on:
- Low-latency text messaging
- Resumable file transfers
- Optional end-to-end encryption
- Fallback relay server for NAT traversal and when peers are not on the same LAN
🎯 Goals
- Make a receiver run until the user explicitly stops it (Ctrl+C).
- Provide a small, composable CLI with modes for
--receive,--text,--file, and--clipboard. - Encrypt data in transit so only intended recipients can read files/messages.
- Add an optional relay server so peers can connect even when direct P2P is not possible.
🛠️ CLI (planned)
Example usage (CLI flags are proposed):
bash
# start receiver, listen for incoming transfers until Ctrl+C
warp --receive --port 9000
# send a short text message to a peer
warp --text --addr 1.2.3.4:9000 "hello!"
# send a file to a peer
warp --file --addr 1.2.3.4:9000 /path/to/file.zip
# send clipboard contents
warp --clipboard --addr 1.2.3.4:9000Notes:
--receivewill start a long-running receiver that writes incoming files/messages to a configurable output folder and runs until terminated with Ctrl+C.--addrcan accept a direct IP:PORT, or a relay server token/identifier when using the relay.
🔐 Security
WARP will support end-to-end encryption. Possible approaches:
- Use ephemeral Curve25519 keypairs for session keys and encrypt payloads with AEAD (e.g., ChaCha20-Poly1305).
- Optionally support pre-shared public keys or QR-code-based key exchange for bootstrapping.
🌐 Relay Server
When NAT traversal fails, peers should be able to connect via an optional relay server. The relay will:
- Authenticate peers (lightweight tokens)
- Forward encrypted payloads without decrypting them
- Provide connection metadata and optionally act as a rendezvous server
✅ TODO (developer)
- [ ] make the receiver run until Ctrl+C
- [ ] design and implement CLI flags:
--receive,--text,--file,--clipboard - [ ] encrypt traffic end-to-end so intermediaries cannot read content
- [ ] build a simple relay server for non-LAN operation
- [ ] add simple integration tests for file transfer and reconnect/resume