Plenum is a blazingly fast, cross-platform file transfer application. Built on a shared Rust core, it provides seamless peer-to-peer file sharing over local networks and the internet using WebRTC.
- High Performance: Powered by a custom Rust-based binary packet engine with sliding-window flow control and backpressure handling.
- Cross-Platform: Beautiful, native clients for both Mobile (Flutter) and Desktop (Tauri).
- Dual Transfer Modes:
- Local Network: Automatic peer discovery via UDP Broadcast / mDNS.
- Internet Relay: Secure WebRTC data channels using Room Codes.
- Secure transfers: LAN payloads use a fresh X25519 key exchange and ChaCha20-Poly1305 encryption for every transfer. An optional PIN authenticates the LAN handshake. Internet transfers use WebRTC's encrypted data channel.
- Large File Support: Engineered specifically for massive files, ensuring your transfers won't overwhelm memory or network buffers.
Plenum embraces a highly modular architecture that shares a singular core network and protocol engine written in Rust.
- Core Engine (
/src): Rust backend handling framing, flow control, transport (TCP/WebRTC), and signaling. - Mobile App (
/mobile): A Flutter app utilizingflutter_rust_bridgeto bind the UI to the Rust core. - Desktop App (
/desktop): A React + Vite frontend packaged as a lightweight Tauri application.
Ensure you have the following installed:
- Rust (latest stable)
- Flutter (for mobile)
- Node.js & npm (for desktop)
- Tauri CLI (for desktop)
cd mobile
flutter pub get
# Generate the rust bindings if modifying the core API
flutter_rust_bridge_codegen generate
# Run the app
flutter runcd desktop
npm install
# Run the development server
npm run tauri devcargo build --release
./target/release/plenum --helpDistributed under the MIT License. See LICENSE for more information.
Built with love using Rust
