blumeops/docs/how-to/use-pypi-proxy.md
Erich Blume f8f11121eb Complete Phase 6: documentation cleanup and integration (#97)
## Summary
- Delete `docs/zk/` directory - all useful content migrated to structured docs
- Delete `docs/README.md` - `docs/index.md` is now the documentation root
- Add `devpi` reference card and `use-pypi-proxy` how-to guide
- Add maintenance notes to `indri` reference (sleep prevention, passwordless sudo)
- Add iCloud Photos backup note to `borgmatic` reference
- Rewrite `zk-docs` mise task to prime AI context with key docs instead of legacy cards
- Update `CLAUDE.md` and `README.md` to remove zk references
- Update `exploring-the-docs` with AI context priming section

This completes the Diataxis documentation restructuring. All six phases are now done.

## Deployment and Testing
- [x] Pre-commit hooks pass (including doc-links validator)
- [ ] Build and deploy to docs.ops.eblu.me to verify rendering

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://forge.ops.eblu.me/eblume/blumeops/pulls/97
2026-02-03 20:52:37 -08:00

1 KiB

title tags
use-pypi-proxy
how-to
python

Use the PyPI Proxy

How to configure clients and publish packages to devpi.

Configure pip

Create ~/.config/pip/pip.conf:

[global]
index-url = https://pypi.ops.eblu.me/root/pypi/+simple/
trusted-host = pypi.ops.eblu.me

Track with chezmoi:

chezmoi add ~/.config/pip/pip.conf

Upload Packages

# Build and publish with uv
cd ~/code/personal/your-package
uv build
uv publish --publish-url https://pypi.ops.eblu.me/eblume/dev/

# First time: uv will prompt for credentials

Create Users/Indices

# Login as root
uvx devpi use https://pypi.ops.eblu.me
uvx devpi login root

# Create user (prompts for password - store in 1Password)
uvx devpi user -c USERNAME email=EMAIL

# Create index inheriting from PyPI mirror
uvx devpi index -c USERNAME/dev bases=root/pypi

Verify Cache

# Check if devpi is caching
curl -s https://pypi.ops.eblu.me/+api | jq
  • devpi - Service reference