Skip to main content

Tools

What's available inside the uis-provision-host container and how to install optional tools.

The provision-host ships with a small set of always-present tools and a larger catalogue of optional CLIs you install on demand. Listing and installing happens through the ./uis tools command. The image stays small by default — you only add what your workflow needs.

Listing what's available

./uis tools list

Output is a table of every tool the system knows about, with status ✅ Built-in, ✅ Installed, or ❌ Not installed.

Built-in tools (always present)

These are baked into the image at build time. No install step needed.

IDNameWhat it does
kubectlKubernetes CLIThe standard Kubernetes command-line client. Used by every UIS deploy script.
k9sK9sTerminal UI for Kubernetes — pod logs, exec, resource browsing. Run with k9s inside ./uis shell.
helmHelmKubernetes package manager. Used by ./uis deploy for chart-based services (PostgreSQL, Grafana, Authentik, etc.).
ansibleAnsibleThe automation engine that drives every UIS deploy playbook under ansible/playbooks/.

Installable on demand

These have install scripts under provision-host/uis/tools/. Run ./uis tools install <id> to install one; the entry flips from ❌ Not installed to ✅ Installed in ./uis tools list.

IDNameDescriptionSizeWebsite
aws-cliAWS CLICommand-line interface for Amazon Web Services~200MBhttps://aws.amazon.com/cli/
azure-cliAzure CLICommand-line interface for Microsoft Azure~637MBhttps://docs.microsoft.com/en-us/cli/azure/
gcp-cliGoogle Cloud CLICommand-line interface for Google Cloud Platform~500MBhttps://cloud.google.com/sdk/docs/install
opentofuOpenTofuOpen-source infrastructure-as-code (Terraform fork)~30MBhttps://opentofu.org/

Bundles

Meta-installers that install a known-good set of dependencies in one command. Useful when you know what you want to do but not which individual tools are needed.

IDNameDescriptionBundlesSize
azure-aksAzure AKS dependenciesEverything ./uis platform <verb> azure-aks needsazure-cli + opentofu~667MB

Bundles are regular install scripts; re-running an install is idempotent (already-installed components are skipped). To uninstall, run ./uis tools uninstall on the individual components — the bundle's own uninstall is informational only, to avoid removing a component you still want for other purposes.

Installing a tool

# Install a single tool
./uis tools install azure-cli

# Confirm it landed
./uis tools list

# Use it
./uis exec az --version

Where the install lives

The install script invokes the upstream installer (e.g. Microsoft's aka.ms/InstallAzureCLIDeb, OpenTofu's get.opentofu.org/install-opentofu.sh) inside the running container. The new binary is written to a system path and survives restarts of the container.

What disappears on docker rm

Installed tools live inside the running container's writable layer. They survive ./uis stop / ./uis start and ./uis restart. They do not survive docker rm (or anything else that destroys the container, like ./uis pull after a major image change). If you destroy and recreate the container, re-run ./uis tools install <id> for any optional tools you need.

When you need a specific tool

You're doing…You need…Install command
Provisioning AKS via platforms/azure-aks/azure-cli, opentofu./uis tools install azure-aks (bundle)
Working with AWS resourcesaws-cli./uis tools install aws-cli
Working with Google Cloudgcp-cli./uis tools install gcp-cli
Default UIS deploys (./uis deploy <service>)nothing extra — built-ins are enough

Source of truth

The tool catalogue is defined by:

  • Built-in listprovision-host/uis/lib/tool-installation.sh:22 (BUILTIN_TOOLS).
  • Installable scriptsprovision-host/uis/tools/install-*.sh, one per tool, with TOOL_ID / TOOL_NAME / TOOL_DESCRIPTION / TOOL_CATEGORY / TOOL_SIZE / TOOL_WEBSITE metadata at the top.
  • Generated indexwebsite/src/data/tools.json, regenerated by provision-host/uis/manage/uis-docs.sh whenever a tool is added or changed.

The runtime ./uis tools list and this page are both views of the same underlying source.

Adding a new tool

This is a contributor task. See Tools system architecture for the install-script shape and the steps to add a new optional tool.