appenv¶
appenv is a single Python file that pins packages to exact versions and exposes their binaries via symlinks. Drop it into a repository, commit it, and every checkout gets the same tools at the same versions — locally and on remote machines.
Core Concepts¶
Single-file deployment:
appenv.pyis the entire tool — drop it into any repositorySymlink dispatch:
./http(wherehttp → appenv) runs thehttpbinary from the pinned venvReproducible everywhere: commit
appenv,pyproject.toml, anduv.lock— every checkout gets identical versionsMultiple binaries: create additional symlinks to expose more tools from the same venv
Project Structure¶
.
├── appenv # Main application entrypoint
├── pyproject.toml # Project configuration and dependencies
├── docs/ # Documentation
│ ├── index.md
│ ├── user/
│ └── dev/
├── src/ # Source code
│ └── appenv.py
└── tests/ # Test suite
Conventions¶
The appenv script requires Python 3.9+, managed environments require 3.10+.
uv 0.5.0+ is auto-installed if not found.
The appenv filename becomes the CLI command via symlink dispatch —
./httpwherehttp → appenvpyproject.tomlmust be present next to the appenv fileDependencies are resolved and locked by uv into
uv.lock
Getting Started¶
New to appenv? Start with the Common Workflows — practical examples for setting up a project, adding dependencies, and integrating with CI/CD.
For reference material, see Commands Reference and Locking Behavior.