CLI for DevOps tools installation
Project description
DevToolPack
One command to set up your entire DevOps environment — on any machine, any OS, any shell.
The problem it solves
You join a new project. The README says "install Terraform, kubectl, AWS CLI, and Docker before you start." You spend the next hour hunting download pages, unzipping archives, figuring out why terraform isn't on your PATH, and wondering why the version you grabbed is different from what CI uses.
DevToolPack removes that friction. One CLI, one command per tool, automatic PATH wiring — and it works the same way on Windows, macOS, and Linux (including Arch-based distros like CachyOS).
How much time does it actually save?
Manual environment setup for a typical DevOps stack takes 45–90 minutes on a fresh machine:
| Task | Manual | DevToolPack |
|---|---|---|
| Install Terraform | ~10 min | devpack install terraform |
| Install kubectl | ~8 min | devpack install kubectl |
| Install AWS CLI | ~12 min | devpack install awscli |
| Install Go | ~10 min | devpack install golang |
| Install Rust | ~8 min | devpack install rust |
| Configure PATH for all tools | ~15 min | automatic |
| Verify everything works | ~10 min | devpack doctor |
| Total | ~73 min | < 5 min |
That's not just onboarding time. It's every time you provision a CI runner, spin up a dev container, or set up a new machine.
Quick start
pip install devtoolpack
Install a tool:
devpack install terraform
devpack install kubectl
devpack install golang
Check your environment:
devpack doctor
List everything available:
devpack list-tools
Supported tools
| Tool | Method | Windows | Linux | macOS |
|---|---|---|---|---|
| Terraform | Binary | ✅ | ✅ | ✅ |
| AWS CLI | Binary/MSI | ✅ | ✅ | ✅ |
| kubectl | Binary | ✅ | ✅ | ✅ |
| Git | Binary/pkg manager | ✅ | ✅ | ✅ |
| AWS SAM CLI | Binary | ✅ | ✅ | ✅ |
| LocalStack | pip | ✅ | ✅ | ✅ |
| AWS CDK | npm | ✅ | ✅ | ✅ |
| Docker | Installer/script | ✅ | ✅ | — |
| Rust | rustup | ✅ | ✅ | ✅ |
| Go | Binary | ✅ | ✅ | ✅ |
Linux package manager support: apt, pacman (Arch/CachyOS/Manjaro), dnf, yum, zypper.
Docker on macOS requires manual installation via Docker Desktop.
Shell support
DevToolPack writes PATH entries to the right config file automatically:
| Shell | Config file |
|---|---|
| bash | ~/.bashrc |
| zsh | ~/.zshrc |
| fish | ~/.config/fish/config.fish |
| PowerShell | Microsoft.PowerShell_profile.ps1 |
| cmd.exe | Windows registry (HKCU\Environment) |
Changes take effect in the current session immediately (no restart needed) and persist across new sessions.
Automate with a hook
If your team uses Kiro, you can wire DevToolPack into a postTaskExecution hook so every new environment is validated automatically after setup tasks complete:
{
"name": "Verify DevOps environment",
"version": "1.0.0",
"description": "Run devpack doctor after any setup task completes",
"when": {
"type": "postTaskExecution"
},
"then": {
"type": "runCommand",
"command": "devpack doctor"
}
}
Save this as .kiro/hooks/verify-env.json and devpack doctor will run automatically after each task — catching missing tools before they block anyone.
Project structure
devpack/
├── cli.py # Typer entry point
├── commands/ # install, doctor, list-tools
├── tools/ # One file per tool (terraform.py, kubectl.py, …)
├── installer/ # Download + extraction engine
├── env/ # PATH management, shell detection
├── doctor/ # Installation validator
└── utils/ # Logger
configs/
└── tools.yaml # Versions and download URLs per OS/arch
Tool configuration lives in configs/tools.yaml. URL resolution follows the pattern <os>_<arch>_url → <os>_url → url, so adding arm64 support for a new tool is a one-line YAML change.
Development
git clone https://github.com/Emilio-Gordillo-Esparragoza/devtool-pack.git
cd devtool-pack
pip install -e ".[dev]"
Run tests:
pytest -q
Run tests with coverage:
pytest --cov=devpack --cov-report=term-missing
Lint:
ruff check devpack tests
Add a new tool: see CONTRIBUTING.md.
License
Apache 2.0 — see LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file devtoolpack-0.2.0.tar.gz.
File metadata
- Download URL: devtoolpack-0.2.0.tar.gz
- Upload date:
- Size: 15.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
898c94b8a22c4f8902af8698cf8e41a86efb4f64717be49de9a33c75c4871959
|
|
| MD5 |
49757820344750cc4c3c0c7da8156880
|
|
| BLAKE2b-256 |
37c5b04942ca0e6a787f90a257dd1703d87af7908c7f946ba5774ee29ef94c55
|
Provenance
The following attestation bundles were made for devtoolpack-0.2.0.tar.gz:
Publisher:
python-publish.yml on Emilio-Gordillo-Esparragoza/devtool-pack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devtoolpack-0.2.0.tar.gz -
Subject digest:
898c94b8a22c4f8902af8698cf8e41a86efb4f64717be49de9a33c75c4871959 - Sigstore transparency entry: 1810843878
- Sigstore integration time:
-
Permalink:
Emilio-Gordillo-Esparragoza/devtool-pack@4d3e9117634809f6a27d965faefe5dff2af1955c -
Branch / Tag:
refs/tags/v.0.2.1 - Owner: https://github.com/Emilio-Gordillo-Esparragoza
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@4d3e9117634809f6a27d965faefe5dff2af1955c -
Trigger Event:
release
-
Statement type:
File details
Details for the file devtoolpack-0.2.0-py3-none-any.whl.
File metadata
- Download URL: devtoolpack-0.2.0-py3-none-any.whl
- Upload date:
- Size: 25.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0361a5ef69028567806423ebff6796d9fe2e57ab13cc55b22cd1512432201187
|
|
| MD5 |
fbd76d4693676847912cdc881fa07a0b
|
|
| BLAKE2b-256 |
453f52c69221b89c7fcb4aae5d88f5c98cb6018e07f2af2d76b2f491e2ab19d3
|
Provenance
The following attestation bundles were made for devtoolpack-0.2.0-py3-none-any.whl:
Publisher:
python-publish.yml on Emilio-Gordillo-Esparragoza/devtool-pack
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devtoolpack-0.2.0-py3-none-any.whl -
Subject digest:
0361a5ef69028567806423ebff6796d9fe2e57ab13cc55b22cd1512432201187 - Sigstore transparency entry: 1810843953
- Sigstore integration time:
-
Permalink:
Emilio-Gordillo-Esparragoza/devtool-pack@4d3e9117634809f6a27d965faefe5dff2af1955c -
Branch / Tag:
refs/tags/v.0.2.1 - Owner: https://github.com/Emilio-Gordillo-Esparragoza
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@4d3e9117634809f6a27d965faefe5dff2af1955c -
Trigger Event:
release
-
Statement type: