Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

61 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ZeroDrop Logo

Status

The server knows nothing. The terminal is everything.

[View Demo (Coming Soon)] | [Report Bug (Coming Soon)] | [Request Feature (Coming Soon)]


πŸ“‘ Transmission Incoming

Note on the Rename: ZeroDrop is now ZeroDrop. This change ensures absolute identity clarity and avoids naming collisions with parallel communication tech, keeping this standalone TUI chat fully distinct.

ZeroDrop is a secure, ephemeral TUI chat client for those who prefer keyboards over mouse clicks. Built with Rust and Ratatui, it combines the aesthetic of a cyberpunk system monitor with the privacy of a dead-drop.

πŸ“Έ Visual Recon

ZeroDrop Screenshot


⚑ Core Systems

Feature Description
πŸ‘» Ephemeral Relay The relay server is a "dumb broadcast." It routes traffic without storing or processing it.
πŸ›‘οΈ End-to-End Encryption Direct messages are encrypted automatically with X25519 + ChaCha20-Poly1305 and per-message ratchets.
πŸ” Verification & Ephemera Safety-number verification, self-destructing messages, replay protection, and key rotation are implemented.
πŸ–₯️ High-Fidelity TUI Built on Ratatui. Supports mouse capture, resizing, and custom themes.
πŸš€ Blazing Fast Written in Async Rust (Tokio). Minimal footprint, maximum throughput.
🎨 Cyberpunk Aesthetics Detailed telemetry, network activity charts, and real-time statistics.

πŸ’Ύ Initialize Uplink (Installation)

macOS

🍺 Homebrew (Recommended)

brew tap jcyrus/tap
brew install zerodrop

⚑️ Quick Install Script

curl -sL https://zerodrop.jcyrus.com/install | bash

Windows

πŸ“¦ Scoop (Recommended)

scoop bucket add jcyrus https://github.com/jcyrus/scoop-bucket
scoop install zerodrop

⚑️ Quick Install Script

irm https://zerodrop.jcyrus.com/install.ps1 | iex

Note: After installation, you may need to restart your terminal for the PATH changes to take effect. If zerodrop is not recognized, run:

$env:Path = [System.Environment]::GetEnvironmentVariable('Path','User')

Linux

⚑️ Quick Install Script

curl -sL https://zerodrop.jcyrus.com/install | bash

πŸ“¦ Manual Installation

Prerequisites

  • Rust Toolchain: 1.70+ (2021 Edition)
  • Terminal: Support for TrueColor (NerdFonts recommended for icons)

Compile from Source

Clone the repository and build the binary:

git clone https://github.com/jcyrus/zerodrop.git
cd zerodrop

# Build the client only (The part you use)
cargo build --release -p zerodrop

πŸ”„ Updating ZeroDrop

Method Update Command
Homebrew (macOS) brew upgrade zerodrop
Scoop (Windows) scoop update zerodrop
Quick Install Script Re-run the installation command
Manual (from source) git pull && cargo build --release -p zerodrop

Check your current version:

zerodrop --version

πŸš€ Usage

After installation, connect to the public relay:

# Connect with your username (connects to wss://zerodrop.jcyrus.com/ws by default)
zerodrop your_username

# Or connect to a custom server
zerodrop your_username wss://your-server.com/ws

# For local development (requires local server running)
zerodrop your_username ws://localhost:8080/ws

Controls

Message Mode:

  • i or Enter: Enter message mode
  • Esc: Exit message mode
  • Enter: Send message

Security Commands:

  • /verify <username>: Show a peer's safety number for out-of-band comparison
  • /confirm <username>: Mark a peer as trusted after verifying the safety number
  • /expire <seconds> <message>: Send a self-destructing message with TTL
  • /groupkey <group> <user1,user2,...>: Manually distribute a sender key for a group channel

Navigation:

  • Esc or q: Quit (in normal mode)
  • h/l or ←/β†’: Navigate channels
  • Tab: Activate selected channel
  • #: Jump to global channel
  • d: Create DM with selected user
  • J/K: Select user (for DM creation)

Scrolling:

  • j/k or ↓/↑: Scroll down/up (one line)
  • PageDown/PageUp: Scroll down/up (page)
  • G: Jump to bottom (latest messages)
  • g: Jump to top (oldest messages)

☁️ Deployment (Host Your Own Relay)

Want to create a private network for your friends? Spin up the "Dumb Relay" in seconds.

Option A: The "One-Click" (Shuttle.rs)

No config required. Perfect for free tier hosting.

cd server
cargo shuttle deploy
# Copy the URL provided (e.g., wss://zerodrop.shuttleapp.rs)

Option B: Local / VPS

# For local development
cd server
cargo run --bin zerodrop-local
# Listens on 0.0.0.0:8080 by default

πŸ“‚ Documentation

For developer documentation, see the docs/dev/ directory:

πŸ”Ž Click to expand Technical Internals

The Stack

  • Client: Ratatui (UI), Tokio (Async), Tungstenite (WebSockets)
  • Server: Axum (Http), Shuttle (Infra)

The Threading Model (Critical)

To ensure the UI never freezes at 60fps, we use a strict Actor-model separation:

  1. Main Thread: Synchronous. Handles drawing the UI and capturing keystrokes.
  2. Network Task: Asynchronous. Runs on Tokio. Handles the WebSocket stream.
  3. Bridge: mpsc::unbounded_channel passes messages between the two worlds.

The Protocol (JSON)

{
  "type": "MSG",
  "payload": "EncryptedBase64String...",
  "channel": "dm:alice:bob",
  "meta": {
    "sender": "User_Hash_ID",
    "timestamp": 171542100
  },
  "recipient": "bob",
  "ttl": 60
}

🀝 Contributing (Join the Network)

We welcome all hackers, cypherpunks, and Rustaceans.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/MatrixRain)
  3. Commit your Changes (git commit -m 'Add Matrix rain effect')
  4. Push to the Branch (git push origin feature/MatrixRain)
  5. Open a Pull Request

πŸ“„ License

Distributed under the MIT License. See LICENSE for more information.


Built with πŸ¦€ and β˜• by jCyrus

About

An end-to-end encrypted, cyberpunk TUI chat client written in Rust. Zero logs, zero config, 100% terminal.

Resources

Contributing

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages