How-to guides
Recipes for specific PyPI tasks.
-
Cache packages for CI
Put peryx between your runners and pypi.org: one environment variable, faster jobs, and one download per wheel instead of hundreds.
-
Serve a restricted or air-gapped network
peryx as the one approved path to PyPI, or as a warm-then-carry partial mirror when there is no path at all.
-
Proxy a private upstream
Point peryx at Artifactory, GitLab, or any other PEP 503 index, with credentials.
-
Compose virtual indexes
Serve several indexes under one URL, give each cached index its own private layer, and chain virtual indexes.
-
Publish packages
Upload distributions with twine or uv publish, authenticated by a shared token, including wheels from older tooling and clients that declare a single digest.
-
Yank and delete packages
Yank an uploaded release per PEP 592 or delete it outright, address a release by any equivalent version spelling, and manage a project named after a mutation verb.
-
Diagnose Simple API serving
Work out why a mirror reports api-version 1.0, move a client off the gpg-sig marker to the sha256 the index serves, and follow or skip the trailing-slash redirect.