{0 Irmin}

[Irmin] is a distributed database built on the same principles as {{:https://git-scm.com} Git}. It can be used as an OCaml library that provides persistent stores with built-in snapshot, branching, merging, history tracking, and reverting mechanisms, similar to a version control system like Git, but for data rather than code.

{e Release 3.11.0 - %%HOMEPAGE%%}

{1 Irmin API}

The [irmin] package defines the public API of [Irmin]. The module {!Irmin} is this library's entry point.

{1 Backends}

Irmin is designed to use a large variety of backends:

- {!module:Irmin_mem}: An in-memory store provided in the [irmin] package (this package).
- {!Irmin_git}: A backend that exposes a bidirectional bridge to a Git repository, provided by the [irmin-git] package.
- {!Irmin_pack}: A space-optimised, on-disk store inspired by {{:https://git-scm.com/book/en/v2/Git-Internals-Packfiles} Git Packfiles}, provided in the [irmin-pack] package.
- {!Irmin_mirage}: A {{:https://mirage.io/} MirageOS} compatible store, provided in the [irmin-mirage] package.

{1 Helpers and Internal Utilities}

{2 [irmin.unix]}

The [irmin.unix] package provides [Irmin] related utilities for Unix applications.

The module {!Irmin_unix} is this library's entry point.

{2 [irmin.data]}

This package contains data structure implementations used in the implementation of Irmin. It is exposed only for internal use and does not provide a stable API.

The module {!Irmin_data} is this library's entry point.
