Arazzo 1.0 · OpenAPI Initiative

Execute API workflows
from YAML.

No code generation. No glue scripts. Define multi-step API sequences in YAML, then run, trace, replay, and debug them interactively.

auth-flow.arazzo.yaml
arazzo: "1.0.0"
info:
  title: User Authentication Flow
  version: "1.0"
sourceDescriptions:
  - name: api
    url: https://api.example.com
    type: openapi
workflows:
  - workflowId: authenticate
    steps:
      - stepId: login
        operationPath: POST /auth/login
        parameters:
          - name: Content-Type
            in: header
            value: "application/json"
        requestBody:
          payload:
            username: {$inputs.username}
            password: {$inputs.password}
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          token: $response.body.token
      - stepId: get-profile
        operationPath: GET /users/me
        parameters:
          - name: Authorization
            in: header
            value: "Bearer {$steps.login.outputs.token}"
        successCriteria:
          - condition: $statusCode == 200

How It Works

Three steps from YAML to running workflows.

01

Define

Write your API workflow in YAML using the Arazzo 1.0 spec. Steps, parameters, criteria, control flow — all declarative.

02

Run

Execute against live APIs. Expressions resolve automatically, retries fire on failure, control flow routes on criteria.

03

Debug

Set breakpoints in VS Code, step through workflows, inspect variables. Full DAP debugger with watch expressions.

Features

Everything you need to run multi-step API workflows.

Run Workflows

Execute HTTP steps, resolve expressions, evaluate success criteria, route control flow via onSuccess/onFailure actions.

Parallel Execution

DAG-based scheduling runs independent steps concurrently. Deterministic traces even under parallel execution.

Execution Traces

Detailed trace.v1 JSON artifacts capture every request, response, criteria evaluation, and routing decision. Sensitive values auto-redacted.

Deterministic Replay

Re-execute traces offline with injected responses. Detect request drift for CI regression testing without network access.

Expression Language

$inputs, $steps, $response, $env, XPath, JSON Pointer, string interpolation. Full Arazzo expression surface.

Input Validation

Type-check workflow inputs against JSON Schema. Strict mode makes validation errors fatal. Catch mistakes before network calls.

Generate Workflows

Scaffold CRUD workflows from OpenAPI 3.x specs. Authentication detection, chained outputs, realistic request bodies.

Control Flow

onSuccess/onFailure actions with goto, retry (with backoff), and end. Criteria guards select the first matching action.

JSON Output

--json on every command. Stable schemas, structured errors, JSON Schema introspection. Built for CI and scripting.

VS Code Extension

Step through your workflows

Full Debug Adapter Protocol implementation. Set breakpoints on workflow steps, success criteria, and actions. Step through execution, inspect variables, evaluate watch expressions.

One of only two DAP implementations that supports breakpoints directly in YAML source files.

Breakpoints on steps, criteria, and actions
Variable inspection: Locals, Request, Response, Inputs, Steps
Watch expressions with full Arazzo syntax
Call stack with sub-workflow depth tracking
Install from VS Code Marketplace
VS Code debugger showing an Arazzo workflow paused at a breakpoint with variables, call stack, and watch expressions

Why arazzo-cli

Built for reliability.

Safe

No unsafe code. unwrap/expect denied by clippy. Bounded execution limits. Automatic secret redaction in traces and output.

Fast

Compiled Rust binary. Regex caching via LazyLock. Parallel DAG execution. Sub-second startup. LTO-optimized release builds.

Open

MIT licensed. 339 tests, all hermetic. Full Arazzo 1.0 expression surface. Programmatic Rust API via arazzo-runtime crate.

Get Started

Install, validate, run.

Install from source

$ cargo install --git https://github.com/strefethen/arazzo-cli.git arazzo-cli --locked

Or download a prebuilt binary

# Linux, macOS, and Windows binaries on every release
$ gh release download v0.1.0 -R strefethen/arazzo-cli

Validate and run a workflow

$ arazzo validate examples/httpbin-auth.arazzo.yaml
$ arazzo run examples/httpbin-auth.arazzo.yaml bearer-auth --verbose

Record a trace and replay it offline

$ arazzo run spec.yaml my-workflow --trace ./trace.json
$ arazzo replay ./trace.json

Rust 1.82+ · Linux, macOS, Windows · MIT License