Skip to main content

Configuration

orun configuration is split across three user-facing surfaces:

  1. intent.yaml
  2. discovered component.yaml manifests
  3. composition sources declared by intent.compositions
  4. local CLI config in ~/.orun/config.yaml for backend defaults and repo links

Intent file

Minimal example:

apiVersion: sourceplane.io/v1
kind: Intent

metadata:
name: demo

env:
OWNER: sourceplane

discovery:
roots:
- services/

environments:
development:
parameterDefaults:
"*":
region: us-east-1
env:
AWS_REGION: us-east-1

The intent file is where you define environments, discovery roots, groups, selectors, defaults, and optional inline components. Root-level env provides global environment variables shared across all environments.

It also declares where compositions come from:

compositions:
sources:
- name: example-platform
kind: dir
path: ./compositions

Component manifest

Minimal example:

apiVersion: sourceplane.io/v1
kind: Component

metadata:
name: network-foundation

spec:
type: terraform
domain: platform-foundation
env:
REPO: network-foundation
subscribe:
environments: [development, staging, production]
parameters:
stackName: network-foundation
terraformDir: .

Components carry type-specific inputs, root-level environment variables, labels, overrides, and dependency declarations. Root-level env applies across all subscribed environments and can be overridden per subscription.

Conditional profile selection

Use profileRules to select different execution profiles depending on which trigger fires:

spec:
subscribe:
environments:
- name: dev-preview
profile: plan-only
profileRules:
- profile: apply
when:
triggerRef: github-push-main

The profile field is the default fallback. Rules are evaluated in order (first-match-wins). See profile rules for full details.

Change watches

Declare which global intent sections should mark this component as changed during --changed planning:

spec:
change:
watches:
- environments
- groups
- env

Valid values: environments, groups, env, automation, compositions, discovery, execution.

Without change.watches, global intent changes do not affect the component. See change watches for full details.

Composition sources

Declare composition sources in the intent and plan directly against that intent:

orun plan --intent intent.yaml

Each source can be a local package directory, a packaged archive, or an OCI reference. Orun resolves those sources into a cache and writes a lock file under <intent-dir>/.orun/compositions.lock.yaml.

--config-dir still works as a compatibility fallback for legacy folder-shaped compositions.

Environment-specific control

Use CLI flags when you want to scope the effective configuration at compile time:

  • --env to filter a single environment
  • --changed and related flags for change-aware planning
  • --view for DAG-focused render views

Read environment variables if you want to control configuration through the shell.

Environment promotion

Declare promotion dependencies between environments to establish deployment ordering:

environments:
staging:
activation:
triggerRefs: [github-push-main]
promotion:
dependsOn:
- environment: preview
strategy: same-component # default
condition: success # default
satisfy: same-plan-or-previous-success # default
match:
revision: source # default
parameterDefaults:
"*":
lane: verify
FieldValuesDefaultMeaning
environmentstring (required)Environment that must succeed first
strategysame-component, environment-barriersame-componentHow to link jobs across environments
conditionsuccesssuccessRequired outcome in the dependency environment
satisfysame-plan, previous-success, same-plan-or-previous-successsame-plan-or-previous-successWhether to use DAG edges, gates, or both
match.revisionsourcesourceHow to match prior success evidence

See environment promotion for detailed behavior.

Remote state configuration

Add an execution.state block to intent.yaml to enable remote state coordination via orun-backend:

execution:
state:
mode: remote
backendUrl: https://orun-backend.example.com
FieldValuesMeaning
modelocal (default) or remoteWhere execution state is stored
backendUrlURIURL of the orun-backend instance (required when mode: remote)

The backendUrl can also be supplied via --backend-url or ORUN_BACKEND_URL; those take priority over the intent file.

When neither the flag, environment variable, nor intent file sets a backend URL, orun falls back to ~/.orun/config.yaml:

backend:
url: https://orun-api.example.workers.dev

repos:
- backendUrl: https://orun-api.example.workers.dev
repoFullName: sourceplane/orun
namespaceId: "123456789"

orun cloud link writes the repos entries used for local session-authenticated remote-state runs.

When mode: remote is set, all three commands that read execution state (run, status, logs) automatically use the backend without requiring --remote-state on the command line.