Hello
Thank you for your progress report!
Regards,
Kino on behalf of the Sia Foundation and Grants Committee
Hello
Thank you for your progress report!
Regards,
Kino on behalf of the Sia Foundation and Grants Committee
The “Make the RHP4 WASM-based blob proxy production ready” component has been moved from Milestone #1 to Milestone #4, due on 2025-11-02. The reason for this is that the current implementation based on renterd is in a working MVP state, but the upcoming indexd architecture fits S5 (and many other use cases) significantly better. So it makes more sense to wait until indexd is available for testing, instead of polishing up the current (soon-to-be-deprecated) implementation.
Can be validated by running
cargo testin thes5_fssubdirectory
Can be validated by running
cargo testin thes5_coresubdirectory
Implemented a registry store backed by redb (feat!: implement redb-backed registry api and refactor some traits · s5-dev/s5-rs@49c0965 · GitHub)
Implemented missing methods in the renterd-backed s5 store (feat(store/sia): implement delete, rename, open_read_stream and open_… · s5-dev/s5-rs@ae6d088 · GitHub)
Started working on the s5_blobs protocol (for dynamic blob location requests) and bridging Iroh’s blobs protocol store to s5-powered stores (feat: add s5_blobs protocol · s5-dev/s5-rs@f344ae5 · GitHub)
Jules has been busy with migrating most of s5.js to the new CBOR-based directory metadata structures, in October we will work together on upstreaming his changes to the official s5.js repository (see GitHub - julesl23/s5.js: TypeScript/JS Library for S5)
instead of implementing a completely custom identity solution, s5 now simply uses iroh ed25519 public keys for node identity and will likely use atproto’s did:plc for public identities covering multiple nodes.
Work with Jules on upstreaming his changes to s5.js so they are properly migrated to be compatible with s5-rs and S5 v1
Extending the config format to allow configuring trusted third-party nodes and upload+pinning targets
Implement Sia RHP4 uploads and downloads in S5 using indexd
Make the RHP4 WASM-based blob proxy production ready, so devs can easily use files streamed directly from Sia hosts in their web apps
Release a stable v1 version of all S5 libraries and code
Hello @redsolver,
Thank you for your progress report!
Regards,
Kino on behalf of the Sia Foundation and Grants Committee
Remove the indexd-dependent milestone (and one monthly payment) from this grant due to it not being available yet, blocking RHP4 uploads/downloads and the productionization of the WASM blob proxy. I will submit a small, focused grant for indexd integration only once it’s available (target November).
Align reporting with the new deadline: progress updates by the 25th each month
Clarify validation requirements for milestone completion
Allow configuring trusted nodes by their ed25519 iroh pubkey and syncing private s5 file systems with them
Add 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 functionaility
Stable release of the s5 rust crates
Well-documented JavaScript and Dart bindings via UniFFI
Vup Web Migration to s5-rust
All s5 rust crates published on crates.io with documentation for all public API methods
JavaScript bindings to s5 rust published on npm
Dart bindings to s5 rust published on pub.dev
Vup Web migrated to s5-rust with the following features working: account creation/login, creating directories, uploading files to remote s5 nodes, downloading files (all end-to-end-encrypted)
Hi @redsolver - thank you for detailing the changes above. Confirming this means you are okay with receiving your final payment on December 15th with your final report submitted November 25th now instead of October 25th? This will be due to the fact that the final payment for the grant will be issued after the final successful technical review.
I imagine you’ve detailed a slightly longer duration for Milestone #4 (your new final milestone) because the additional time is needed, and there are no issues with that on our side.
Yes, I’m okay with receiving my final payment on December 15th and no payment on November 15th.
Sorry for the delayed progress report, I’m trying my best to get it out today.
Hello @redsolver,
Please have your progress report submitted be EOD today.
Regards,
Kino on behalf of the Sia Foundation and Grants Committee
Hi @redsolver - this is the final notice for your October progress report.
If your full and complete report is not posted by 9am ET tomorrow (November 4th), you will have to miss this payment cycle.
I would like to apologize for the delayed report and thank you for your understanding.
Validation: Clone latest repo and run cargo test -p s5_node --test fs_sync_complete
Commits implementing the milestone: Comparing d5566096102f797fe201ffc4df19a3c5814afaf7...857e6e38e617c50f67037945b8cc17b0f41b65e4 · s5-dev/s5-rs · GitHub
Next Up: Working on the 2025-11-25 milestone
Hi @redsolver, this report is greatly lacking in detail and does not follow the Development Guide format.
Please revise the report to match the correct format by 5pm ET.
| 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 |
Run the test (which is the validation requirement for this milestone, see the section above):
git clone https://github.com/s5-dev/s5-rscd s5-rscargo test -p s5_node --test fs_sync_completeThis month’s review was successful and there is no actionable feedback. The team is looking forward to seeing what you do over the next month!
This month I focused on polishing and releasing s5-rs crates for S5 v1.0, ensuring comprehensive documentation and robust testing.
Shipped v1.0.0-beta.1: Published the full suite of S5 crates to crates.io.
FUSE Integration: Implemented a functional FUSE driver (s5_fuse), allowing users to mount S5 file systems directly on their OS.
FS Internals: Added automatic sharding for large directories and Garbage Collection (GC) to s5_fs.
Core Refactor: Locked down the s5_core APIs (blob stores, importers, registry) for the v1 release.
Bindings & Vup Web: The JS/Dart bindings and Vup Web migration are now done!
| Milestone | Task | Status | Commits | Notes |
|---|---|---|---|---|
| 2025-11-25 | Stable release of s5 rust crates | Completed | 857e6e3…3d4515d | All crates published to crates.io. |
| 2025-11-25 | JS & Dart bindings via UniFFI | Completed | 3d4515d…079b4ca | Published on npm and pub.dev. Using wasm-bindgen and flutter_rust_bridge directly instead of UniFFI because they are more reliable and mature |
| 2025-11-25 | Vup Web Migration to s5-rust | Completed | 515b3c3 | Needs a Remote S5 Node to work, see README for instructions |
(Includes s5_core, s5_fs, s5_node, s5_cli, s5_blobs, s5_registry, s5_fuse, and store backends)
Source Code: https://github.com/s5-dev/s5-rs
Quick Start: Install the CLI to try it out immediately:
cargo install --git https://github.com/s5-dev/s5-rs s5_cli
s5 --help
cargo test --workspace
I completely re-architected and rewrote the S5 Network in Rust, moving from a prototype to a stable foundation.
Rust Rewrite: Delivered a modular implementation of the S5 protocol (s5_core, s5_node).
Iroh Integration: Replaced the legacy WebSocket protocol with Iroh for robust P2P networking and NAT traversal.
Advanced File System: Built s5_fs, a secure, end-to-end encrypted filesystem with snapshots and sharding.
CLI & Tooling: Built s5_cli, featuring the s5 tree command for inspecting data structures and s5_fuse for mounting.
Sia Integration: Shipped a renterd-backed s5_store_sia backend that exposes Sia as a first-class Store, including direct BlobLocation::SiaFile links so S5 clients or CDNs can download directly from Sia hosts.
Documentation: Wrote READMEs for all 14 crates, 4 end-to-end guides (workflows, friend/community storage, decentralized build cache), plus a full CLI and configuration reference.
See docs/guides/s5-workflows.md for detailed workflows.
tokio dependencies in s5_core and s5_blobs that don’t compile for wasm32-unknown-unknown. While iroh and irpc work in WASM, core crates depend on tokio, redb, and fs4 which are not WASM-compatible. I am currently refactoring these into a s5_client_core to isolate WASM-compatible logic, which caused a slight delay in the final bindings and Vup Web migration.Rust Reliability: Rust was the perfect choice for S5. Its type system and safety guarantees allowed me to build complex concurrent logic with confidence, resulting in a highly stable and performant system.
P2P: Leveraging Iroh was a better choice than maintaining a custom networking stack.
FFI: API design needs to account for FFI boundaries early on to avoid friction.
I’m really happy with how s5_fs turned out. It supports end-to-end encryption, efficient sync, and automatic sharding, but still feels fast and usable. Seeing it work with the FUSE driver and s5 tree command is a highlight.
Hi @redsolver - since certain items are still in progress, I’ll check back in a couple of days. Be sure to link to the specific task’s code in the detail for the past month.
Please note given the American Thanksgiving holiday the deadline for reports in order to allow adequate time for review is Dec. 1 at 10am ET.
Hi, I updated the progress report to link to the specific task’s code (commits) in the task detail table.
I’m aware that the deadline for reports is now, but unfortunately I’m still busy with the final git commit, this will be done in about 2 hours. I will update the progress report to be final with all in-progress items finished immediatly after that.
Please tag me when you do so we can get this review into the team’s queue.
@mecsbecs Sorry for the delay, all milestone tasks are now finally completed and I updated the final progress report to be complete.
Hello @redsolver - congratulations, your final technical review was successful!
This grant will be marked as ‘Complete’ here on the Forum and you will be sent an offboarding email soon.
Thank you for continuing to build on Sia.