Job orb


Skip to build

orb: check opam package reproducibility

This tool can check if an opam package build is reproductible (cf. It has two subcommands: build and rebuild.

The orb build conducts a build of an opam package, and collects the build result (and hashes thereof) and the build input (or build info), consisting of:

The orb rebuild takes this data as input and conducts a second build with the same environment, and compares that the hashes of the produced binaries are identical.

The orb build also has a command-line flag "--twice" to conduct a build and a rebuild directly afterwards. For debugging reproducibility, a "--keep-build" (useful with opam's "--keep-build-dir") option is provided that allows to compare intermediate build products as well.

Please have a look at "--diffoscope", "--out", "--switch-name", "--solver-timeout", "--date", and other command line parameters.

It is currently used as a payload of builder-worker to run the reproducible MirageOS unikernels infrastructure.

Binary packages for different platforms (Debian, Ubuntu, FreeBSD) are available at

Install & use

$ opam pin git+
$ orb build --twice --repos=default: cmdliner

Simple (and fast) failing and successful reproducible opam packages are in the reproducible-testing-repo.

Build 2022-01-02 20:09:21Z

Back to readme

Built on platform debian-11

Build took 9min43s.

Execution result: exited 0.

Build info

Build artifacts

SHA256:abcc549e7df35b7561ad18b888bddda7b25662019fc11898df8c15a955a2b449 (4.11MB)
SHA256:b1d90053f64bfd293076842903cf55eb2cf90a8c82cf91450a156d030f7c864b (352B)
SHA256:f0bae5ae93f8f1a7241589b7a848a27c0dd159ef8632580102ac631ab644c805 (53.7kB)
SHA256:1097683014045f4a645a2204b704d9ed3b54c18ea258a31b71b3c4437aa8d076 (3.26kB)

Reproduced by 14 builds

Comparisons with other builds on the same platform