Operator Devtools¶
Centrally pinned runtimes and CLIs for the golden operator shell.
Single pin file¶
operator/devtools/versions.toml
is the only place to bump versions. Consumers:
| Consumer | How |
|---|---|
Ansible operator-shell (--tags devtools) |
Stages + runs install.sh |
| WSL / Linux bootstrap | bootstrap.sh calls install.sh |
| Windows | sync-windows.ps1 |
What is installed¶
| Piece | Manager | Notes |
|---|---|---|
| Python 3.13 / 3.12 / 3.11 | uv | Matches monorepo uv run |
| Node 22 + npm | mise | No nvm/fnm in golden ~/.zshrc |
| Flutter Version Manager | fvm | CLI only; Flutter SDK not pre-downloaded |
gh, jq, yq, rg, fd, lazygit, delta |
mise | Tier-1 operator CLIs |
ruff, pre-commit |
uv tool | Global tools via uv |
| Go | mise | Tier-2 |
just |
mise | Tier-2 task runner |
| Rust | rustup | Default stable toolchain |
sops / age |
GitHub release → ~/.local/bin |
Complements SOPS_AGE_KEY_FILE |
Golden ~/.gitconfig |
chezmoi dot_gitconfig |
Delta pager / aliases |
user.name / user.email |
Ansible --tags git-identity |
From secrets/operator/git-identity.sops.yaml → ~/.gitconfig.local |
Shell activation: mise activate zsh + existing direnv hook in
dot_zshrc.
Host scope¶
Installed on all patching_targets except:
graylog—operator_shell_install_devtools: falseoctoprint—operator_shell_install_devtools: false
Plus Windows / WSL via bootstrap / sync scripts.
Bump workflow¶
- Edit
operator/devtools/versions.toml. - PR + merge (or push-mode apply from the branch).
- Apply:
ansible-playbook … operator-shell.yml --tags devtools --limit 'patching_targets:!graylog:!octoprint'. - WSL:
./operator/dotfiles/bootstrap.sh(or re-runoperator/devtools/install.sh). - Windows:
.\operator\devtools\sync-windows.ps1.
Spot checks¶
uv python list
node -v && npm -v
mise ls
gh --version
rg --version
command -v fvm
go version
just --version
sops --version
age --version
rustc --version
git config --get user.name
git config --get user.email
Git identity¶
Fleet user.name / user.email come from
secrets/operator/git-identity.sops.yaml
via operator-shell tag git-identity (also runs with chezmoi). Do not
hand-edit ~/.gitconfig.local on hosts.
Out of scope¶
- Fleet-wide Flutter SDK download
- Replacing system / Ansible Python
- graylog / octoprint runtimes
- Docker Engine / 1Password CLI
- nvm / fnm in the golden profile (use
~/.zshrc.localonly if unavoidable)