A deployment lockfile
Desired state in git, actual state in the cloud. git log is the deploy
history and git revert is a rollback.


$ evolve-deploy apply deploy/tst.yaml
purchase 27ec167 container-app/evolve-tst-purchase c2a1950 -> 27ec167
site 27ec167 container-app/evolve-tst-site 5367b03 -> 27ec167
container-app/evolve-tst-purchase 27ec167 in 1m21s container-app/evolve-tst-site 27ec167 in 1m27s
done in 1m45sA deployment lockfile
Desired state in git, actual state in the cloud. git log is the deploy
history and git revert is a rollback.
Nothing else installed
One binary. No cloud CLI, no Terraform, no runtime — and no state file to lose, corrupt or lock.
A plan you can read
diff resolves every reference and checks every image without touching
anything, so a typo is found before a release, not during one.
Blue-green where it counts
Stage the new version on the side carrying no traffic, run a smoke test against the whole staged stack, then switch in one write.
This came out of the Evolve Platform, where it deploys composable commerce stacks across three clouds. Nothing in it knows that.
It has no opinion about your application, your language or your framework. If your infrastructure is declared in Terraform and your workloads run on ECS, Lambda, Cloud Run, Container Apps, Container App Jobs or Azure Functions, it will set the image and the environment on them and leave everything else alone. That is the whole contract, and it is deliberately a small one.