ZeroDrop
Privacy / Terminal App
About
ZeroDrop (formerly GhostWire) is an end-to-end encrypted, terminal-based chat application built in Rust. Its guiding principle is simple: the server knows nothing, the terminal is everything. Every message is encrypted on the client using an X25519 key exchange and ChaCha20-Poly1305 authenticated encryption, then handed to a relay server that does nothing but broadcast opaque ciphertext — it never sees plaintext, keys, or metadata. The client UI is built with Ratatui on top of a Tokio async runtime, with WebSocket transport via Tungstenite and an Axum-based relay. Users can exchange direct messages or join group channels, verify peer identity with safety numbers, and send self-destructing messages that expire after a configurable TTL. A live telemetry panel surfaces network activity directly in the terminal.
Technologies Used
Key Features
- End-to-end encryption with X25519 key exchange and ChaCha20-Poly1305
- Zero-knowledge 'dumb broadcast' relay — no plaintext or metadata stored
- Safety-number verification to confirm you're talking to the right peer
- Self-destructing messages with configurable TTL
- Direct messages and group channels
- Message replay protection and key rotation
- Real-time telemetry and network-activity display in the TUI
- Relay deployable on Shuttle.rs or run locally
Challenges & Solutions
The hard part of a zero-knowledge messenger is doing real cryptography while the server is deliberately ignorant. ZeroDrop implements the full handshake, key rotation, and replay protection on the client so the relay can stay a dumb broadcast — which means correctness and forward secrecy can't lean on any server-side state. Building a responsive, real-time TUI on async Rust required careful coordination between the Tokio event loop, WebSocket streams, and Ratatui rendering so the interface stays fluid while encrypting, decrypting, and verifying messages in the background.
Outcomes & Impact
ZeroDrop is actively developed and open source under the MIT license, at v0.7.1 across 13 releases. The relay holds no recoverable plaintext or metadata, delivering on the zero-knowledge design goal, and the project serves as a working reference for applied cryptography and real-time systems programming in Rust.
Interested in this project or want to collaborate?
