# Infrastructure as code

Describe a project environment in TypeScript, Go or Python, preview the plan and apply it with ubctl.

Canonical URL: https://unbroker.cloud/changelog/2026-10-22-infrastructure-as-code
Published: 2026-10-22
Tags: Apps

## Related reading

- [Cloud Apps](https://unbroker.cloud/deploy)
- [Deploy from Git](https://docs.unbroker.cloud/guides/deploy-from-git)

A project environment can now live next to your code in `.unbroker/`, written in TypeScript, Go or Python with the public `@unbroker/iac` SDK. `ubctl` evaluates the file on your machine or CI runner and sends only the validated result to Unbroker.

It covers projects, repository and image services, variables, domains, scaling limits, health checks and persistent volumes.

#### Plan, then apply

- **Pull** the current state of an existing environment to start from what is already running. Secret values are never exported.
- **Plan** shows every change before anything happens. Saved plans are encrypted and refused if the environment changed after they were made.
- **Apply** asks for confirmation before anything destructive, then deploys only the services whose runtime changed, in dependency order. Renames, domain changes and other metadata do not trigger a deploy.

#### Several repositories, one project

Named partials let each repository own its own services in a shared project. An apply only touches the services its partial owns, and it can still reference services managed elsewhere. Projects connected to GitHub resolve their installation automatically.

Read the [infrastructure as code guide](https://docs.unbroker.cloud/cli/infrastructure-as-code) and the [CI automation guide](https://docs.unbroker.cloud/guides/automate-iac) to get started.
