DOC_INDEX
THEME
DOCS/Getting Started/Quick Start

Quick Start

Your first OrchStep workflow in 2 minutes

Create a Workflow

Scaffold a starter file (available since v0.9.0):

orchstep init

This writes a commented, runnable orchstep.yml and prints the next commands to try. orchstep init --list shows the other templates: env (environment-aware, run with --env) and ci (a build/test/package pipeline). An existing file is never overwritten unless you pass --force.

orchstep init - scaffold a starter workflow and list templates

The generated file is a complete workflow, not a stub - it lints clean and its starter task runs green immediately:

orchstep lint and orchstep run hello against the generated file

The env template scaffolds a workflow with env_groups and environments already wired, so --env production resolves group and environment overrides out of the box:

orchstep init -t env, then run with --env production

The whole loop in motion:

orchstep init - animated demo from empty directory to green run

Or write the file by hand - this is the whole shape:

name: hello
tasks:
  greet:
    steps:
      - name: say-hello
        func: shell
        do: echo "Hello from OrchStep!"

Run It

orchstep run greet     # or: orchstep run hello, if you used `orchstep init`

Or pick the task from a keyboard menu:

orchstep menu

The menu shows every task in your workflow with auto-assigned single-keystroke hotkeys. Hit the hotkey to run that task instantly, or arrow keys / / to enter fuzzy search and filter by name or description. f cycles filter modes (all → a-z → public → internal), q quits. Running plain orchstep in a terminal auto-launches the menu; in a CI pipeline or non-terminal context it exits cleanly with an error instead of hanging.

Shell note: OrchStep uses POSIX sh (/bin/sh) by default, so your workflows run on Alpine, distroless containers, and any Linux/macOS system without extra dependencies. On Windows, set type: "gosh" to use the built-in Go-native shell — no bash or WSL needed. See Shell Execution for details.

Add Variables

name: deploy
defaults:
  env: staging
  version: "1.0.0"

tasks:
  deploy:
    steps:
      - name: build
        func: shell
        do: echo "Building v{{ vars.version }} for {{ vars.env }}"
      - name: verify
        func: assert
        args:
          condition: '{{ ne vars.version "" }}'
          desc: "Version must not be empty"
orchstep run deploy
orchstep run deploy --var env=production --var version=2.0.0

Next Steps