Skip to main content

What ubx is

ubx (repo: ubiquex, renamed from ubiquex-cli once the product grew past a CLI into an SDK monorepo, a conformance harness, and an MCP server) is an infrastructure change management tool. It manages the same problem Terraform and Pulumi manage — describing cloud infrastructure and applying changes to it safely — but starts from a different unit of meaning. Terraform and Pulumi are built around state: a file (or backend) that records what currently exists, diffed against a desired configuration to produce a plan. ubx is built around change. Every infrastructure change, however it’s authored — by hand, generated by an LLM, drawn as a diagram — becomes a typed, resolved, hashed, signed proposal before it ever touches real infrastructure. Current infrastructure isn’t read from a state file; it’s the fold of every proposal the ledger has accepted and applied. The ledger is the source of truth. Everything else — the files you write, the diagrams you draw, the chat you have with an assistant, the docs you read — is a frontend onto it. One sentence for the whole system: a compiler where code, diagrams, documents, and conversation are all frontends to one typed, signed intermediate representation.

Why a ledger instead of a state file

A state file answers “what exists now.” It doesn’t answer who decided a resource should exist, what they were trying to accomplish, or what tradeoffs they accepted. Those answers live in commit messages, PR descriptions, and tribal memory — if they’re recorded at all, and if they survive the state file being regenerated, migrated, or manually edited by someone under pressure. ubx’s ledger is append-only, per-stack, and typed. Every entry is a proposal: the resolved change, its cost delta, its blast radius, the invariants that were checked, a hash binding all of it together, and a signature — a PR merge, or an explicit local acceptance — proving someone with authority approved exactly that hash. Nothing applies that wasn’t signed. Nothing gets attributed to a human that an LLM actually decided; the model that helps author a change operates entirely in intent space, and a deterministic resolver computes every concrete value before a human ever signs off. Ask ubx why about any resource in the fleet and the answer traces back through a real, hash-verified chain to the proposal, the intent behind it, and the approver. This has a consequence Terraform-style state files don’t have by construction: staleness is detected, not silently ignored. If a proposal referenced live state, or a piece of infrastructure it depends on in another stack, and that dependency has since moved, the hash the proposal was signed against no longer matches reality. The proposal is stale and must be re-resolved before it can ship — not applied against infrastructure it no longer accurately describes.

Where to go next

This is the first page of the developer documentation for ubx. From here: Architecture for the trust chain end to end, Concepts for the nine building blocks this system is built from, Schema Constitution for the ratified hashing rules, Repository Map for what depends on what across the real repos, Provider System and SDK and Codegen for how a schema becomes typed bindings, Docs Pipeline for how those bindings become a published page, Workflows for the sequences that tie all of the above together in practice, Decisions for why things are the way they are, and Conventions for the rules this project’s own real incidents produced. For the full, current detail behind any of this, the real source is the repo that owns it:
  • docs/architecture.md — the complete system model: IR, ledger, proposals, execution layer, drift and revert, fleet status, and every slice built since, in the order it was built.
  • docs/schema.md — the proposal and IR wire schema, and the canonical hashing rules. The most load-bearing document in the project.
  • docs/plan.md — the wedge plan, slices, milestones, and changelog.
Those stay next to the code they describe. This site’s job is to explain why, in prose, for a reader meeting the system for the first time — not to duplicate them.