Skip to content

🚀 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:9000

Notes:

  • --receive will start a long-running receiver that writes incoming files/messages to a configurable output folder and runs until terminated with Ctrl+C.
  • --addr can 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

Back to Projects