Mirroring
When the mirror is enabled, pyx will serve packages from its own CDN, replicating packages from PyPI (or another public index) continuously and in real-time, and serving them from the same infrastructure as is used for private package delivery. Concretely, when the mirror is enabled, PyPI packages will be served fromhttps://files.astralhosted.com
, rather than https://files.pythonhosted.org
.
Proxying
When the proxy is enabled, pyx will serve packages from the public source directly, without any additional replication or caching. Concretely, when the proxy is enabled, PyPI packages will be served fromhttps://files.pythonhosted.org
, rather than https://files.astralhosted.com
.
Choosing a delivery mode
When the mirror is enabled, pyx can serve its own optimized artifacts to the uv client, enabling faster installation times. For example, the PyTorch wheels served by the mirror are up to 40% smaller than those served byhttps://download.pytorch.org
.
Enabling the mirror also reduces your points of failure, as all downloads are
served from pyx’s infrastructure, creating resilience against outages at the
public source. Downloads through the mirror will also be tracked in the pyx
dashboard, enabling monitoring of package download counts and other team-wide
analytics.
Importantly, though, downloads through the mirror count towards your team’s
bandwidth usage, while downloads from the proxy do not. As such, the proxy can
be a better choice for teams looking to minimize bandwidth usage and focus their
pyx usage on private package hosting.
Regardless of which mode is enabled, the pyx API endpoints remain unchanged
(e.g., https://api.pyx.dev/simple/pypi
for PyPI, or
https://api.pyx.dev/simple/acme/main
for your team’s private index); custom
views are also supported in both modes.
Toggling delivery modes
You can enable or disable the mirror in the Settings tab. After enabling or disabling the mirror, refresh your access token (uv auth token pyx.dev
) in the uv client for the changes to take immediate
effect, and refresh your lockfile (uv lock --refresh
) to replace the cached
file URLs without modifying the selected versions.