Generated outputs

The real artifacts Rhodd emits — compose, env files, Kubernetes manifests, scaffolds, docs — plus the .rhodd/ state and deployment export.


generate emits standard, human-readable artifacts. Nothing is proprietary; everything is a file you could have written by hand, just generated deterministically.

Emit targets

  • docker-compose — a compose.yaml for the declared services and modules.
  • env files.env templates for each service.
  • Kubernetes manifests — plus a Kubernetes plan describing the intended objects.
  • service scaffolds — a starting tree per service, by kind and runtime.
  • generic files & markdown docs — supporting files and generated documentation.

The .rhodd/ state

Alongside the targets, Rhodd writes its state directory — the core artifacts:

text
.rhodd/
├── model.json        # the resolved system
├── graph.json        # services, modules, edges (acyclic)
├── plan.json         # the write set (dry-run)
├── manifest.json     # what was emitted, by kind
├── ownership.json    # generated vs user-owned
├── quality.json      # gate results
└── ai/               # the handoff context pack
.rhodd.lock           # input/output hashes · reproducible: true

The manifest.json records each emitted target by kind:

json
{
  "stage": "generate",
  "targets": [
    { "kind": "service-scaffold",     "path": "services/api" },
    { "kind": "docker-compose",       "path": "compose.yaml" },
    { "kind": "kubernetes-manifests", "path": "k8s/" },
    { "kind": "envfiles",             "path": ".env.example" }
  ],
  "files": 24
}

Deployment export

Separately, Rhodd can export a deployment representation as manifest files — Argo CD, Flux, or generic Kubernetes YAML (plus Backstage metadata):

yaml
# .rhodd/export/argocd/api.application.yaml — a file, not a live deploy
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
  name: api
spec:
  source:
    repoURL: https://github.com/rhodd-fdn/rhodd
    path: k8s/api
  syncPolicy: {}   # manual sync — nothing applies on its own

These are files. Rhodd makes no cluster calls by default; applying them is a separate, opt-in step — see Safety & boundaries. Rhodd never emits Terraform.