Desired-state delivery.
From source to environment.
Declare the outcome—built, tested, packaged, planned, or deployed. Terrabuild follows dependencies from source to environment, reuses results that already satisfy the graph, and runs the rest.
Declare the outcome. Let the graph determine the work.
The requested targets describe where delivery should arrive. Dependencies and target policies describe what must be true on the way there.
State the result, not the job sequence
Request a target and environment. Terrabuild expands their prerequisites, orders the work, and runs independent branches concurrently.
Recognize what is already satisfied
Inputs and artifact policies identify reusable results. Deployments remain explicit side effects, so an old cache entry never stands in for a current action.
Converge only the affected graph
A shared-library change follows dependency edges into affected applications. Unrelated delivery streams remain satisfied and stay out of the run.
A monorepo is not one release train.
The Magnus Opera workspace can move studio into a pull-request preview while catalog remains in staging. Each application follows its own path through the same dependency graph.
Terrabuild converges delivery.
Insights records what was reached.
Terrabuild resolves the requested state now. Insights explains what ran, what reached each environment, what changed between releases, and how delivery is evolving.
3 projects changed · 7 commits
1 project changed · 2 commits
Your tools do the work. Terrabuild coordinates them.
Use the included extensions for common build and deployment tools. Add another tool with an FScript file, without changing or recompiling Terrabuild.
Start with the included extensions.
Use commands for common toolchains. A custom FScript extension can define actions, defaults, project discovery, and batching rules for anything else.
Explore extensionsPin the execution environment.
Set an image on an extension to run its actions in the same container locally and in CI. Terrabuild supports Docker and Podman.