Reading the description of volare, it sounds like you are quickly starting to reinvent existing tooling like Conda / Pip / FuseSoC / etc. Your tool_metadata.yml file sounds a lot like Conda's environment.yml and Pip's requirements.txt. These existing systems have quite a large amount of tooling already written for them.
Have you considered making volare just a thin wrapper around these existing solutions (if it isn't already)?
I know that @olofk and @proppy where looking at this problem too. @umarcor, @kgugala and @carlosedp have been working on similar problems in the FPGA space.