Documentation

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.