Flow File
A group of executables with shared metadata. This is the file you write most often — a workspace can hold as many as you like, anywhere in its tree.
*.flow·*.flow.yaml·*.flow.yml
flow reads four kinds of YAML file. Every one of them has a published JSON schema, so your editor can validate and autocomplete it as you type — see Editor setup below.
A group of executables with shared metadata. This is the file you write most often — a workspace can hold as many as you like, anywhere in its tree.
*.flow·*.flow.yaml·*.flow.yml
Marks a directory as a workspace and sets what applies across it: display name, tags, environment files, and which paths are searched for executables.
flow.yaml
A form plus a flow file to render from it, with files to copy and executables to run before and after generating.
*.flow.tmpl
Your machine-level settings: the current workspace and namespace, registered workspaces, theme, log mode, and timeouts.
~/.flow/config.yaml
Point a schema-aware editor at the published schema with a yaml-language-server comment on the first line, and you get completion, hover docs, and inline validation with no plugin beyond a YAML extension:
# yaml-language-server: $schema=https://flowexec.io/schemas/flowfile_schema.json
executables:
- verb: run
name: my-task
exec:
cmd: echo "Hello, world!"| File | Schema |
|---|---|
*.flow, *.flow.yaml, *.flow.yml | flowfile_schema.json |
flow.yaml | workspace_schema.json |
*.flow.tmpl | template_schema.json |
config.yaml | config_schema.json |
*.flow files are YAML, but editors do not know that from the extension alone. In VS Code:
// settings.json
{
"files.associations": {
"*.flow": "yaml",
"*.flow.yaml": "yaml",
"*.flow.yml": "yaml"
}
}Other editors need the equivalent mapping of *.flow, *.flow.yaml, and *.flow.yml to YAML.
TIP
flow schema validate checks files from the command line, so the same validation runs in CI without an editor. See flow schema.