lix 0.16.0

Embeddable version control for apps and AI agents.
Documentation

Lix Rust SDK

let lix = lix::open_lix().await?;

lix opens an in-memory repository by default. It owns Lix's SQL, files, branches, transactions, and Wasmtime plugin runtime without pulling in a persistent backend.

Plugin authors also depend directly on lix and use the target-selected lix::plugin authoring API. No separate plugin SDK crate is required.

For persistence, add an adapter crate and configure it before awaiting:

use lix::open_lix;
use lix_storage_rocksdb::RocksDB;

# async fn example() -> Result<(), lix::LixError> {
let storage = RocksDB::open("./repository.rocksdb")?;
let lix = open_lix().with_storage(storage).await?;
# Ok(())
# }

open_lix() opens the client's primary session on the repository's tracked lix_default_branch_id, which points to main in a new repository. Applications own window- or session-specific branch selection and switch explicitly. lix.open_another_session().await? creates an independent session on the primary session's current branch. Add .with_account(account_id).await? when that session represents another account. Switch the returned repository handle when it should work on another branch. Switching any session never changes the repository default.

Storage adapters implement the public lix::storage contract and release on their own cadence. The official packages are lix-storage-rocksdb, lix-storage-slatedb, and lix-storage-filesystem.