Skip to main content
The Sia backend isn’t limited to sia.storage. At the same obsidianlog init prompt, entering a different indexer URL points ObsidianLog at your own self-hosted indexd, or a third party’s, instead. This is a configuration choice, not a code fork. The indexer URL lives in config.toml, and the app key init receives from onboarding lives in the credential bundle alongside the encryption key, not as a plaintext config value. Together they form the SiaConfig { indexer_url, bucket, app_key } the backend actually connects with at runtime.

Who this is for

Compliance-sensitive teams and anyone who wants full control over the wallet, keys, and data path in the loop, rather than trusting an operator, regulated shops in particular. The same onboarding mechanism (indexd’s app-connection approval flow) works identically against any indexer, only the URL differs.

Running your own indexd

See the Docker Compose Quickstart for the sia Compose profile, which runs indexd + the PostgreSQL database it requires locally. Standing up a real, funded, internet-facing instance is a real operational commitment (a funded wallet, contract maintenance, and monitoring), deliberately kept separate from ObsidianLog’s own scope. See Decisions (ADR-0007) for the full reasoning behind this split.

The security promise still holds

Regardless of which indexer you point at, encryption happens client-side under a key you hold, before data ever reaches the SDK. The indexer operator is cryptographically unable to read your archived logs either way. See Security Model.