Oh wow - up until recently we were building just that - a UI that you connect your cloud account to and it auto-generates Terraform under the hood, while allowing you to fully customise that Terraform if you want to (or even completely replace with your own). Here are the old docs:
https://doks.digger.dev/Also a list of startups building similar value propositions - some great products there: https://diggerdev.notion.site/DX-platforms-for-your-cloud-ac...
We however realised recently that this is not something that can be tackled in one go by a single product. Because this is multiple products solving multiple problems in one package.
We still believe that this "end state" of an OS-like layer that'd manage cloud-native services like hardware, using IaC as an "assembly language" of sorts, is inevitable. It will get built one way or another. But not as a platform from scratch; rather, as an expansion of something much smaller.
What could it be? If the "assembly language" hunch is right, then it must have something to do with IaC. We played with an idea of a tool that'd generate Terraform based on higher-level concepts as inputs. Here's one (UI): https://terrabook.io/ And another (CLI / framework): https://diggerhq.gitbook.io/trowel-docs/getting-started/what...
The framework idea still looks promising, we haven't fully explored it yet. But even with a perfect framework in place that "compiles" into Terraform, you'd still need something to take the output and make sure the changes are reflected in the target cloud account. Continuing the "assembly language" parallel, think bytecode, the missing piece of the puzzle appears to be a "runtime" for IaC.
So we are building such a runtime. Funny enough, it strongly resembles CI - you push Terraform code to Git and it gets deployed. Sort of an "orthogonal" CI pipeline to your normal application build-deploy CI/CD.
But existing CI tools are ill-suited for Terraform, because it has state and that creates potential for race conditions; while most CI tools assume stateless jobs. A class of CI/CD products for Terraform exists (Spacelift, Terraform Cloud, Atlantis) but they are more like separate full-stack CI systems. We think that having 2 CI systems for that doesn't make sense. The infrastructure of asynchronous jobs, logs etc can and should be reused. Stretching the "assembly language" parallel, this is a bit like the CPU for a yet-to-be-created "cloud PC".
So it boils down to making it possible to run Terraform in existing CI systems. This is what Digger does - check it out: https://digger.dev