S5 v1: Rewrite it in Rust (Large Grant Proposal)

Grant Milestone Progress Report (October) [revised]

What progress was made on your grant this month? Summarize your progress into a few sentences or bullet points.

  • Implemented automatic sharding of the S5 file system to more efficiently handle large directory trees
  • Added an option for configuring trusted nodes by their ed25519 iroh pubkey and syncing private s5 file systems with them
  • Added a config option for adding s5 nodes who are allowed to upload and pin data to specific blob stores and using that for remote blob upload and sync
  • For the FS, added snapshot export and merge functionality for syncing plaintext and encrypted directories
  • Implemented a remote blob store client which uses a remote s5 node over iroh as a blob store, but exposes the same API as local blob stores
  • Implemented a comprehensive and well-documented Rust test which sets up three S5 nodes (two trusted and one untrusted), configures the untrusted one to allow the other two nodes to upload and pin blobs, creates a directory and a few files on one of the trusted nodes and then correctly syncs it to the second trusted node via the untrusted node (end-to-end-encrypted). This test validates the common use case of users syncing data securely between their devices even if they are not both online at the same time
Milestone Task Commits Additional Notes
Milestone 2025-10-25: E2EE FS sync over untrusted node Implementation d5566…857e6 Validation: Checkout commit 857e6e3 (as of now same as main) and run cargo test -p s5_node --test fs_sync_complete

What will you be working on next month?

  • Stable release of the s5 rust crates
  • Well-documented JavaScript and Dart bindings via UniFFI
  • Vup Web Migration to s5-rust

Link to an easy to test version or a demo video.

Run the test (which is the validation requirement for this milestone, see the section above):

  1. git clone https://github.com/s5-dev/s5-rs
  2. cd s5-rs
  3. cargo test -p s5_node --test fs_sync_complete
1 Like