Installation#

h5i-db ships as two installable artifacts backed by the same Rust core: the h5i-db command-line tool and the h5i_db Python library. Install either or both; they read and write the same database directories.

CLI#

$ cargo install h5i-db-cli
$ h5i-db --version

The binary is self-contained; no runtime dependencies, no server to start. Requires a Rust toolchain (rustup.rs) to build during install.

Python#

$ pip install h5i-db
import h5i_db
print(h5i_db.__version__)

The wheel bundles the native engine, so no separate CLI install is needed. The only required dependency is pyarrow >= 14; to_pandas() and to_polars() work when pandas/Polars are present.

Build from source#

$ git clone https://github.com/h5i-dev/h5i-db
$ cd h5i-db
$ cargo build --release -p h5i-db-cli          # CLI -> target/release/h5i-db
$ pip install maturin
$ maturin develop -m crates/h5i-db-python/Cargo.toml --release   # Python module

Filesystem requirements

Crash-safety relies on POSIX fsync and atomic rename. Keep databases on a local filesystem (ext4, xfs, apfs, NTFS). On WSL2 use the Linux side (~/data/…), not /mnt/c. Network filesystems are not recommended; see the Operations guide.

Verifying the install#

$ h5i-db init /tmp/smoke.db
$ h5i-db tables /tmp/smoke.db
$ python -c "import h5i_db; h5i_db.Database('/tmp/smoke.db')"

Next: the Quickstart.