The primary piece will be the storage controller, basically "take tarball, place tarball" and "take tarball identifier and return tarball" but where it's fetching the tarball shouldn't matter (custom solutions possible + community-packaged solutions for AWS, Azure, GCP, whatever exists in 10 years)
The secondary piece will be the basic API that will allow for registry specs to be written. I want it to be able to support npm, cargo, pypi, Maven, and every other package system but I don't want to write any of that + even if I did it'll be out of date in 10 years and there'll be 10 newer cooler package ecosystem that I'd have to add. I want end-users to be able to build their own registry interfaces that meet the minimum spec of what the storage controller needs and allows them to surface additional information where necessary.
The tertiary piece is package enhancement controllers, basically allowing third parties to enrich package metadata based off package identifiers