Prerequisites

wxctl is built from source with Rust 1.88 or newer.
rustc --version   # 1.88.0 or newer

Build the binary

git clone https://github.com/randyphoa/wxctl.git
cd wxctl
cargo build --release
The release binary is written to target/release/wxctl. Put it on your PATH:
cp target/release/wxctl /usr/local/bin/   # or add target/release to PATH
wxctl --help

Configure a profile

wxctl init prompts for the URL, auth type, and credentials of each service, then writes them to ~/.wxctl/config.json.
wxctl init                            # configure all services interactively
wxctl init -f config.yaml             # only the services your config needs
wxctl init -f config.yaml -p staging  # write a named profile
wxctl init --template                 # write a template with placeholders (no prompts)
--template skips the interactive prompts and writes a profile with placeholder values — useful for piped input or generating an LLM-readable starting point.

Authentication types

wxctl init writes each service’s auth_type and credentials into ~/.wxctl/config.json. See Profiles & credentials for the supported auth types — apikey, zenapikey, cp4d, hmac, and more — and the fields each one needs.

Active profile

Commands that talk to remote services (plan, apply, destroy, test) use the active profile. It is resolved in this order:
  1. The -p, --profile <name> flag
  2. The WXCTL_PROFILE environment variable
  3. ~/.wxctl/active_profile
  4. default

Next steps

Quickstart

Declare resources and run your first plan.