devpi (PyPI Proxy)

PyPI caching proxy and private package index. Runs natively on indri as a LaunchAgent (not in-cluster). See devpi-on-indri for deploy and operations.

Quick Reference

PropertyValue
URLhttps://pypi.ops.eblu.me
Listen127.0.0.1:3141 (loopback only; reached via Caddy)
ServiceLaunchAgent mcquack.eblume.devpi on indri
Server-dir/Users/erichblume/devpi/server-dir/
Runtimeuv-managed venv at /Users/erichblume/devpi/venv/
Ansible roleansible/roles/devpi/
VersionsPinned in ansible/roles/devpi/defaults/main.yml (devpi_server_version, devpi_web_version)

Indices

IndexPurpose
root/pypiPyPI mirror/cache (auto-created by devpi-init)
eblume/devPrivate packages (inherits from root/pypi)

Credentials

Root password stored in 1Password (blumeops vault, item devpi, field root password). Fetched via op read in the ansible/playbooks/indri.yml pre_tasks and passed to the role on first init.

Backup

The server-dir is not backed up. The PyPI cache (+files/) is re-fetchable from upstream on first request. The local eblume/dev index metadata is small but also not critical to retain — packages can be republished from source. If retention becomes important, add /Users/erichblume/devpi/server-dir/ to borgmatic_source_directories.