The basic idea is to use opam switches to setup per-OCaml-version shared tools (merlin, ocp-index/ocp-browser, ocp-indent) with project-local builds for everything else.
For example, a user would have a 4.04.1+flambda switch available with its own merlin, ocp-indent and other project-generic tooling.
Then a user would clone or create the project (let's call it Project A (PA)) they are working on. This project would use jbuilder as its build system and include appropriate *.opam files specifying dependencies.
A jbuilder init or jbuilder init-deps command could be available which would pull down the source code for all of PA's transitive dependencies, unpacking them under a local directory _vendor (or some other appropriate name). This _vendor directory could live within a switch-specific context. opam could/would be used to determine the appropriate dependencies to pull down. All of the depedencies would either use jbuilder as their