Skip to main content

What is ubx?

ubx is an Infrastructure-as-Code language and compiler. You write .iac files using familiar HCL-inspired syntax, and ubx compiles them to Pulumi TypeScript and deploys your infrastructure. The core innovation: output wiring is a first-class language feature. Cloud resource outputs wire directly into Helm charts, ArgoCD configs, and other resources — with no manual copy-paste, no pipeline glue, no External Secrets Operator.
Part of the Ubiquex ecosystem.

The Problem

Every team managing cloud infrastructure hits the same wall:
Terraform apply
    → manually copy RDS endpoint
    → paste into Helm values.yaml
    → commit, push, wait for ArgoCD
This handoff is manual, error-prone, and breaks every time infrastructure changes. ubx makes output wiring a first-class language feature.

How It Works

# Provision an RDS instance
unit "aws_rds_instance" "db" {
  engine         = "postgres"
  instance_class = "db.t3.micro"
  username       = "admin"
  password       = secret("aws_secrets_manager", "prod/db/password")
}

# Deploy a Helm chart — db endpoint flows in automatically
deploy "helm" "backend" {
  chart     = "my-backend"
  namespace = "backend"
  values = {
    database = {
      host = ~unit.aws_rds_instance.db.endpoint  # Pending<string>
    }
  }
}

# Export the endpoint for other stacks
output "db_endpoint" {
  value       = ~unit.aws_rds_instance.db.endpoint
  description = "RDS connection endpoint"
}
The ~ sigil marks a Pending&lt;T&gt; value — resolves at apply time. ubx compiles this to correct Pulumi Output&lt;T&gt;.apply() chains. No depends_on. No pipeline glue.

Block Types

BlockRoleEquivalent
unitSingle cloud resourceTerraform resource
componentReusable componentTerraform module
deployPush-based deployment (Helm)(none)
syncPull-based GitOps (ArgoCD/Flux)(none)
inputInput variableTerraform variable
localComputed local valueTerraform locals
dataQuery existing cloud resourceTerraform data
outputStack outputTerraform output
policyCompile-time compliance rules(none)

Key Features

HCL-inspired syntax

Familiar block-based syntax for Terraform users. Write .iac files, not TypeScript.

`Pending<T>` type system

The ~ sigil marks async values. ubx tracks propagation and generates correct Output&lt;T&gt; chains.

Native output wiring

Wire database endpoints into Helm charts and GitOps configs — as a language feature.

AI-powered commands

ubx explain, ubx fix, ubx suggest, ubx review, ubx upgrade — Claude in your IaC workflow.

Built-in testing

Write .test.iac files and run ubx test — no external test framework needed.

Policy as code

policy blocks enforce compliance rules at compile time — no OPA, no external tools.

Supported Clouds

ProviderResources
AWS1,672+ resources
GCP1,217+ resources
Azure2,334+ resources
KubernetesHelm, Kustomize, ArgoCD, Flux

Next Steps

Quick Start

Deploy your first stack in 5 minutes

Installation

Prerequisites and install instructions

Language Reference

All block types and syntax

CLI Reference

All ubx commands