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:16Z

Back to readme

Built on platform debian-10

Build took 9min33s.

Execution result: exited 0.

Build info

Build artifacts

SHA256:a9656398793d8a0fefd095499a7e21e49599565e17dc498b1455e66214691f16 (4.08MB)
SHA256:d63edcc94a5e9f5ee9c546bee7e45195687704c70c20e2345641f9cfb06aedee (352B)
SHA256:f0bae5ae93f8f1a7241589b7a848a27c0dd159ef8632580102ac631ab644c805 (53.7kB)
SHA256:4dc7761418e1d0503241d6328ad2fbe75be3a87446260644f5e1a851a6dede67 (3.41kB)

Reproduced by 21 builds

Comparisons with other builds on the same platform