Irmin is an OCaml library for building mergeable, branchable, distributed data stores with Git-like version control semantics (snapshot, branching, merging, push/pull). It provides a content-addressable, immutable store with multiple pluggable backends: an in-memory store for prototyping, a Git-compatible store for interoperability, a high-performance on-disk pack-file store (irmin-pack) optimized for large-scale append-only workloads, a filesystem store, a chunked store, and a MirageOS unikernel adapter. The library exposes a rich API including tree operations, Merkle proofs, watches/notifications, remote synchronization, and a GraphQL server. It ships with a CLI tool (irmin), a client/server protocol over TCP/Unix sockets/WebSockets, and C bindings (libirmin) for non-OCaml consumers. The primary production consumer is the Tezos blockchain, which uses irmin-pack for its on-disk storage; the codebase includes Tezos-specific schemas, an explorer GUI, and trace replay benchmarks. The architecture is heavily functor-based, using OCaml first-class modules for dependency injection, which enables backend swapping and extensive code reuse across packages.