Skip to content

PyPI via devpi

The /cache volume keeps pip’s download cache warm on a single host. devpi is a different layer — a PyPI proxy and private index that stacks on top of the filesystem cache.

A devpi proxy is worth running when you want to:

  • Share one mirror across hosts. Every runner pulls through the same index instead of each host re-fetching wheels.
  • Serve private packages. devpi hosts your own packages next to the public ones it mirrors.
  • Survive a PyPI outage. Once a wheel is cached, jobs install it even when the public index is unreachable.

Running devpi is your job — see the devpi quickstart. Once it’s reachable, point Runaway at it through custom env.

  1. Set the index URL in custom env. Open the scale set’s custom-env field and add:

    {
    "PIP_INDEX_URL": "http://devpi.lan:3141/root/pypi/+simple/"
    }

    Replace the host, port, and index path with your own devpi index.

  2. Add a trusted host for plain HTTP. If your devpi serves over plain HTTP on the LAN (no TLS), pip will refuse it unless you mark it trusted:

    {
    "PIP_INDEX_URL": "http://devpi.lan:3141/root/pypi/+simple/",
    "PIP_TRUSTED_HOST": "devpi.lan"
    }
  3. Save the scale set. New runners inherit the variables, so every pip install resolves against your mirror.

Custom env is plaintext. If your devpi index requires credentials, those are secrets and don’t belong in custom env — see Custom environment variables. An unauthenticated LAN index needs only the URL.