FY26 GitLab Package: Virtual Registry support (Maven, container images, npm, PyPI, NuGet)
# **Virtual Registry Proposal**
## **Overview**
Implement a virtual registry feature that enhances our current package registry capabilities. This virtual registry will provide advanced proxying, caching, and management features to improve package management and distribution within GitLab.
## **Key Features**
1. **Multi-Source Proxying and Caching**
* Support proxying and caching from up to 15 different upstream sources.
2. **Multiple Registries per Group**
* Allow multiple virtual registries to be configured within a single group.
3. **GitLab Registry Integration**
* Enable adding GitLab-hosted registries as sources for a virtual registry.
4. **Lifecycle Management**
* Implement lifecycle policies with options to clear the cache every 90 days.
5. **User Interface for Configuration**
* Develop a user-friendly interface for managing settings and configurations of virtual registries.
6. **Cache Exploration UI**
* Create a UI for discovering and investigating items stored in the cache.
7. **Package Filtering**
* Implement an allow/deny list to control access to packages based on name and version.
8. **Publishing Capability**
* Enable users to publish packages directly to the virtual registry.
9. **Adoption Tracking and Analytics**
* Implement instrumentation to track the adoption and usage of virtual registries, including:
* Total number of groups with the feature enabled
* Number of packages pulled from virtual registries
* Cache hit ratio
* UI usage data (e.g., number of virtual registries per group, number of upstream sources per virtual registry)
## **Goals**
* Enhance package management capabilities within GitLab
* Improve caching and distribution efficiency
* Provide greater flexibility and control over registry configurations
* Offer insights into registry usage and performance
## Priorities
* [Maven](https://gitlab.com/groups/gitlab-org/-/epics/14137 "Maven virtual registry")
* [npm](https://gitlab.com/groups/gitlab-org/-/epics/3608 "npm virtual registry")
* [PyPI](https://gitlab.com/groups/gitlab-org/-/epics/3612 "PyPI dependency proxy")
* [NuGet](https://gitlab.com/groups/gitlab-org/-/epics/3611 "NuGet virtual registry")
RPM, Debian, and Rubygems support will be delivered after the above four.
epic