Sia Storage SDK
Build private, user-owned storage into any app.
Sia is a decentralized storage network. The SDK encrypts data on the user's device, spreads it across independent storage providers worldwide, and gets it back on demand — with no storage infrastructure for you to operate.
// with a connected SDK instance
let reader = std::io::Cursor::new(b"hello, sia!");
let obj = Object::default();
let obj = sdk.upload(obj, reader, UploadOptions::default()).await?;
sdk.pin_object(&obj).await?;
println!("Object ID: {}", obj.id());How it works
Your app sends encrypted data directly to storage providers and coordinates through an indexer, which stores only encrypted records. Users approve your app once, then own their data independently of you.
Your app
The SDK encrypts and erasure-codes data locally. Keys stay on the user's device.
Indexer
Tracks encrypted object records and keeps data healthy. Hosted by Sia Storage or self-hosted — it never sees plaintext.
Storage providers
Independent nodes worldwide store encrypted shards — never filenames, metadata, or readable data.
The trust & deployment model covers what the indexer can see, who pays for storage, and what happens if it goes offline.
What can you build?
Photo backup
Back up camera rolls to storage the user owns.
Desktop sync
Keep folders in sync across a user's devices.
Encrypted documents
Store records nobody but the user can read.
Media archives
Archive large video and audio libraries durably.
User-controlled app data
Give users data that outlives your service.
File sharing
Share objects with public or time-limited links.
Why Sia?
Private by default
Data and metadata are encrypted on the user's device before they touch the network. The coordination service and storage providers never see plaintext — there is nothing for a provider to read, scan, or leak.
No infrastructure to run
The SDK talks directly to the network from your app. There are no buckets to provision, no servers to operate, and no per-app backend required just to store files.
Durable by design
Every object is erasure-coded into 30 shards spread across independent storage providers worldwide. Any 10 shards reconstruct the data, so it survives even if 20 of the 30 providers go offline.
No lock-in
Sia is an open network. Your app can use the hosted indexer, a third-party one, or your own — and users hold the keys to their data either way.
Pick your SDK
First-party SDKs for Rust, Go, Python, Dart, and JavaScript — the JavaScript SDK runs in Node and the browser, and the Dart SDK supports Flutter on mobile and desktop.
Rust
Reference →$ cargo add sia_storage$ go get go.sia.tech/siastorage@latestPython
Reference →$ pip install sia-storageDart
Reference →$ dart pub add sia_storageJavaScript
Reference →$ npm install @siafoundation/sia-storageStart free
sia.storage is a hosted indexer with a 50GB free tier and no setup. And because the SDK works with any Sia indexer, including self-hosted ones, you're never locked in.
