SiaSia Developer Portal

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.

store.rs
// 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.

$ cargo add sia_storage
$ go get go.sia.tech/siastorage@latest
$ pip install sia-storage
$ dart pub add sia_storage

JavaScript

Reference →
$ npm install @siafoundation/sia-storage

Start 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.