Build Varsto with us
Varsto is an end-to-end encrypted file sync and backup tool for storage you already own: S3 buckets, NAS shares, rclone remotes, old disks and your own devices. The core is written in Rust, the source is public on GitHub, and the storage format is specified in writing. It is an early alpha, which is the best time to shape it.
Source on GitHub Issues Contribution rules
What you would be working on
A Rust core with a written spec
varsto-core holds the engine: content-defined chunking, XChaCha20-Poly1305 encryption, a signed ledger with hybrid Ed25519 + ML-DSA-65 signatures, placement and policies, peer-to-peer block exchange with NAT traversal, and storage backends for directories, S3 and rclone. Every on-storage object is described in the storage format specification.
One binary, many shells
varsto-cli is the command line, the background service, the tray and a local web interface (plain HTML, CSS and JavaScript). Thin native shells wrap it: Swift for macOS and iOS, Kotlin for Android, through varsto-ffi.
Tests that run whole networks
Besides unit and integration tests, a lab of virtual machines plays laptops, desktops and servers behind home routers, symmetric NAT and a public internet, with an S3 server and storage outages, crashes and clock skew on demand. See Testing.
Where help is wanted
- Security review of the key hierarchy, the threat model and the format specification. Findings go through the security policy.
- Platforms: the Windows tray and Explorer integration, the iOS app on real devices, Android background behaviour on different vendors' phones.
- Networks: peer-to-peer and NAT traversal on networks other than the maintainer's own: carrier-grade NAT, IPv6-only, corporate firewalls.
- Storage: testing against more S3-compatible providers and rclone backends, and their quirks (range reads, clock skew, listing consistency).
- Packaging: Flatpak, Homebrew, AUR, winget and other package managers.
- Translations: the interface and this website are in English, Finnish and Swedish; more languages and native-speaker review are welcome. The dictionaries are JSON files in
crates/varsto-cli/ui/i18n/. - Documentation and bug reports from real setups: the forum and the issue tracker.
Getting started
git clone https://github.com/janttsu/varsto
cd varsto
cargo build --release
cargo test --workspace
A stable Rust toolchain (1.85 or newer) is enough for the core and the command line. The quick start creates a vault on a local directory in a minute, so you can try changes without any cloud account. Before a pull request, cargo fmt --all --check, cargo clippy --workspace --all-targets and the tests must pass, and new behaviour needs tests. Please open an issue before large changes.
Licence
Varsto is source-available under the PolyForm Shield License 1.0.0: you may read, use, change and share the code for any purpose except offering a product that competes with Varsto. It is not an OSI open-source licence. By contributing you agree that your contribution is distributed under that licence; the details are in the contribution rules. Everything in the repository is written in English.