CLI Reference
Butler provides two CLI tools for different personas:
Overview
| CLI | Target User | Purpose |
|---|---|---|
| butlerctl | Developers, Platform Users | Manage tenant clusters |
| butleradm | Platform Operators | Manage Butler platform |
This separation follows the kubectl/kubeadm pattern, providing focused tools for each use case.
Installation
Homebrew (macOS/Linux)
brew install butlerdotdev/tap/butler
Direct Download (macOS/Linux)
# Detect OS and architecture
OS=$(uname -s | tr '[:upper:]' '[:lower:]')
ARCH=$(uname -m)
[[ "$ARCH" == "x86_64" ]] && ARCH="amd64"
[[ "$ARCH" == "aarch64" ]] && ARCH="arm64"
# Download latest release
curl -sLO "https://github.com/butlerdotdev/butler-cli/releases/latest/download/butler_${OS}_${ARCH}.tar.gz"
tar xzf butler_${OS}_${ARCH}.tar.gz
# Install
sudo mv butleradm butlerctl /usr/local/bin/
Chocolatey (Windows)
choco install butler-cli
Direct Download (Windows)
$arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "amd64" }
Invoke-WebRequest -Uri "https://github.com/butlerdotdev/butler-cli/releases/latest/download/butler_windows_${arch}.tar.gz" -OutFile butler.tar.gz
tar xzf butler.tar.gz
Move-Item butleradm.exe, butlerctl.exe -Destination "$env:LOCALAPPDATA\Microsoft\WindowsApps\"
Verify Installation
butlerctl version
butleradm version
Quick Reference
butlerctl Commands
# Cluster operations
butlerctl cluster list # List clusters
butlerctl cluster create my-cluster # Create cluster
butlerctl cluster get my-cluster # Get cluster details
butlerctl cluster scale my-cluster --workers 5 # Scale workers
butlerctl cluster kubeconfig my-cluster # Get kubeconfig
butlerctl cluster export my-cluster # Export for GitOps
butlerctl cluster destroy my-cluster # Destroy cluster
butleradm Commands
# Platform operations
butleradm bootstrap harvester --config cfg.yaml # Bootstrap platform
butleradm status # Check health
butleradm provider list # List providers
butleradm provider validate harvester-prod # Test connectivity
Configuration
Both CLIs use the standard kubeconfig for connecting to the management cluster:
# Use default kubeconfig
butlerctl cluster list
# Use specific kubeconfig
butlerctl cluster list --kubeconfig ~/.butler/mgmt-kubeconfig
# Use KUBECONFIG environment variable
export KUBECONFIG=~/.butler/mgmt-kubeconfig
butlerctl cluster list
Output Formats
Both CLIs support multiple output formats:
# Table (default)
butlerctl cluster list
# YAML
butlerctl cluster list -o yaml
# JSON
butlerctl cluster list -o json
Shell Completion
Bash
butlerctl completion bash > /etc/bash_completion.d/butlerctl
butleradm completion bash > /etc/bash_completion.d/butleradm
Zsh
butlerctl completion zsh > "${fpath[1]}/_butlerctl"
butleradm completion zsh > "${fpath[1]}/_butleradm"
Fish
butlerctl completion fish > ~/.config/fish/completions/butlerctl.fish
butleradm completion fish > ~/.config/fish/completions/butleradm.fish
See Also
- butlerctl Reference - Full command reference
- butleradm Reference - Full command reference
- Getting Started - Hands-on guide