Skip to main content
Building from a git clone gets you the latest, possibly-unreleased code, useful if you’re contributing or want a fix that hasn’t shipped in a release yet. Just want the last published version, without cloning anything? See Install with Cargo.

Building

Builds the whole workspace without Sia support. obsidianlog init still defaults to the local backend, and serve/query/verify work fully against it. Sia isn’t reachable from this build at all: if a config points at a Sia indexer anyway, those commands fail with a clear error instead of silently using local storage.
Either way, the binary lands at target/release/obsidianlog. Want it on your PATH instead of just built locally? Use cargo install --path crates/obsidianlog-cli (add --features sia for Sia support) to install it into your Cargo bin directory.

Testing

See Contributing for the full set of checks CI runs before a PR is reviewed. --all-features compiles and exercises the Sia code paths, but skips the live-network test without real credentials. To actually run it against a real Sia indexer, see Testing Against a Live Sia Indexer.

Feature flags

Sia is kept behind a flag instead of being on by default because the underlying SDK is pre-1.0. See ADR-0006 for the full reasoning, it’s not required reading to use this page.

Running the standalone ingest server directly

obsidianlog-ingest is a standalone binary you can run without the CLI. Unlike obsidianlog serve (which manages the key for you), the standalone binary never reads its encryption key from the config file. It refuses to start until you pass one via OBSIDIANLOG_ENCRYPTION_KEY (a 64-character hex string) or OBSIDIANLOG_ENCRYPTION_KEY_FILE (a path to a file containing that string, the convention for a mounted Docker/Kubernetes secret):
The obsidianlog CLI’s init/serve manage this key for you instead. See obsidianlog init and obsidianlog serve.