wxctl manages IBM product resources declaratively. You declare the resources you care about; wxctl discovers every prerequisite, resolves every cross-service identifier, and executes in the right order — across IBM products. The goal is the full IBM product portfolio; watsonx is where it starts.

The problem

Deploying across IBM products means manually discovering prerequisites, ordering API calls correctly, and mapping incompatible identifier formats (UUID, GUID, href, CRN) across service boundaries. Miss one dependency and the whole chain fails. Change environments and every hardcoded ID breaks.

How wxctl solves it

You specify only the resources you care about. wxctl does the rest:
Partial YAML → Closure → Reconcile → Plan → Execute (with late-bound IDs)
1

Validate

Parse configs, check schemas, extract dependency references.
2

Closure

Compute all transitive prerequisites from your targets.
3

Reconcile

Diff desired state against what exists remotely.
4

Plan

Produce create/update/delete operations in topological order.
5

Execute

Run concurrently, resolving ${kind.ref_name} into the correct API-specific format at call time.
You write 2 resources, wxctl computes 10. The same YAML works in dev, staging, and prod — zero embedded IDs.
This is not infrastructure-as-code. Terraform provisions VMs and networks. wxctl manages product resources — AI agents, governance policies, data catalogs, object storage — that span services with incompatible identifier schemes.

Next steps

Installation

Build the wxctl binary and configure a profile.

Quickstart

Declare resources and run your first plan.