Quick Start¶
This guide walks you from zero to a running multi-task workflow in five minutes.
1. Install and initialise¶
Note
No Go toolchain required. The install script downloads the pre-built binary for your platform and verifies its checksum. See Installation for manual download options.
2. Point wf at a directory¶
3. Write your first workflow¶
cat > workflows/hello.toml <<'EOF'
name = "hello"
description = "A simple three-task workflow"
[tasks.greet]
cmd = "echo Hello, $(whoami)!"
register = "greeting"
[tasks.timestamp]
cmd = "date +%Y-%m-%dT%H:%M:%S"
register = "ts"
[tasks.report]
cmd = "echo '{{.greeting}} — run at {{.ts}}'"
depends_on = ["greet", "timestamp"]
EOF
4. Validate¶
5. Run it¶
Expected output:
[greet] Hello, alice!
[timestamp] 2026-03-09T14:22:01
[report] Hello, alice! — run at 2026-03-09T14:22:01
✓ hello completed in 42ms
6. Inspect the run¶
# List all runs
wf runs
# Get the run ID from the last run
RUN_ID=$(wf runs --limit 1 | awk 'NR==2{print $1}')
# See registered variables
wf inspect $RUN_ID
# Full audit trail
wf audit $RUN_ID
7. Visualise the DAG¶
wf graph hello # ASCII DAG to stdout (default)
wf graph hello --format html # writes hello_graph.html — open in browser
wf graph hello --format dot # Graphviz DOT output
Next: Add parallel tasks and error handling¶
name = "pipeline"
description = "Parallel build with rollback"
[tasks.lint]
cmd = "echo linting..."
[tasks.test-unit]
cmd = "echo unit tests..."
depends_on = ["lint"]
[tasks.test-integration]
cmd = "echo integration tests..."
depends_on = ["lint"]
[tasks.build]
cmd = "echo building..."
depends_on = ["test-unit", "test-integration"]
[tasks.deploy]
cmd = "echo deploying..."
depends_on = ["build"]
retries = 2
retry_delay = "5s"
on_failure = "rollback"
[tasks.rollback]
type = "forensic"
cmd = "echo rolling back..."
# Run with work-stealing scheduler for maximum parallelism
wf run pipeline --work-stealing --print-output
Both test-unit and test-integration start as soon as lint completes — they don't wait for each other.
What to explore next¶
| Topic | Link |
|---|---|
| All TOML fields | Workflow File Reference |
| Parallel execution modes | Execution Modes |
Variables and register | Variables & Interpolation |
| Matrix fan-out | Matrix Expansion |
| Failure handling | Forensic Tasks |
| Resuming failed runs | Resume |
| Real-world examples | Examples |