Add devpi PyPI caching proxy role for indri #9

Merged
eblume merged 3 commits from feature/devpi-pypi-proxy into main 2026-01-15 08:31:10 -08:00
Owner

Summary

  • Add ansible role for devpi-server as a transparent PyPI caching proxy
  • LaunchAgent with KeepAlive runs via mise x -- devpi-server
  • Listens on port 3141, data stored in ~/devpi
  • Health checks added to indri-services-check script

Manual Setup Required (on indri, before provisioning)

  1. Add to ~/.config/mise/config.toml:
    [tools]
    "pipx:devpi-server" = "latest"
    "pipx:devpi-web" = "latest"
    "pipx:devpi-client" = "latest"
    
  2. Run mise install
  3. Initialize: mise x -- devpi-init --serverdir ~/devpi

Post-Provisioning

  • Set up Tailscale service pypi on port 443 → 3141
  • Configure client pip.conf with index-url

Test plan

  • Ansible syntax check passes
  • Dry-run: mise run provision-indri -- --check --diff
  • Apply: mise run provision-indri
  • Health check: mise run indri-services-check

🤖 Generated with Claude Code

## Summary - Add ansible role for devpi-server as a transparent PyPI caching proxy - LaunchAgent with KeepAlive runs via `mise x -- devpi-server` - Listens on port 3141, data stored in `~/devpi` - Health checks added to `indri-services-check` script ## Manual Setup Required (on indri, before provisioning) 1. Add to `~/.config/mise/config.toml`: ```toml [tools] "pipx:devpi-server" = "latest" "pipx:devpi-web" = "latest" "pipx:devpi-client" = "latest" ``` 2. Run `mise install` 3. Initialize: `mise x -- devpi-init --serverdir ~/devpi` ## Post-Provisioning - Set up Tailscale service `pypi` on port 443 → 3141 - Configure client pip.conf with index-url ## Test plan - [x] Ansible syntax check passes - [x] Dry-run: `mise run provision-indri -- --check --diff` - [x] Apply: `mise run provision-indri` - [x] Health check: `mise run indri-services-check` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Set up devpi-server as a transparent PyPI caching proxy on indri,
accessible via Tailscale at pypi.tail8d86e.ts.net.

- Add ansible role with LaunchAgent (KeepAlive service via mise x)
- Add health checks to indri-services-check script
- Configure to listen on port 3141, data stored in ~/devpi

Note: Manual setup required on indri before provisioning:
1. Add devpi packages to ~/.config/mise/config.toml
2. Run mise install && mise x -- devpi-init --serverdir ~/devpi
3. Set up Tailscale service after ansible provisioning

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
eblume force-pushed feature/devpi-pypi-proxy from 596eedfbd0 to 842df27532 2026-01-15 06:45:39 -08:00 Compare
eblume force-pushed feature/devpi-pypi-proxy from 842df27532 to f72e0f57b6 2026-01-15 06:56:44 -08:00 Compare
- Create devpi_metrics ansible role that collects metrics from devpi's
  +status endpoint and writes them in Prometheus textfile format
- Add Grafana dashboard for devpi with panels for status, cache hit/miss
  rates, search index queue, and cache sizes
- Use jq for robust JSON parsing of the devpi status response

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
User scripts belong in the user's bin directory, not in homebrew's bin.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Author
Owner

subnote, not worth fixing, the mise.toml in the pr body is not quite right. see zk.

subnote, not worth fixing, the mise.toml in the pr body is not quite right. see zk.
eblume merged commit d8a0ef6482 into main 2026-01-15 08:31:10 -08:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
eblume/blumeops!9
No description provided.