wxctl
v0.1.6
Published
Declarative CLI for managing IBM product resources
Readme
Describe a scenario (demo, POC, project, use case) in plain language. Your AI coding agent turns it into a config.yaml; wxctl discovers the prerequisites, resolves every cross-service identifier, and executes in dependency order. plan previews, apply converges, test proves, destroy tears down. It manages product resources (agents, models, deployments, monitors, catalogs, buckets), not VMs and networks.
Full documentation: wxctl.randyphoa.com
Features
- Reproducible by construction. Re-applying an unchanged config is a no-op; drift is detected and reported.
- No trial-and-error IDs. Every
${kind.ref_name}reference resolves to the exact identifier each API expects: UUID, GUID, href, or CRN. - Cross-product by design. One config wires an Orchestrate agent to the watsonx.ai deployment OpenScale monitors:
examples/solutions/credit-risk-governance. - Proven live. A config declares its own
kind: testsuite;wxctl testruns it against the deployed system. - One config, both deployments. SaaS or Software (CP4D) is a profile setting, not a config rewrite.
- Agent-native. wxctl ships no LLM; any MCP client (Claude Code, Cursor, Claude Desktop) writes the config, and the deterministic engine executes it.
How it works
Every run compiles the config into a dependency DAG and converges it:
config.yaml -> Validate -> Closure -> Reconcile -> Plan -> Execute (late-bound IDs)Write the config.yaml by hand, or generate it from a sentence with the compose tools over wxctl's MCP server; the engine treats both identically. Re-running reconciles against live state and changes only what drifted. Details: declarative model and pipeline.
Installation
macOS and Linux:
curl -fsSL https://raw.githubusercontent.com/randyphoa/wxctl/main/install.sh | shWindows (PowerShell):
irm https://raw.githubusercontent.com/randyphoa/wxctl/main/install.ps1 | iexOr install globally with npm (macOS, Linux, and Windows), which skips the macOS Gatekeeper and Windows SmartScreen prompts:
npm install -g wxctlRun it once without installing with npx wxctl --help.
npm covers glibc Linux, macOS, and Windows. Alpine (musl) is not supported over npm; use the install script or build from source.
Each release ships a per-platform archive. Pick the one for your machine:
- macOS
- Apple Silicon (arm64):
wxctl-<version>-aarch64-apple-darwin.tar.gz - Intel (x86_64):
wxctl-<version>-x86_64-apple-darwin.tar.gz
- Apple Silicon (arm64):
- Linux
- x86_64:
wxctl-<version>-x86_64-unknown-linux-gnu.tar.gz - arm64:
wxctl-<version>-aarch64-unknown-linux-gnu.tar.gz
- x86_64:
- Windows
- x86_64:
wxctl-<version>-x86_64-pc-windows-msvc.zip - arm64:
wxctl-<version>-aarch64-pc-windows-msvc.zip
- x86_64:
Verify the archive against SHA256SUMS, extract it, and move the wxctl binary onto your PATH.
Build from source, upgrade, and uninstall: installation guide.
Quick start
Resources are plain YAML and reference each other with ${kind.ref_name}; wxctl resolves the order and the identifiers:
kind: tool
ref_name: calculator
name: calculator
display_name: Calculator
description: A calculator tool
source_path: ./calculator
binding:
python:
function: calculator:main
---
kind: agent
ref_name: math_agent
name: math_agent
display_name: Math Agent
description: An agent that does math
llm: groq/openai/gpt-oss-120b
style: default
tools:
- ${tool.calculator}wxctl init -f config.yaml # scaffold a profiles.yaml for the services the config needs
wxctl plan -f config.yaml # dry run, show what would change
wxctl apply -f config.yaml # converge to the config
wxctl test -f config.yaml # prove the deployed system worksFull walkthrough: quickstart.
Supported resources
wxctl manages 100 resource kinds across 11 IBM products: watsonx Orchestrate, watsonx.ai, watsonx.data, OpenScale, AI Factsheets, IBM Concert, IBM Concert Workflows, IBM Instana, IBM Planning Analytics, Cloud Object Storage, and Data & AI Common Core.
The full catalog, with per-kind fields, dependencies, and SaaS/Software availability, is generated from the CLI: resource kinds. Or run wxctl resources and wxctl explain <kind> locally, no credentials needed.
Documentation
| Topic | Page | |---|---| | Install on macOS, Linux, or Windows | Installation | | First deployment, end to end | Quickstart | | Every command and global flag | Command reference | | Every resource kind and its fields | Resource kinds | | Profiles, credentials, and authentication | Profiles and credentials | | Generate configs from a sentence | Compose | | Use wxctl from an MCP client | MCP clients | | Runnable example configs | Examples | | CI/CD and scripting | Automation | | Debug a failed run | Troubleshooting | | How wxctl relates to Terraform, Pulumi, and Ansible | How wxctl compares |
The CLI is also self-documenting: wxctl --help, wxctl resources, wxctl explain <kind>, and wxctl debug work offline or without credentials.
License
Apache License 2.0. See LICENSE for details.
