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
11 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 |
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
11 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 |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
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
11 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 |
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
11 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 |
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. Default install arg is nixpkgs#<bin_name>.
System / OS
nix
flakes
hermetic-support
11 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. Default install arg is nixpkgs#<bin_name>.
Installs packages via nix profile install using flakes. Set nix_profile for a custom profile, nix_state_dir for isolated state/cache. Default install arg is nixpkgs#<bin_name>.
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 |
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
10 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
11 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 |
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
11 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 |
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
11 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 |
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
11 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 |
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
11 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 |
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. |
📦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
11 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 |
install_timeout
|
int |
120 |
version_timeout
|
int |
10 |
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
11 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 |
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
11 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 |
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
11 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 |
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
11 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 |
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 JS runtime under abxpkg/js/chrome/. The resolved binary path is the unpacked manifest.json.
Browser Runtime
chrome
extensions
11 fields
1 env vars
🧩ChromeWebstoreProvider
chromewebstore · from abxpkg import chromewebstoreDownloads, unpacks, and caches Chrome Web Store extensions using the packaged JS runtime under abxpkg/js/chrome/. The resolved binary path is the unpacked manifest.json.
Downloads, unpacks, and caches Chrome Web Store extensions using the packaged JS runtime under abxpkg/js/chrome/. 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 |
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.
Browser Runtime
browsers
npm-bootstrap
sudo
11 fields
1 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.
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.
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 |
install_timeout
|
int |
120 |
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. |
🎭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.
Browser Runtime
browsers
npm-bootstrap
11 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.
Bootstraps @puppeteer/browsers through NpmProvider, then uses its CLI to install managed browsers. Resolution uses semantic version ordering, not lexicographic string sorting.
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 |
"puppeteer-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 |
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
11 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 |
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
11 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 |
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
11 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 |
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,uv,pnpm,puppeteer,gem,goget,cargo,brew,playwright,apt,nix,docker,pip,npm,bun,yarn,deno,chromewebstore,bash |
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. |