Skip to main content

Start a run

The run uses the agent’s current stage. A pilot-staged agent runs as pilot; a live-staged agent runs live. To override:
Without --mode, a run on a live-staged agent has real side effects. Pass --mode dry_run explicitly when you want a safe run of an agent that is already in production.

Pass input

--input takes a JSON string and defaults to {}. The fields an agent accepts come from its spec — jstm agent view <agent> --definition shows them. If you omit a required input, the run raises an input request rather than failing.

Follow the progress

Progress streams as the run executes:
Add --verbose to see an output preview for each completed step:
The stream times out after 300 seconds. The run itself keeps going — rejoin it with jstm agent run show.

When the run needs you

If the agent reaches a point that requires a person, it pauses and prints how to unblock it:
Read the request first to learn the field names:
Then answer it:
You can address the request by agent instead of by id, when the agent has exactly one open request:

Avoid duplicate runs

When something might retry — a script, a webhook handler — pass an idempotency key:
Re-sending the same key won’t start a second run.

After the run

This gives you status, stories, output, any rejection reason, and provenance — the exact spec, agent, package, and deployment versions that ran. See Review runs and tickets for reading results in depth.

Scripting a run

Results go to stdout and diagnostics to stderr, so the JSON is safe to pipe:

See also