env
abxpkg
A Python library and CLI for installing & managing packages across a wide variety of package managers.
aptbrewpipuvnpmpnpmyarnbundenocargogemgogetnixdockerbashchromewebstorepuppeteerplaywrightpyinfraansibleenv
Quick Start
Pick a provider below to auto-fill an example command, or use
abxpkg directly from the CLI.
Expand to see install + library usage
pip install abxpkg
# or
uv tool add abxpkg
# CLI
abxpkg --version
abxpkg version
abxpkg list
abxpkg install yt-dlp
abxpkg update yt-dlp
abxpkg uninstall yt-dlp
abxpkg load yt-dlp
# Select specific providers / re-order provider precedence
abxpkg install --binproviders=env,uv,pip,apt,brew prettier
env ABXPKG_BINPROVIDERS=env,uv,pip,apt,brew abxpkg install yt-dlp
# Customize install location
abxpkg --lib=~/my-abx-lib install yt-dlp
env ABXPKG_LIB_DIR=/tmp/abxlib abxpkg install yt-dlp
# Dry-run mode
abxpkg install --dry-run some-package
env ABXPKG_DRY_RUN=1 abxpkg install some-package
PATH Fallback
1 provider(s)
๐EnvProvider
env · from abxpkg import env
Read-only fallback that searches the existing $PATH for binaries already installed on the host. Does not install anything.
PATH Fallback
path-only
no-install
read-only
13 fields
0 env vars
๐EnvProvider
env · from abxpkg import envRead-only fallback that searches the existing $PATH for binaries already installed on the host. Does not install anything.
Read-only fallback that searches the existing $PATH for binaries already installed on the host. Does not install anything.
Example Usage
abxpkg --binproviders=env install curl
env ABXPKG_BINPROVIDERS=env abxpkg install curl
from abxpkg import Binary, env
bin = Binary(name='curl', binproviders=[env]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"env" |
PATH
|
str |
"$PATH" |
INSTALLER_BIN
|
str |
"which" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.config/abx/lib/env") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
System / OS
4 provider(s)
๐งAptProvider
apt · from abxpkg import apt
Installs packages via Debian / Ubuntu's apt-get. Always runs as root and targets the host package database. Shells out to apt-get directly.
System / OS
linux
root
no-hermetic
17 fields
0 env vars
๐งAptProvider
apt · from abxpkg import aptInstalls packages via Debian / Ubuntu's apt-get. Always runs as root and targets the host package database. Shells out to apt-get directly.
Installs packages via Debian / Ubuntu's apt-get. Always runs as root and targets the host package database. Shells out to apt-get directly.
Example Usage
abxpkg --binproviders=apt install wget
env ABXPKG_BINPROVIDERS=apt abxpkg install wget
from abxpkg import Binary, apt
bin = Binary(name='wget', binproviders=[apt]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"apt" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"apt-get" |
euid
|
int | None |
0 |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
apt_gpg_keys
|
dict |
{} |
apt_sources
|
dict |
{} |
apt_system_groups
|
dict |
{} |
apt_system_users
|
dict |
{} |
Provider-specific Env Vars
๐บBrewProvider
brew · from abxpkg import brew
Installs packages via Homebrew on macOS/Linuxbrew. Uses the host brew prefix for discovery and shells out to brew directly. No isolated hermetic Homebrew cellar.
System / OS
macos
linuxbrew
postinstall-opt-in
13 fields
1 env vars
๐บBrewProvider
brew · from abxpkg import brewInstalls packages via Homebrew on macOS/Linuxbrew. Uses the host brew prefix for discovery and shells out to brew directly. No isolated hermetic Homebrew cellar.
Installs packages via Homebrew on macOS/Linuxbrew. Uses the host brew prefix for discovery and shells out to brew directly. No isolated hermetic Homebrew cellar.
Example Usage
abxpkg --binproviders=brew install yt-dlp
env ABXPKG_BINPROVIDERS=brew abxpkg install yt-dlp
from abxpkg import Binary, brew
bin = Binary(name='yt-dlp', binproviders=[brew]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"brew" |
PATH
|
str |
"/home/linuxbrew/.linuxbrew/bin:/opt/homebrew/bin:/usr/local/bin" |
INSTALLER_BIN
|
str |
"brew" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("/home/linuxbrew/.linuxbrew") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_BREW_ROOT |
unset |
Overrides brew_prefix (discovery only). |
๐ณDockerProvider
docker · from abxpkg import docker
Pulls Docker images and writes a local shim wrapper that runs docker run .... Binary version is parsed from the image tag, so semver-like tags work best. Pass image refs as install_args.
System / OS
docker
image
shim
13 fields
1 env vars
๐ณDockerProvider
docker · from abxpkg import dockerPulls Docker images and writes a local shim wrapper that runs docker run .... Binary version is parsed from the image tag, so semver-like tags work best. Pass image refs as install_args.
Pulls Docker images and writes a local shim wrapper that runs docker run .... Binary version is parsed from the image tag, so semver-like tags work best. Pass image refs as install_args.
Example Usage
abxpkg --binproviders=docker install hello-world
env ABXPKG_BINPROVIDERS=docker abxpkg install hello-world
from abxpkg import Binary, docker
bin = Binary(name='hello-world', binproviders=[docker]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"docker" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"docker" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.config/abx/lib/docker") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_DOCKER_ROOT |
unset |
Overrides docker_root / install_root. |
โ๏ธNixProvider
nix · from abxpkg import nix
Installs packages via nix profile install using flakes. Set nix_profile for a custom profile, nix_state_dir for isolated state/cache. Search results use the explicit official nixpkgs-unstable channel archive instead of the host registry.
System / OS
nix
flakes
hermetic-support
13 fields
2 env vars
โ๏ธNixProvider
nix · from abxpkg import nixInstalls packages via nix profile install using flakes. Set nix_profile for a custom profile, nix_state_dir for isolated state/cache. Search results use the explicit official nixpkgs-unstable channel archive instead of the host registry.
Installs packages via nix profile install using flakes. Set nix_profile for a custom profile, nix_state_dir for isolated state/cache. Search results use the explicit official nixpkgs-unstable channel archive instead of the host registry.
Example Usage
abxpkg --binproviders=nix install ffmpeg
env ABXPKG_BINPROVIDERS=nix abxpkg install ffmpeg
from abxpkg import Binary, nix
bin = Binary(name='ffmpeg', binproviders=[nix]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"nix" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"nix" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.nix-profile") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_NIX_ROOT |
unset |
Overrides nix_profile path. |
ABXPKG_NIX_PROFILE |
unset |
Legacy alias for nix_profile. |
Language Ecosystem
11 provider(s)
๐ฅBunProvider
bun · from abxpkg import bun
Installs JavaScript packages via Bun. Set bun_prefix to mirror $BUN_INSTALL. Supports both min_release_age (Bun 1.3+) and postinstall_scripts=False via --ignore-scripts.
Language Ecosystem
javascript
prefix-support
security-controls
13 fields
2 env vars
๐ฅBunProvider
bun · from abxpkg import bunInstalls JavaScript packages via Bun. Set bun_prefix to mirror $BUN_INSTALL. Supports both min_release_age (Bun 1.3+) and postinstall_scripts=False via --ignore-scripts.
Installs JavaScript packages via Bun. Set bun_prefix to mirror $BUN_INSTALL. Supports both min_release_age (Bun 1.3+) and postinstall_scripts=False via --ignore-scripts.
Example Usage
abxpkg --binproviders=bun install prettier
env ABXPKG_BINPROVIDERS=bun abxpkg install prettier
from abxpkg import Binary, bun
bin = Binary(name='prettier', binproviders=[bun]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"bun" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"bun" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_BUN_ROOT |
unset |
Overrides bun_prefix path. |
BUN_BINARY |
unset |
Pin the exact bun executable used. |
๐ฆCargoProvider
cargo · from abxpkg import cargo
Installs Rust crates via cargo install. Set cargo_root or use cargo_home (default $CARGO_HOME or ~/.cargo). Passes --locked by default; min_version becomes cargo install --version >=...
Language Ecosystem
rust
hermetic-support
13 fields
2 env vars
๐ฆCargoProvider
cargo · from abxpkg import cargoInstalls Rust crates via cargo install. Set cargo_root or use cargo_home (default $CARGO_HOME or ~/.cargo). Passes --locked by default; min_version becomes cargo install --version >=...
Installs Rust crates via cargo install. Set cargo_root or use cargo_home (default $CARGO_HOME or ~/.cargo). Passes --locked by default; min_version becomes cargo install --version >=...
Example Usage
abxpkg --binproviders=cargo install ripgrep
env ABXPKG_BINPROVIDERS=cargo abxpkg install ripgrep
from abxpkg import Binary, cargo
bin = Binary(name='ripgrep', binproviders=[cargo]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"cargo" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"cargo" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.cargo") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_CARGO_ROOT |
unset |
Overrides cargo_root path. |
CARGO_HOME |
unset |
Standard cargo home directory. |
๐ฆDenoProvider
deno · from abxpkg import deno
Installs JavaScript/TypeScript packages via Deno. Mirrors $DENO_INSTALL_ROOT. Deno's npm lifecycle scripts are opt-in (reverse of npm). Supports min_release_age on Deno 2.5+.
Language Ecosystem
javascript
typescript
security-controls
13 fields
2 env vars
๐ฆDenoProvider
deno · from abxpkg import denoInstalls JavaScript/TypeScript packages via Deno. Mirrors $DENO_INSTALL_ROOT. Deno's npm lifecycle scripts are opt-in (reverse of npm). Supports min_release_age on Deno 2.5+.
Installs JavaScript/TypeScript packages via Deno. Mirrors $DENO_INSTALL_ROOT. Deno's npm lifecycle scripts are opt-in (reverse of npm). Supports min_release_age on Deno 2.5+.
Example Usage
abxpkg --binproviders=deno install prettier
env ABXPKG_BINPROVIDERS=deno abxpkg install prettier
from abxpkg import Binary, deno
bin = Binary(name='prettier', binproviders=[deno]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"deno" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"deno" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_DENO_ROOT |
unset |
Overrides deno_root path. |
DENO_BINARY |
unset |
Pin the exact deno executable used. |
๐GemProvider
gem · from abxpkg import gem
Installs Ruby gems via gem install. Set gem_home / gem_bindir for hermetic installs. Generated wrapper scripts are patched to activate the configured GEM_HOME instead of the host default.
Language Ecosystem
ruby
hermetic-support
13 fields
2 env vars
๐GemProvider
gem · from abxpkg import gemInstalls Ruby gems via gem install. Set gem_home / gem_bindir for hermetic installs. Generated wrapper scripts are patched to activate the configured GEM_HOME instead of the host default.
Installs Ruby gems via gem install. Set gem_home / gem_bindir for hermetic installs. Generated wrapper scripts are patched to activate the configured GEM_HOME instead of the host default.
Example Usage
abxpkg --binproviders=gem install jekyll
env ABXPKG_BINPROVIDERS=gem abxpkg install jekyll
from abxpkg import Binary, gem
bin = Binary(name='jekyll', binproviders=[gem]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"gem" |
PATH
|
str |
"$PATH" |
INSTALLER_BIN
|
str |
"gem" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.local/share/gem") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_GEM_ROOT |
unset |
Overrides gem_home path. |
GEM_HOME |
unset |
Standard gem home directory. |
๐นGoGetProvider
goget · from abxpkg import goget
Installs Go binaries via go install. Set gopath or gobin for a hermetic workspace. Default install arg is <bin_name>@latest. Note: the provider name is goget, not go_get.
Language Ecosystem
go
hermetic-support
13 fields
2 env vars
๐นGoGetProvider
goget · from abxpkg import gogetInstalls Go binaries via go install. Set gopath or gobin for a hermetic workspace. Default install arg is <bin_name>@latest. Note: the provider name is goget, not go_get.
Installs Go binaries via go install. Set gopath or gobin for a hermetic workspace. Default install arg is <bin_name>@latest. Note: the provider name is goget, not go_get.
Example Usage
abxpkg --binproviders=goget install golangci-lint
env ABXPKG_BINPROVIDERS=goget abxpkg install golangci-lint
from abxpkg import Binary, goget
bin = Binary(name='golangci-lint', binproviders=[goget]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"goget" |
PATH
|
str |
"$PATH" |
INSTALLER_BIN
|
str |
"go" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/go") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_GOGET_ROOT |
unset |
Overrides gopath. |
GOPATH |
unset |
Standard Go workspace path. |
๐ขNodeProvider
node · from abxpkg import node
Language Ecosystem
13 fields
0 env vars
๐ขNodeProvider
node · from abxpkg import nodeExample Usage
abxpkg --binproviders=node install my-tool
env ABXPKG_BINPROVIDERS=node abxpkg install my-tool
from abxpkg import Binary, node
bin = Binary(name='my-tool', binproviders=[node]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"node" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"node" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.config/abx/lib/node") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
๐ฆNpmProvider
npm · from abxpkg import npm
Installs JavaScript packages via npm. Set npm_prefix for a hermetic prefix under <prefix>/node_modules/.bin. Supports both postinstall_scripts=False and min_release_age (on npm builds that ship --min-release-age).
Language Ecosystem
javascript
prefix-support
security-controls
14 fields
2 env vars
๐ฆNpmProvider
npm · from abxpkg import npmInstalls JavaScript packages via npm. Set npm_prefix for a hermetic prefix under <prefix>/node_modules/.bin. Supports both postinstall_scripts=False and min_release_age (on npm builds that ship --min-release-age).
Installs JavaScript packages via npm. Set npm_prefix for a hermetic prefix under <prefix>/node_modules/.bin. Supports both postinstall_scripts=False and min_release_age (on npm builds that ship --min-release-age).
Example Usage
abxpkg --binproviders=npm install prettier
env ABXPKG_BINPROVIDERS=npm abxpkg install prettier
from abxpkg import Binary, npm
bin = Binary(name='prettier', binproviders=[npm]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"npm" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"npm" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
alias_bin_dir
|
Path | None |
None |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_NPM_ROOT |
unset |
Overrides npm_prefix path. |
NPM_BINARY |
unset |
Pin the exact npm executable used. |
๐PipProvider
pip · from abxpkg import pip
Installs Python wheels via pip. Set pip_venv for a hermetic venv (auto-created on first use). Honors PIP_BINARY. Supports wheels-only installs via postinstall_scripts=False.
Language Ecosystem
python
venv-support
security-controls
13 fields
2 env vars
๐PipProvider
pip · from abxpkg import pipInstalls Python wheels via pip. Set pip_venv for a hermetic venv (auto-created on first use). Honors PIP_BINARY. Supports wheels-only installs via postinstall_scripts=False.
Installs Python wheels via pip. Set pip_venv for a hermetic venv (auto-created on first use). Honors PIP_BINARY. Supports wheels-only installs via postinstall_scripts=False.
Example Usage
abxpkg --binproviders=pip install yt-dlp
env ABXPKG_BINPROVIDERS=pip abxpkg install yt-dlp
from abxpkg import Binary, pip
bin = Binary(name='yt-dlp', binproviders=[pip]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"pip" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"pip" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_PIP_ROOT |
unset |
Overrides pip_venv path. |
PIP_BINARY |
unset |
Pin the exact pip executable used. |
๐ฆPnpmProvider
pnpm · from abxpkg import pnpm
Installs JavaScript packages via pnpm. Set pnpm_prefix for a hermetic prefix. PNPM_HOME is auto-populated so pnpm add -g works without polluting the user's shell config. Requires pnpm 10.16+ for min_release_age.
Language Ecosystem
javascript
prefix-support
security-controls
13 fields
2 env vars
๐ฆPnpmProvider
pnpm · from abxpkg import pnpmInstalls JavaScript packages via pnpm. Set pnpm_prefix for a hermetic prefix. PNPM_HOME is auto-populated so pnpm add -g works without polluting the user's shell config. Requires pnpm 10.16+ for min_release_age.
Installs JavaScript packages via pnpm. Set pnpm_prefix for a hermetic prefix. PNPM_HOME is auto-populated so pnpm add -g works without polluting the user's shell config. Requires pnpm 10.16+ for min_release_age.
Example Usage
abxpkg --binproviders=pnpm install prettier
env ABXPKG_BINPROVIDERS=pnpm abxpkg install prettier
from abxpkg import Binary, pnpm
bin = Binary(name='prettier', binproviders=[pnpm]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"pnpm" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"pnpm" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_PNPM_ROOT |
unset |
Overrides pnpm_prefix path. |
PNPM_BINARY |
unset |
Pin the exact pnpm executable used. |
๐UvProvider
uv · from abxpkg import uv
Installs Python packages via uv. Two modes: hermetic venv mode (install_root=Path(...)) or global tool mode (uv tool install). Full support for postinstall_scripts=False and min_release_age.
Language Ecosystem
python
venv-support
tool-mode
security-controls
13 fields
2 env vars
๐UvProvider
uv · from abxpkg import uvInstalls Python packages via uv. Two modes: hermetic venv mode (install_root=Path(...)) or global tool mode (uv tool install). Full support for postinstall_scripts=False and min_release_age.
Installs Python packages via uv. Two modes: hermetic venv mode (install_root=Path(...)) or global tool mode (uv tool install). Full support for postinstall_scripts=False and min_release_age.
Example Usage
abxpkg --binproviders=uv install ruff
env ABXPKG_BINPROVIDERS=uv abxpkg install ruff
from abxpkg import Binary, uv
bin = Binary(name='ruff', binproviders=[uv]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"uv" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"uv" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_UV_ROOT |
unset |
Overrides uv_venv path. |
UV_BINARY |
unset |
Pin the exact uv executable used. |
๐งถYarnProvider
yarn · from abxpkg import yarn
Installs JavaScript packages via Yarn 4 / Yarn Berry. Always operates inside a workspace dir (auto-initialized with a stub package.json and .yarnrc.yml using nodeLinker: node-modules). Yarn 4.10+ required for security flags.
Language Ecosystem
javascript
workspace
security-controls
13 fields
2 env vars
๐งถYarnProvider
yarn · from abxpkg import yarnInstalls JavaScript packages via Yarn 4 / Yarn Berry. Always operates inside a workspace dir (auto-initialized with a stub package.json and .yarnrc.yml using nodeLinker: node-modules). Yarn 4.10+ required for security flags.
Installs JavaScript packages via Yarn 4 / Yarn Berry. Always operates inside a workspace dir (auto-initialized with a stub package.json and .yarnrc.yml using nodeLinker: node-modules). Yarn 4.10+ required for security flags.
Example Usage
abxpkg --binproviders=yarn install prettier
env ABXPKG_BINPROVIDERS=yarn abxpkg install prettier
from abxpkg import Binary, yarn
bin = Binary(name='prettier', binproviders=[yarn]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"yarn" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"yarn" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
7 |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_YARN_ROOT |
unset |
Overrides yarn_prefix path. |
YARN_BINARY |
unset |
Pin the exact yarn executable used. |
Browser Runtime
3 provider(s)
๐งฉChromeWebstoreProvider
chromewebstore · from abxpkg import chromewebstore
Downloads, unpacks, and caches Chrome Web Store extensions using the packaged chromewebstore_utils.js helper. The resolved binary path is the unpacked manifest.json.
Browser Runtime
chrome
extensions
13 fields
1 env vars
๐งฉChromeWebstoreProvider
chromewebstore · from abxpkg import chromewebstoreDownloads, unpacks, and caches Chrome Web Store extensions using the packaged chromewebstore_utils.js helper. The resolved binary path is the unpacked manifest.json.
Downloads, unpacks, and caches Chrome Web Store extensions using the packaged chromewebstore_utils.js helper. The resolved binary path is the unpacked manifest.json.
Example Usage
abxpkg --binproviders=chromewebstore install ublock-origin
env ABXPKG_BINPROVIDERS=chromewebstore abxpkg install ublock-origin
from abxpkg import Binary, chromewebstore
bin = Binary(name='ublock-origin', binproviders=[chromewebstore]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"chromewebstore" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"node" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.config/abx/lib/chromewebstore") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_CHROMEWEBSTORE_ROOT |
unset |
Overrides extensions_root cache dir. |
๐ฌPlaywrightProvider
playwright · from abxpkg import playwright
Bootstraps playwright via npm, runs playwright install --with-deps, then symlinks resolved browser executables into bin_dir. Pinning playwright_root also pins PLAYWRIGHT_BROWSERS_PATH. Defaults euid=0 so --with-deps can install system packages. INSTALLER_BINARY is self-bootstrapped and does not delegate to the generic resolver.
Browser Runtime
browsers
npm-bootstrap
sudo
13 fields
2 env vars
๐ฌPlaywrightProvider
playwright · from abxpkg import playwrightBootstraps playwright via npm, runs playwright install --with-deps, then symlinks resolved browser executables into bin_dir. Pinning playwright_root also pins PLAYWRIGHT_BROWSERS_PATH. Defaults euid=0 so --with-deps can install system packages. INSTALLER_BINARY is self-bootstrapped and does not delegate to the generic resolver.
Bootstraps playwright via npm, runs playwright install --with-deps, then symlinks resolved browser executables into bin_dir. Pinning playwright_root also pins PLAYWRIGHT_BROWSERS_PATH. Defaults euid=0 so --with-deps can install system packages. INSTALLER_BINARY is self-bootstrapped and does not delegate to the generic resolver.
Example Usage
abxpkg --binproviders=playwright install chromium
env ABXPKG_BINPROVIDERS=playwright abxpkg install chromium
from abxpkg import Binary, playwright
bin = Binary(name='chromium', binproviders=[playwright]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"playwright" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"playwright" |
euid
|
int | None |
0 |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
300 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_PLAYWRIGHT_ROOT |
unset |
Overrides playwright_root AND pins PLAYWRIGHT_BROWSERS_PATH to it. |
ABXPKG_PLAYWRIGHT_INSTALL_TIMEOUT |
unset |
Overrides Playwright browser/dependency install timeout (defaults to 300s). |
๐ญPuppeteerProvider
puppeteer · from abxpkg import puppeteer
Bootstraps @puppeteer/browsers through NpmProvider, then uses its CLI to install managed browsers. Resolution uses semantic version ordering, not lexicographic string sorting. INSTALLER_BINARY is self-bootstrapped and does not delegate to the generic cross-provider resolver.
Browser Runtime
browsers
npm-bootstrap
13 fields
1 env vars
๐ญPuppeteerProvider
puppeteer · from abxpkg import puppeteerBootstraps @puppeteer/browsers through NpmProvider, then uses its CLI to install managed browsers. Resolution uses semantic version ordering, not lexicographic string sorting. INSTALLER_BINARY is self-bootstrapped and does not delegate to the generic cross-provider resolver.
Bootstraps @puppeteer/browsers through NpmProvider, then uses its CLI to install managed browsers. Resolution uses semantic version ordering, not lexicographic string sorting. INSTALLER_BINARY is self-bootstrapped and does not delegate to the generic cross-provider resolver.
Example Usage
abxpkg --binproviders=puppeteer install chrome
env ABXPKG_BINPROVIDERS=puppeteer abxpkg install chrome
from abxpkg import Binary, puppeteer
bin = Binary(name='chrome', binproviders=[puppeteer]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"puppeteer" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"browsers" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
False |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_PUPPETEER_ROOT |
unset |
Overrides puppeteer_root path. |
Shell Scripts
1 provider(s)
๐งชBashProvider
bash · from abxpkg import bash
Runs literal shell-script overrides for install/update/uninstall. Exports INSTALL_ROOT, BIN_DIR, BASH_INSTALL_ROOT, and BASH_BIN_DIR into the shell environment for those commands.
Shell Scripts
shell
literal-overrides
13 fields
1 env vars
๐งชBashProvider
bash · from abxpkg import bashRuns literal shell-script overrides for install/update/uninstall. Exports INSTALL_ROOT, BIN_DIR, BASH_INSTALL_ROOT, and BASH_BIN_DIR into the shell environment for those commands.
Runs literal shell-script overrides for install/update/uninstall. Exports INSTALL_ROOT, BIN_DIR, BASH_INSTALL_ROOT, and BASH_BIN_DIR into the shell environment for those commands.
Example Usage
abxpkg --binproviders=bash install custom-script
env ABXPKG_BINPROVIDERS=bash abxpkg install custom-script
from abxpkg import Binary, bash
bin = Binary(name='custom-script', binproviders=[bash]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"bash" |
PATH
|
str |
"" |
INSTALLER_BIN
|
str |
"bash" |
euid
|
int | None |
None |
install_root
|
Path | None |
Path("~/.config/abx/lib/bash") |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
| Variable | Default | Effect |
|---|---|---|
ABXPKG_BASH_ROOT |
unset |
Overrides bash_root state dir. |
Orchestrator
2 provider(s)
๐AnsibleProvider
ansible · from abxpkg import ansible
Delegates installs via ansible-runner. installer_module='auto' resolves to community.general.homebrew on macOS and ansible.builtin.package on Linux. No hermetic prefix support.
Orchestrator
driver
infra
13 fields
0 env vars
๐AnsibleProvider
ansible · from abxpkg import ansibleDelegates installs via ansible-runner. installer_module='auto' resolves to community.general.homebrew on macOS and ansible.builtin.package on Linux. No hermetic prefix support.
Delegates installs via ansible-runner. installer_module='auto' resolves to community.general.homebrew on macOS and ansible.builtin.package on Linux. No hermetic prefix support.
Example Usage
abxpkg --binproviders=ansible install wget
env ABXPKG_BINPROVIDERS=ansible abxpkg install wget
from abxpkg import Binary, ansible
bin = Binary(name='wget', binproviders=[ansible]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"ansible" |
PATH
|
str |
"$PATH" |
INSTALLER_BIN
|
str |
"ansible" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
๐ ๏ธPyinfraProvider
pyinfra · from abxpkg import pyinfra
Delegates installs to pyinfra operations. installer_module='auto' resolves to operations.brew.packages on macOS and operations.server.packages on Linux. No hermetic prefix support.
Orchestrator
driver
infra
13 fields
0 env vars
๐ ๏ธPyinfraProvider
pyinfra · from abxpkg import pyinfraDelegates installs to pyinfra operations. installer_module='auto' resolves to operations.brew.packages on macOS and operations.server.packages on Linux. No hermetic prefix support.
Delegates installs to pyinfra operations. installer_module='auto' resolves to operations.brew.packages on macOS and operations.server.packages on Linux. No hermetic prefix support.
Example Usage
abxpkg --binproviders=pyinfra install wget
env ABXPKG_BINPROVIDERS=pyinfra abxpkg install wget
from abxpkg import Binary, pyinfra
bin = Binary(name='wget', binproviders=[pyinfra]).install()
bin.exec(cmd=['--version'])
Constructor Fields & Defaults
| Field | Type | Default |
|---|---|---|
name
|
str |
"pyinfra" |
PATH
|
str |
"$PATH" |
INSTALLER_BIN
|
str |
"pyinfra" |
euid
|
int | None |
None |
install_root
|
Path | None |
None |
bin_dir
|
Path | None |
None |
dry_run
|
bool |
False |
postinstall_scripts
|
bool | None |
None |
min_release_age
|
float | None |
None |
package_names
|
tuple |
[] |
library_names
|
tuple |
[] |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
Provider-specific Env Vars
Environment Variables
These env vars are read once at import time and apply across every provider
(or to the abxpkg CLI itself). Explicit constructor kwargs
always override these defaults.
| Variable | Default | Effect |
|---|---|---|
ABXPKG_DRY_RUN |
0 |
Flips the shared dry_run default. Provider subprocesses are logged and skipped, install()/update() return a placeholder, uninstall() returns True. Beats DRY_RUN if both are set. |
DRY_RUN |
0 |
Alternative dry-run toggle. ABXPKG_DRY_RUN wins if both are set. |
ABXPKG_NO_CACHE |
0 |
Flips the shared no_cache default. install() skips the initial load() check and forces a fresh install path; load()/update()/uninstall() bypass cached probe results. |
ABXPKG_INSTALL_TIMEOUT |
120 |
Seconds to wait for install()/update()/uninstall() handler subprocesses. |
ABXPKG_VERSION_TIMEOUT |
10 |
Seconds to wait for version / metadata probes (--version, npm show, pip show, etc.). |
ABXPKG_POSTINSTALL_SCRIPTS |
unset |
Hydrates the provider-level default for postinstall_scripts on supporting providers (pip, uv, npm, pnpm, yarn, bun, deno, brew, chromewebstore, puppeteer). When unset, action execution falls back to the provider/action default. |
ABXPKG_MIN_RELEASE_AGE |
7 |
Hydrates the provider-level minimum release age (days) on supporting providers (pip, uv, npm, pnpm, yarn, bun, deno). When unset, action execution falls back to the provider/action default. |
ABXPKG_BINPROVIDERS |
env,node,bash,brew,nix,docker,uv,pip,npm,pnpm,puppeteer,playwright,bun,yarn,deno,chromewebstore,apt,gem,goget,cargo |
Comma-separated provider names to enable (and their order) for the abxpkg CLI. Defaults to DEFAULT_PROVIDER_NAMES from abxpkg.__init__. Example: env,uv,pip,apt,brew |
ABXPKG_LIB_DIR |
~/.config/abx/lib |
Centralized library root. When set, providers with abxpkg-managed install roots default to $ABXPKG_LIB_DIR/<provider name>. Accepts relative, tilde, and absolute paths. --global is a thin alias for --lib=None. |