A field report from building Pythonaibrain-Warden — an npm-inspired dependency and environment manager for Python with its own lock file, its own virtual environments, and a few opinions pip doesn't share.

The itch

Python's dependency story is not broken, exactly. It's plural. pip installs things. venv isolates things. pip-tools locks things. poetry and pdm try to do all three with opinions about how. If your project needs two different versions of the same library for two different scripts — a legacy report generator still pinned to numpy==1.24 sitting next to a new one that needs numpy>=1.26 — none of them have a clean answer. You get a second virtualenv, a README note nobody reads, and a slow drift toward "just don't touch that script."

I wanted something narrower and more opinionated: own the whole vertical slice — manifest, lock file, environments, and the install step — well enough that I could make specific, sharp decisions instead of general, safe ones. That became Warden.

This isn't a pitch. It's a walkthrough of what I actually built, and — more usefully — three bugs I caught by actually running the thing, not by reading the code and nodding.