See
./sialo help
Register command allows authorizing an application.
Use the default indexer url and provide seed as an argument:
./sialo register --seed-phrase "audit audit audit audit audit audit audit audit audit audit audit audit"
Set a custom indexer url and provide seed as an env varible:
INDEXER_URL="http://127.0.0.1:9982" SEED_PHRASE="audit audit audit audit audit audit audit audit audit audit audit audit" ./sialo register
Set a custom AppMetadata JSON file (see example_json.json in this repo):
APP_METADATA="example_app.json" SEED_PHRASE="audit audit audit audit audit audit audit audit audit audit audit audit" ./sialo register
./sialo upload --app-key 4a5db12851738b74a7f6ad8a2092d23980e455a03d99f373b69e9629eccf2549b1c33f4e3c999e5d3f94b669932f96f7b5cf4ffe55ad69f2202ab38845a250fa hello_world.txt
or
APP_KEY="4a5db12851738b74a7f6ad8a2092d23980e455a03d99f373b69e9629eccf2549b1c33f4e3c999e5d3f94b669932f96f7b5cf4ffe55ad69f2202ab38845a250fa" ./sialo upload hello_world.txt
or
export APP_KEY="4a5db12851738b74a7f6ad8a2092d23980e455a03d99f373b69e9629eccf2549b1c33f4e3c999e5d3f94b669932f96f7b5cf4ffe55ad69f2202ab38845a250fa"
./sialo upload hello_world.txt
Upload and get a share URL (expires in 4 weeks):
./sialo upload -t 4w hello_world.txt
All share URLs are output using the sia:// protocol scheme.
Download accepts either an object hash or a share URL (sia:// or https://).
By object hash:
./sialo download bd00710a8182b18e4c2263f69e3a5785b275e0911cc4bbadc555c743576772bd -o some.file
By share URL:
./sialo download 'sia://app.sia.storage/objects/<hash>/shared?sv=...&ss=...#encryption_key=...' -o some.file
APP_KEY="4a5db12851738b74a7f6ad8a2092d23980e455a03d99f373b69e9629eccf2549b1c33f4e3c999e5d3f94b669932f96f7b5cf4ffe55ad69f2202ab38845a250fa" ./sialo delete bd00710a8182b18e4c2263f69e3a5785b275e0911cc4bbadc555c743576772bd
./sialo prune-slabs --app-key 4a5db12851738b74a7f6ad8a2092d23980e455a03d99f373b69e9629eccf2549b1c33f4e3c999e5d3f94b669932f96f7b5cf4ffe55ad69f2202ab38845a250fa
Share a link that expires in 4 weeks:
./sialo share -s <OBJECT_HASH> -t 4w
Share with an exact expiration date:
./sialo share -s <OBJECT_HASH> -t 2026-12-31T23:59:59Z
Supported duration suffixes: h (hours), d (days), w (weeks). Exact ISO 8601 timestamps are also accepted.
All share URLs are output using the sia:// protocol scheme.
Use sialo share -h for a quick summary or sialo share --help for full details with examples.
HTML pages hosted on Sia can reference other Sia-hosted content using the sia:// protocol. The Sia Browser intercepts these URLs and downloads + decrypts the content directly from storage hosts via WebTransport.
sialo upload -t and sialo share already output sia:// URLs, so you can use them directly in your HTML:
<img src="sia://app.sia.storage/objects/<hash>/shared?sv=...&ss=...#encryption_key=..." alt="My Image" /><video src="sia://app.sia.storage/objects/<hash>/shared?sv=...&ss=...#encryption_key=..." preload="none"></video>Use preload="none" so videos don't start downloading until the user plays them.
<a href="sia://app.sia.storage/objects/<hash>/shared?sv=...&ss=...#encryption_key=...">
Read more
</a>Clicking a sia:// link opens the content in a new Sia Browser tab. This works for HTML pages, PDFs, images, or any other file type.
- Upload assets (images, videos, etc.) with
sialo upload -t <duration>to getsia://share URLs - Write your HTML page using those
sia://URLs for embedded content - Upload the HTML page with
sialo upload -t <duration>
See flowers.html in this repo for a complete example of an HTML page with 10 embedded sia:// images.
RUST_LOG env variable supports filtering out noisy log messages:
RUST_LOG="debug,quinn::connection=warn" APP_KEY="4a5db12851738b74a7f6ad8a2092d23980e455a03d99f373b69e9629eccf2549b1c33f4e3c999e5d3f94b669932f96f7b5cf4ffe55ad69f2202ab38845a250fa" ./sialo upload --file hello_world.txt