> ## Documentation Index
> Fetch the complete documentation index at: https://docs.obsidianlog.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Bring Your Own Indexer

> Point ObsidianLog at your own self-hosted indexd, or a third party's, for full control.

The Sia backend isn't limited to [`sia.storage`](/storage-backends/hosted-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](/deployment/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](/architecture-and-security/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](/architecture-and-security/security-model).
