What behold is
behold is a live control plane over a chant estate. chant compiles TypeScript into spec-native infrastructure output; behold reads what chant declared and what the cloud reports, and shows you the difference.
chant source ──build/lint──▶ graph IR ──behold──▶ live graph + drift + (delegated) actions (deterministic) (server + browser)The mixed estate is the point
Section titled “The mixed estate is the point”behold shows the estate that spans substrates: an EKS cluster declared in CloudFormation and the Kubernetes Service running on it, beside any Argo CD or Flux project.
Each substrate has its own kind of truth, and behold keeps them distinct rather than flattening:
| substrate | what “deployed” means there |
|---|---|
| AWS | CloudFormation lists the resource, and the last stack operation succeeded |
| Kubernetes | the object exists, its owned Pods are running, and chant’s field manager still owns the fields it wrote |
| Azure / GCP | the resource answered a read; there is no deploy object to ask |
That last row is why component status reads from a resource rollup rather than a stack: on a substrate with no deployment object, the stack cannot be the source of truth, because there isn’t one.
Read-only core, delegated writes
Section titled “Read-only core, delegated writes”behold writes nothing to a cloud or to your source itself. Every write it offers is a command it starts for you, run by a tool you already trust.
- Every view is a read:
chant graph, snapshots, live describes. Viewing needs only read roles. - Sync starts the
ApplyOpyour project committed. Adopt starts yourReconcileOp, which opens a PR a human merges. - Deploy on a project with no committed
ApplyOprunschant run <component> --componentson chant’s local executor, as a child of behold. It applies with the credentials in behold’s environment, so Deploy from behold needs write roles there. - An environment
.behold.jsondesignates to a forge is never applied from your machine; Deploy dispatches the forge’s workflow through yourgh. - A terragucci repo is applied by its pipeline only: behold refuses every deploy, Op run, approval and dispatch there, and offers none of them.
- A SQL Yodeler repo (one with a
yodel.config.ts) is guarded the same way. Its refusal sayscode: "sql-yodeler"and namesnpx yodel approve <env> --plan <digest>(with--signunder a sealed gate) andyodel apply <env>in the project’s pipeline.
Authority stays in your committed source and your executor. If a request would have behold write to a cloud or to source directly, that is a bug.
What it is not
Section titled “What it is not”- Not a deployer: behold starts your Ops or chant’s local executor, and they do the work.
- Not a state store. Truth lives in the live system, and ownership is read from a marker on the resource.
- Not a new abstraction over your cloud. The graph is your declarations and your resources, at their real names.