output CLI is how you create projects, start development services, run workflows, and debug executions. It’s the main way you interact with Output during development.
Quick Start
Command Reference
Project Commands
output init
Create a new Output project with the standard file structure:Name of the project folder to create
output dev
Start all development services via Docker Compose:Running multiple dev stacks
You can run multiple isolated Output stacks on the same machine — useful when working across several projects simultaneously or testing against different versions. Each stack needs a unique project name and non-conflicting host ports. Set these in the project’s.env:
DOCKER_SERVICE_NAME isolates Docker networks, volumes, and container names so the stacks don’t interfere with each other. OUTPUT_CATALOG_ID keeps each stack’s workflow catalog separate. The three OUTPUT_*_HOST_PORT vars control which ports are exposed on your machine — the container-internal ports are unchanged, so workers in either stack still reach Temporal at temporal:7233.
Run npx output dev in each project directory. Project A’s API is at http://localhost:3001 and Project B’s at http://localhost:3002. If a port is already in use, output dev names the conflicting port and the env var to override.
output dev eject
Export the Docker Compose configuration so you can customize it:output update
Update the Output CLI and agent configuration:Workflow Commands
output workflow plan
Generate a workflow plan from a natural language description. The command prompts for a description, generates a plan using AI, and lets you iterate on it interactively. TypeACCEPT to save.
output workflow generate
Generate workflow code from a plan or description:Name of the workflow to generate
output workflow list
List available workflows from the catalog:output workflow runs list
List recent workflow runs, optionally filtered by workflow name:Filter by workflow name (optional)
output workflow run
Run a workflow synchronously and wait for the result:Name of the workflow to execute
Scenario name — resolved from the workflow’s scenarios/ directory
output workflow start
Start a workflow asynchronously — returns the workflow ID immediately without waiting:Name of the workflow to start
Scenario name — resolved from the workflow’s scenarios/ directory
output workflow status
Check whether a workflow is still running, completed, or failed:The workflow execution ID
output workflow monitor
Attach to a workflow run and stream status updates until it ends — a step starts, completes, or fails is printed as it happens, so you don’t have to re-runworkflow status in a loop to watch a long-running workflow:
The workflow execution ID
Exits
0 when the workflow completes, 1 when it fails, is canceled,
terminated, or times out, and 130 if you detach with Ctrl+C — detaching
never stops the workflow itself. monitor also exits 1 after 5 consecutive
transient poll failures (network errors, 5xx/408/429 responses), printing a
warning before each retry — this is API/network trouble, not a workflow
outcome, but shares the same exit code.
--format json here is not the same thing as the native --json flag used by workflow run, workflow status, and other commands migrated in OUT-419 (see the changelog). Native --json suppresses all in-progress log output and prints a single JSON object once the command finishes. monitor has no single final result to print — it’s a long-running command that emits a stream of discrete events (a step starting or finishing, a continue-as-new notice, a final summary) while the workflow is still running. --format json prints each event as its own line of newline-delimited JSON as it happens, so the output can be piped into jq or read incrementally by another process — often another automated or agent process rather than a person, which is the primary reason this command keeps its own JSON mode instead of adopting --json.output workflow result
Get the output of a completed workflow:The workflow execution ID
Workflow result JSON format
Use--format json with output workflow run or output workflow result to print the full structured workflow result:
output workflow stop
Stop a running workflow gracefully:The workflow execution ID
output workflow terminate
Force-stop a workflow immediately. Use this for stuck workflows or cleaning up after branch switches:The workflow execution ID
Unlike
stop (which cancels gracefully), terminate kills the workflow immediately.
output workflow reset
Rerun a workflow from after a specific completed step. The current run is terminated and a new run is created that replays up to the given step (reusing its output), then re-executes every step after it. Useful when iterating on a late step without re-paying the cost of earlier LLM or API calls:The workflow execution ID
The command prints the original
workflowId and a new runId for the fresh execution. Use output workflow status <workflowId> and output workflow result <workflowId> to track it.
output workflow debug
Show the execution trace for a workflow — what steps ran, what they received and returned, and where failures happened. See Tracing for details on trace format.The workflow execution ID
output workflow cost
Calculate the estimated dollar cost of a workflow execution from its trace. Covers LLM token costs and API service costs. See Cost Estimation for details on pricing configuration and theconfig/costs.yml override file.
Workflow ID to calculate cost for
Path to a local trace JSON file. If omitted, fetches the latest trace for the workflow.
Evaluation Commands
These commands run offline evaluations against your workflows using the@outputai/evals package. You define evaluators, write dataset YAML files, and use these commands to execute and manage them.
output workflow test
Run evaluations against a workflow using its datasets:Name of the workflow to test
Dataset Commands
output workflow dataset list
List datasets for a workflow:Workflow name to list datasets for
output workflow dataset generate
Generate a dataset for a workflow from a scenario, inline JSON, a local trace file, or recent runs:Name of the workflow
Scenario name — resolved from the workflow’s scenarios/ directory
Environment Configuration
By default, the CLI loads environment variables from.env in the current directory. To use a different env file: