First compile path

From an empty directory to a locked, reproducible baseline — what each command does and what lands on disk.


This is the happy path end to end: declare a system, compile it, and read what Rhodd wrote. It assumes you've installed the binary.

1. Validate

validate parses the definition and checks it against the schema and the rule set. Nothing proceeds until the input is provably well-formed.

bash
$ rhodd validate
 schema           rhodd.yaml conforms to v0.1
 services         2 declared · kinds resolved
 modules          postgres, redis
 ports            5173, 3000 no collisions
 graph            acyclic · 0 cycles
validation passed ready to generate

2. Generate

generate runs the model, graph and plan stages, then emits the baseline and the .rhodd/ state. The plan is computed first as a dry run, so you can see the write set before anything is written.

bash
$ rhodd generate
plan: 28 writes · dry-run clean
emit: services/api · services/web · compose.yaml · k8s/ · .env.example
state: .rhodd/ written · .rhodd.lock frozen

3. Quality

quality runs gates against the generated output — schema, acyclicity, port uniqueness, ownership completeness. A compile that fails a gate fails loudly.

bash
$ rhodd quality
 9 / 9 gates passed

4. Inspect the result

Everything is a file you can open:

text
.
├── rhodd.yaml            # your definition
├── compose.yaml          # generated
├── services/             # generated scaffolds (api, web)
├── k8s/                  # generated Kubernetes manifests
├── .rhodd/               # model, graph, plan, ownership, manifest, quality, ai/
└── .rhodd.lock           # input/output hashes · reproducible: true

Run rhodd generate again with the same input and the output_hash in .rhodd.lock is identical — that's the determinism guarantee. From here, see Generated outputs for what each file contains, or Safety & boundaries before you apply anything.