.yaml, .jsonc, or .cue. The top-level environments[] array contains moduleInstances[], and modules reference each other with moduleGivenIdRef.
Example project config
Example project config
A minimal
ravion.yaml with a VPC, an ECS cluster, and a web service. Modules reference each other with moduleGivenIdRef.ravion.yaml
Pull and apply
Store the config file in your repository and manage it with the CLI.1
Create the project, if needed
2
Pull the current config
Write the live project config to a file.
Pulling a
.yaml, .jsonc, or .cue file adds an AI skill header, inline field comments, and
quick links to the generated file. Plain .json does not support comments, so it omits these
annotations.3
Edit the file
Add or edit environments and add, edit, or remove module instances.
Removing a module instance from the config file will run the Terraform plan for the Terraform destroy action and then wait for manual approval. You’ll need to manually approve the destroy and then delete the module instance from the system.
4
Preview with a dry run
Validate the file and print the planned changes without applying them.
5
Apply the changes
Apply the config to update the stored config and run the Terraform plan if needed.Add
--autoapprove to approve supported stack change pipeline runs without a manual gate.6
Review and approve the stack run
Applying a config change starts a stack change pipeline run when the affected module has a Terraform stack. The stack run creates a Terraform plan and waits for manual approval before applying, unless you pass
--autoapprove to an apply command that supports it.After the stack run starts, inspect the run and its Terraform results with these commands:7
Integrate with CI
Commit the config file and let GitHub Actions plan changes on each pull request and apply them on merge.See CI integration.
Agent tips
Use these rules when an agent edits a project config file.Required workflow
- Check the project config schema before editing:
- List available module definitions before adding a module:
- Inspect the input schema before adding or editing a module instance:
- Preview every change before applying it:
- Apply only after the dry run is correct and approved:
Helpful hints
- Pull the latest live config anytime with
ravion project config pull <project-id> --file ravion.yaml. - Use
--autoapproveonly for supported stack changes that do not need a manual approval gate. - To iterate on one target, pass
--environment-id,--environment-given-id,--module-instance-id, or--module-given-id.
Module editing rules
- Treat the config file as the source of truth for the current task.
- Preserve existing IDs,
givenIdvalues, module versions, and Ravion app links unless asked to change them. - Tailor recommended settings to the target environment.
- Ask about important settings that cannot be inferred with high confidence.
- Ask before production-impacting changes such as public access, deletion protection, backup retention, capacity, region, or networking exposure.
Do not
- Copy module inputs from unrelated files or examples.
- Invent fields that are not present in the CLI schema output.
- Apply changes without a successful dry run first.
Schema reference
Use this reference when you author project config files or generate project configuration from another system. For a compact, machine-readable version, fetchhttps://api.ravion.com/projects/config/schema.md.
Legend
ProjectConfig
User-authored project config file consumed byravion projects config apply --file.
Project metadata to update before applying environment configuration.See: Project
Environment configuration blocks to apply.See: Environment
Project
Writable project metadata accepted by project config apply.Existing project ID. When provided, it must match the project in the route.
User-provided project identifier. When provided, it must match the project in the route.
Environment
Environment block authored in project config files.Existing environment ID.
User-provided environment identifier.
See: ModuleInstance
ModuleInstance
Module instance shape authored in project config files.Existing module instance ID. Non-empty IDs must resolve to an existing module.
User-provided unique identifier. Must be unique within environment.
Module type identifier.
Semantic module version string.
Runtime module configuration input.
Module references
Use{moduleGivenIdRef: "..."} inside module input fields that reference another module.
Use
givenId values for the project, environment, and module segments.