Skip to main content
Define a project declaratively in .yaml, .jsonc, or .cue. The top-level environments[] array contains moduleInstances[], and modules reference each other with moduleGivenIdRef.
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

  1. Check the project config schema before editing:
  1. List available module definitions before adding a module:
  1. Inspect the input schema before adding or editing a module instance:
  1. Preview every change before applying it:
  1. 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 --autoapprove only 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, givenId values, 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, fetch https://api.ravion.com/projects/config/schema.md.

Legend

ProjectConfig

User-authored project config file consumed by ravion projects config apply --file.
project
Project.ApplyProjectConfigProject
Project metadata to update before applying environment configuration.See: Project
environments
Project.ProjectConfigFileEnvironment[]
required
Environment configuration blocks to apply.See: Environment

Project

Writable project metadata accepted by project config apply.
id
string
Existing project ID. When provided, it must match the project in the route.
givenId
string
User-provided project identifier. When provided, it must match the project in the route.
name
string
description
string

Environment

Environment block authored in project config files.
id
string
Existing environment ID.
givenId
string
User-provided environment identifier.
name
string
description
string
moduleInstances
Project.ProjectConfigFileModuleInstance[]
required

ModuleInstance

Module instance shape authored in project config files.
id
string
Existing module instance ID. Non-empty IDs must resolve to an existing module.
givenId
string
User-provided unique identifier. Must be unique within environment.
name
string
description
string
type
string
Module type identifier.
version
string
Semantic module version string.
input
map<string,any | null>
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.