Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

profiles

Per-environment overrides selected at runtime with --profile <name> — one rflow.yaml, many environments:

networks:
  - name: ethereum
    chain_id: 1
    rpc: ${ETH_RPC}
 
constants:
  treasury: "0x1111111111111111111111111111111111111111"
 
profiles:
  staging:
    networks:                 # replaces `ethereum` by name
      - name: ethereum
        chain_id: 11155111
        rpc: ${SEPOLIA_RPC}
    constants:                # merged by key — profile wins
      treasury: "0x2222222222222222222222222222222222222222"
    config:
      port: 4000              # engine settings a profile may override
rflow validate --profile staging   # validates the MERGED view
rflow start --profile staging      # boots the MERGED view

Merge semantics

Applied after ${VAR} env substitution, before validation — so validate --profile sees exactly what start --profile boots.

SectionBehaviour
networksReplace-by-name: a profile network replaces the base network with the same name; new names are appended; unmentioned base networks are kept.
constantsMerged by key — the profile value wins, other base constants are kept.
configIndividual settings override (port today).

An unknown profile name is a hard error that lists what is available:

unknown profile 'production' - available profiles: local, staging

Editor autocomplete for rflow.yaml

rflow ships a JSON Schema for the whole config surface. Point yaml-language-server (VS Code's YAML extension, Neovim's yamlls, ...) at it with a modeline at the top of your rflow.yaml:

# yaml-language-server: $schema=https://rflow.xyz/rflow.schema.json
rflow_version: 1

or generate it locally (it's also committed at documentation/docs/public/rflow.schema.json):

rflow schema > rflow.schema.json

You get completion, hover docs and unknown-key/type squiggles for every trigger, step and setting.