
arazzo-cli
by strefethen
arazzo-cli
Execute multi-step API workflows from a YAML spec — no code generation, no glue scripts.
arazzo-cli is a standalone executor for Arazzo, the OpenAPI Initiative's spec for describing sequences of API calls as declarative workflows. Define your steps, parameters, success criteria, and control flow in YAML, then run them directly from the command line or step through them in VS Code.
Why?
Testing a sequence of API calls today means writing imperative scripts, maintaining collections, or building custom test harnesses. The Arazzo spec (part of the OpenAPI ecosystem) lets you describe these sequences declaratively — but without a runtime, the spec is just documentation.
arazzo-cli makes Arazzo specs executable: validate them, run them, trace them, and debug them interactively.
Demo
Quick Start
git clone https://github.com/strefethen/arazzo-cli.git
cd arazzo-cli
cargo run -p arazzo-cli -- validate examples/httpbin-get.arazzo.yaml
cargo run -p arazzo-cli -- run examples/httpbin-get.arazzo.yaml get-origin
Or install it:
cargo install --path ./crates/arazzo-cli --locked
arazzo-cli validate examples/httpbin-get.arazzo.yaml
arazzo-cli run examples/httpbin-get.arazzo.yaml get-origin
Features
| Feature | What it does |
|---|---|
| Run workflows | Execute HTTP steps, resolve expressions, evaluate success criteria, route control flow |
| Run single steps | Execute one step with automatic dependency resolution (--step) |
| Generate workflows | Scaffold CRUD workflows from OpenAPI 3.x specs (generate) |
| Validate specs | Parse and structurally validate Arazzo YAML before running |
| Parallel execution | Run independent steps concurrently with DAG-based scheduling (--parallel) |
| Dry-run mode | Resolve all requests without sending them (--dry-run) |
| Input validation | Type-check and require workflow inputs, with strict mode (--strict-inputs) |
| Execution traces | Write detailed trace.v1 JSON artifacts with automatic sensitive value redaction |
| Deterministic replay | Re-execute trace artifacts offline with response injection and drift checks (replay) |
| Sub-workflows | Call workflows from workflows with input/output passing (up to 10 levels deep) |
| VS Code debugger | Set breakpoints, step through workflows, inspect variables, evaluate expressions |
| JSON output | --json on every command for scripting and CI integration |
| Expression language | $inputs, $steps, $response, $env, XPath, JSON Pointer, interpolation |
| Arazzo 1.1 selectors | Typed JSONPath, JSON Pointer, and XPath Selector Objects across values and outputs |
| Success criteria | Simple expressions, regex, XPath, and JSONPath criterion types |
| Control flow | onSuccess/onFailure actions with goto, retry (with backoff), and end |
| Multiple API sources | Route steps to different APIs via sourceDescriptions |
| SOAP support | Execute SOAP workflows with XPath-based success criteria |
| Rate limiting | Built-in token-bucket rate limiter (10 req/sec default, configurable burst) |
.env loading | Automatic .env file loading — reference secrets as $env.VAR_NAME |
| Reusable components | $ref to shared parameters, inputs, and action handlers via components |
| MCP server | Expose workflows as tools for AI agents via Model Context Protocol (serve), plus authoring |
Related servers

n8n
Updated todayby n8n-io
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.

mcp-server-git
OfficialUpdated todayA Model Context Protocol server providing tools to read, search, and manipulate Git repositories programmatically via LLMs

mcp-server-fetch
OfficialUpdated todayA Model Context Protocol server providing tools to fetch and convert web content for usage by LLMs
