Praxis is in alpha. The supported API is praxis.io/alpha, and the contract can change while Praxis is in alpha.About the alpha contract
CUE templates
Praxis templates are CUE values with optional variables and data sections plus a required resources section. CUE provides types, constraints, defaults, composition, and validation before any provider call is made.
variables: { application: string & =~"^[a-z][a-z0-9-]{2,30}$" environment: "dev" | "staging" | "prod" region: string | *"us-west-2"}
resources: archive: { apiVersion: "praxis.io/alpha" kind: "S3Bucket" metadata: { name: "\(variables.application)-\(variables.environment)-archive" labels: team: "payments" } spec: { region: variables.region versioning: true encryption: { enabled: true algorithm: "AES256" } tags: { application: variables.application environment: variables.environment } }}Resource shape
Section titled “Resource shape”Every resource uses the same outer envelope:
| Field | Purpose |
|---|---|
apiVersion | The current contract, praxis.io/alpha |
kind | A registered Praxis resource kind |
metadata.name | Stable logical name used by the template and driver |
metadata.labels | Praxis metadata for organization and selection |
spec | Provider-specific desired state validated by the resource schema |
lifecycle | Optional ownership, drift, and deletion policy |
Variables and values
Section titled “Variables and values”Supply variables with repeated flags or a JSON values file:
praxis plan stack.cue \ --account prod \ --var application=payments \ --var environment=prod
praxis plan stack.cue --account prod -f prod.vars.jsonCUE validation runs before the plan. Missing variables, invalid enums, and constraint violations fail without touching AWS.
Discover schemas
Section titled “Discover schemas”praxis list schemaspraxis get schema S3Bucketpraxis get schema S3Bucket -o jsonThe CLI embeds the CUE schemas, so discovery does not require a running Praxis environment.