V0.10.0_LATEST

AUTOMATE EVERYTHING.
FOR DEVS & AI AGENTS.

An automation and CI/CD engine in a single binary - environments, secrets, modules, parallel steps, real error handling. Runs the same locally, in any CI, even on Windows. And when an AI agent solves a task, capture the session and replay it forever with zero tokens.

GET_STARTED.SH
PIPELINE_VIEWER
OK
STEP_01
BUILD_AND_TEST
RUNNING
DEPLOY_TERRAFORM
···
QUEUED
NOTIFY_SLACK
499 TESTS · 100% PASS
SIGNED + SBOMNO SAAS · NO LOCK-IN

SEE_THE_WHOLE_THING

Not a toy snippet - a real project. Two pipelines compose the auto-discovered task files: ci (parallel multi-arch build + unit/function/integration tests) wires into GitHub CI, and deploy (a local Helm module, a smoke-test loop, then a notify module) ships to dev, staging, or production from one workflow input - whose GitHub workflow even clones the repo with the @community checkout module instead of actions/checkout. Click through it:

SYNTAX_THEME
THEME
orchstep.yml
name: my-service
desc: Build a Go service into a Docker image, ship it to Kubernetes

# Shared constants and per-environment values live in environments/*.yml,
# picked with --env. The sibling environments/ directory is auto-detected -
# no env_config needed. The filename IS the hierarchy: --env production loads
# defaults.yml then production.yml (later overrides earlier).

# Credentials pulled from YOUR tool - never stored, masked in logs.
secrets:
  REGISTRY_TOKEN: { cmd: "op read op://ci/ghcr/token" }   # 1Password / Vault / aws...

# Reusable modules: a local one in this repo + public & private registry modules.
registries:
  acme: { url: github.com/acme/orchstep-modules }
modules:
  - { name: deployer, source: ./modules/deployer }                # local (in this repo)
  - { name: notify,   source: "@acme/notify", version: "^1.0.0" } # remote (private registry)

# build / test / smoke (tasks/*.yml) are auto-discovered. Two top-level
# pipelines compose them - ci wires into GitHub CI, deploy into the deploy
# workflow. Steps use desc: (no name:) and pass params with with:.
tasks:
  ci:
    desc: Build and run the full test suite
    steps:
      - desc: Build and push the multi-arch image
        task: build
        with:
          push: "true"
      - desc: Run unit, function, and integration tests
        task: test

  deploy:
    desc: Roll out, smoke-test, then announce
    steps:
      - desc: Roll out to Kubernetes via the local deployer module
        module: deployer
        task: deploy
        with:
          app: "{{ vars.app }}"
          version: "{{ vars.version }}"
          namespace: "{{ vars.namespace }}"
          replicas: "{{ vars.replicas }}"
          cpu: "{{ vars.resources.cpu }}"
          host: "{{ vars.ingress.host }}"
      - desc: Smoke-test the deployed endpoints
        task: smoke
      - desc: Announce the release via the private notify module
        module: notify
        task: send
        with:
          text: "{{ vars.app }} {{ vars.version }} shipped to {{ vars.namespace }}"
$ orchstep run deploy --env production --var version=1.4.2
same files, any target. Environments, secrets, modules, retries, and cross-tool env wiring are the syntax - not boilerplate you hand-maintain in a shell script.

ORCHSTEP_CLI

The command line is the product. Define a workflow in YAML and run it anywhere with orchstep run — it delegates to the tools you already use, previews the resolved plan before executing, targets any environment, and turns an agent's solved task into a deterministic replay that costs zero tokens. A 90-second tour: run, menu, dry-run, environments, JSON output, and capture → replay.

ORCHSTEP_PIPELINE

The optional web console for the CLI - a task launcher and live pipeline dashboard you open with orchstep serve. A second-class citizen by design: every click is an orchstep command underneath. A 60-second tour - run a task, watch the graph light up step by step, read the pretty logs, and inspect any step.

BUILT_FOR_HOW_YOU_WORK

The same engine, whether you drive it from a terminal, a keyboard menu, CI, or an AI agent - and the dev-loop tools to see exactly what a run will do before it does it.

STEP 1 / CAPTURE

RECORD THE WORK YOU ALREADY DO

You test and ship by hand first - build, run the tests, deploy. The orchstep-capture skill records that solved session into a single workflow file. Every run after replays the same logic deterministically - no LLM, no tokens, no drift.

AGENT_COST: TOKENS_EVERY_RUN
REPLAY_COST: 0 TOKENS
1 / YOU SHIP IT BY HAND
$ go build -o bin/my-service ./cmd/my-service
$ docker build -t ghcr.io/acme/my-service:0.1.0 .
$ go test ./...   ok
$ helm upgrade --install my-service ./charts/my-service -n staging
2 / CAPTURE THE SESSION
/orchstep-capture - “record exactly what I just ran into a workflow.”
3 / ONE SIMPLE WORKFLOW (orchstep.yml)
name: my-service
tasks:
  main:
    steps:
      - { name: build,  func: shell, do: go build -o bin/my-service ./cmd/my-service }
      - { name: image,  func: shell, do: docker build -t ghcr.io/acme/my-service:0.1.0 . }
      - { name: test,   func: shell, do: go test ./... }
      - { name: deploy, func: shell, do: helm upgrade --install my-service ./charts/my-service -n staging }
4 / REPLAY FOREVER - ZERO TOKENS
$ orchstep run
 build · image · test · deploy - same result, no model in the loop
STEP 2 / DESIGN

LET THE AGENT ARCHITECT IT

A captured one-task file is a start - production needs structure. The orchstep-workflow-design skill turns that simple workflow (or a brand-new project) into a modular, reusable design: environment segregation, split task files, a reusable module, real error handling, and the CI/deploy workflows - all generated, none hand-authored. That is the project in the browser above.

1 / START FROM THE CAPTURED FILE
The simple one-task orchstep.yml from Step 1 - or point the skill at a brand-new project.
2 / /orchstep-workflow-design
Wizard mode asks 2-4 intent questions - “Multiple environments (dev/staging/prod)? Reusable across the org? CI plus a manual deploy?” Quick mode skips straight to a correct workflow.
3 / A MODULAR, REUSABLE PROJECT

It refactors the one task into the production-grade project above - generated, not hand-authored:

  • orchstep.yml - ci + deploy pipelines
  • environments/{defaults,dev,staging,production}.yml - segregation
  • tasks/{build,test,smoke}.yml - split + parallel + loops
  • modules/deployer/ - reusable local Helm module
  • .github/workflows/{ci,deploy}.yml - CI + manual deploy
4 / NO HAND-AUTHORING
A design-grade, modular workflow with real error handling - ready to commit and run in CI. No tasks or modules written by hand.

WHY_ORCHSTEP

NO_PLATFORM

A single CLI binary. Runs inside your existing CI/CD - no SaaS signup, no agents to install.

SHELL_FIRST

Delegates to your existing tools: terraform, kubectl, aws, docker. OrchStep orchestrates; your tools execute.

AI_READY

MCP server, skill documents, and --format json on every command. First-class LLM integration.

ECOSYSTEM

Reusable modules for common tasks. Publish to the registry or keep them private.

KEYBOARD_UX

orchstep menu opens an interactive task picker with single-keystroke hotkeys and fuzzy search.

AI-NATIVE, END TO END

Capture and design are just two of the skills. The whole engine is built for agents: an MCP server to author and run workflows, skill documents that ship for Claude Code and any MCP-capable agent, and machine-readable --format json on every command. Your agent builds, runs, and inspects OrchStep without screen-scraping.

AGENT_PROTOCOL
01
MCP_SERVER

Agents author workflows, execute tasks, and manage modules through structured interfaces.

02
SKILL_DOCUMENTS

Capture, design, and release skills ship with the engine for Claude Code and beyond.

03
FORMAT_JSON

Every command emits machine-readable output. No screen-scraping, no guesswork.