Top-level fields
| Field | Type | Required | Description |
|---|
name | string | yes | Pipeline name — used as the run command |
description | string | no | Short description shown by pipe list |
vars | map[string]string | no | User-defined variables (see Variables) |
steps | []Step | yes | Ordered list of steps |
Step fields
| Field | Type | Required | Default | Description |
|---|
id | string | yes | — | Unique step identifier |
run | string | []string | []SubRun | yes | — | Command(s) to execute (see run modes) |
depends_on | string | []string | no | [] | Step ID(s) that must complete first |
sensitive | bool | no | false | Exclude output from state files; always re-execute on resume |
retry | int | no | 0 | Number of retries on failure |
cache | bool | CacheConfig | no | false | Cache successful results (see Caching) |
SubRun fields
Used inside a run list when each item is a mapping:
| Field | Type | Required | Default | Description |
|---|
id | string | yes | — | Sub-run identifier (combined with step ID for env var: PIPE_<STEP>_<SUBRUN>) |
run | string | yes | — | Command to execute |
sensitive | bool | no | false | Exclude this sub-run’s output from state files |
CacheConfig fields
Used when cache is a mapping instead of true:
| Field | Type | Required | Description |
|---|
expireAfter | string | yes | Expiry duration or wall-clock time |
| Format | Example | Description |
|---|
| Go duration | 30s, 10m, 1h, 24h | Relative duration from cache time |
| Wall-clock time | 18:10 UTC, 15:00 | Re-run after this time of day |
The depends_on field accepts two YAML forms:
# Scalar — single dependency
# Sequence — multiple dependencies
The run field accepts three YAML forms:
# Scalar — single command (output captured as PIPE_<STEP_ID>)
# Sequence of strings — parallel commands (output NOT captured)
# Sequence of mappings — parallel named sub-runs (output captured per sub-run)
run: "GOOS=linux go build -o dist/linux ."
run: "GOOS=darwin go build -o dist/darwin ."
Full example
description: "Build and release the project"
registry: "ghcr.io/myorg"
run: "git describe --tags --abbrev=0"
run: "GOOS=linux go build -ldflags '-X main.version=$PIPE_GET_VERSION' -o dist/linux ."
run: "GOOS=darwin go build -ldflags '-X main.version=$PIPE_GET_VERSION' -o dist/darwin ."
run: "docker push $PIPE_VAR_REGISTRY/app:$PIPE_GET_VERSION"