{1 Concepts}

An [opam-monorepo] project uses 3 components in the source tree:
- a set of opam files containing specifications about the dependencies (for
  example, a dependency on [lwt >= 4.0.0])
- a lock file (with extension [.opam.locked]) containing references to exact
  dependencies (for example, [lwt = 4.2.1]) and how to get them (URLs, hashes,
  etc.). It also contains information about transitive dependencies, not just
  the ones mentioned in opam files.
- a [duniverse] folder containing the sources for all the packages
  mentioned in the lock file

The two important commands are:
- {{!page-lock}[opam monorepo lock]}, which will read the opam file and compute
  a solution using the opam repository and the opam solver. It will create or
  update the lock file with this solution.
- [opam monorepo pull] will read the lock file, download the dependencies, and
  unpack them into the [duniverse/] folder.
