Overview
ValenceDrop is a high-performance, local-first file transfer utility that enables users to securely drop files between Linux desktops and Android devices. Rejecting cloud servers and internet-routing, it uses Bluetooth Low Energy (BLE) for discovery and RFCOMM channels for payload transfer.
The project consists of three main components: a platform-agnostic Rust protocol core (valencedrop-core), a systemd-integrated Linux daemon with a GTK4/libadwaita user interface, and a Kotlin-based Android foreground service.
Core Capabilities
Advanced Protocol & Frame Codec
- Custom Binary Framing: Uses structured headers with magic bytes, frame types, flags, and size fields. Frames are limited to 512 KiB to prevent memory exhaustion.
- Integrity Checksums: Appends CRC32 checksums to every frame for packet verification, and validates completed transfers using streaming SHA-256 file hashes.
State-Based Session Tracking
- Strict State Machine: The transport layer strictly validates connection lifecycles:
Idle→Connected→Pairing→Authenticated↔Transferring. - Resumable Transfers: If a connection is dropped mid-transfer, ValenceDrop logs the byte offset. Upon reconnection, the daemon requests a seek-point resume, avoiding re-transmitting already sent bytes.
Pairing & Trust Architecture
- Cryptographic Trust Store: Peer identities are validated via public key fingerprints and written to
~/.config/valencedrop/trust.jsonunder strict0600permissions. - Out-of-Band Validation: Pairing is verified interactively using dynamic QR code generation or PIN verification.
- Configurable Policies: Android devices can toggle between
auto-accept,prompt, orauto-rejectmodes.
Operations & CLI
ValenceDrop packages a CLI tool inside the Linux client binary. You can inspect peers, check transfers, or start the daemon directly:
Trust Registry CLI
Testing & Diagnostics
The codebase includes loopback mock tests to simulate transfers without requiring active Bluetooth hardware: