Workflows

sim workflows is also spelled sim workflow.

Every command below also accepts the global options.

Activate workflow version

sim workflows activate create <workflowId> <version> [options]

Activate Workflow Version (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Apply workflow operations

sim workflows operations apply <workflowId> [options]

Apply Workflow Operations (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--dry-runNoValidate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect lint and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified.
--no-dry-runNoSend --dry-run as false.
--operations <json|@file>YesEdits to apply, in a single batch, keyed by operation_type: [{"operation_type":"add","block_id":"my-fn","params":{"type":"function","name":"My Fn","inputs":{"code":"return {ok:true}"}}},{"operation_type":"edit","block_id":"<uuid>","params":{"name":"Renamed","connections":{"success":"my-fn"}}},{"operation_type":"delete","block_id":"<uuid>"}]. Also extract_from_subflow, whose params carry {"subflowId":"<loop-id>"}, and insert_into_subflow, which creates a block and so takes an add’s params plus that subflowId (JSON, or @path / @- to read a file or stdin).
--atomicNoFail the whole batch when any operation is declined or any block input would be dropped. The default applies what it can and reports the rest in skipped and inputValidationErrors; true writes nothing and answers 409 instead.
--no-atomicNoSend --atomic as false.
--layout <value>NoWhether to reposition blocks the batch touched. targeted (default) nudges only the affected subgraph; none leaves every position exactly as supplied. Accepted values: targeted, none.
--set-block-enabled <json|@file>NoBlocks to enable or disable, applied after --operations: [{"block_id":"<uuid>","enabled":false}]. Disabling a loop or parallel cascades to its unlocked descendants; enabling a block whose container is disabled is declined (JSON, or @path / @- to read a file or stdin).
-y, --yesNoConfirm this operation (required unless --dry-run).

Update workflow variables

sim workflows variables update <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--operations <json|@file>YesVariable changes to apply in order, keyed by operation: [{"operation":"add","name":"my_var","type":"string","value":"hello"},{"operation":"edit","name":"my_var","value":"updated"},{"operation":"delete","name":"my_var"}] (JSON, or @path / @- to read a file or stdin).
-y, --yesYesConfirm this operation.

Cancel a running workflow run

sim workflows runs cancel <runId> [options]

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.

Show run status

sim workflows runs get <runId> [options]

Show run status (requested outputs are included in JSON or YAML output)

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--include-outputNoInclude the final output in JSON or YAML output.
--select-output <value...>NoInclude blockId or blockId.path values in JSON or YAML output; block names are not resolved on a finished run (space-separated, or @path / @- with one value per line; @@value for a literal leading @).
--include-file-base64NoInline each produced file's bytes as base64. Requires includeOutput. A file above the inline ceiling answers 413 naming its download path; fetch large files from downloadPath instead.
--no-include-file-base64NoSend --include-file-base64 as false.
--base64-max-bytes <value>NoPer-file inline ceiling, lowering but never raising the server limit of 16 MiB.

List runs for a workflow

sim workflows runs list [options]

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--status <value>NoFilter by run status. Accepted values: pending, running, completed, failed, cancelled, paused.
--trigger <value>NoFilter by trigger type.
--start-date <value>NoOnly include runs started at or after this UTC ISO 8601 timestamp, e.g. 2026-08-06T00:00:00Z. A date without a time, or a timestamp carrying a UTC offset instead of Z, is rejected, as is year 0000, which names no storable instant.
--end-date <value>NoOnly include runs started at or before this UTC ISO 8601 timestamp, e.g. 2026-08-06T00:00:00Z. A date without a time, or a timestamp carrying a UTC offset instead of Z, is rejected, as is year 0000, which names no storable instant.
--limit <n>NoMaximum items to return (0 for everything). Defaults to 100.
--cursor <value>NoContinue from nextCursor returned by a previous result.
--order <value>NoSort direction by run start time. This list is sortable only by run start time, so it takes order in place of sortBy/sortOrder, which it rejects. Accepted values: asc, desc.

Resume a paused run

sim workflows runs resume <runId> [options]

Resume a paused run (output is included in JSON or YAML output)

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--context <value>YesPause context ID returned by run status.
--input <json|@file>NoResume input as JSON (JSON, or @path / @- to read a file or stdin).

Wait for a run to reach a terminal state, then show it

sim workflows runs wait <runId> [options]

Arguments

ArgumentRequiredDescription
runIdYesUnique workflow run identifier.

Options

OptionRequiredDescription
--workflow <workflowId>YesWorkflow ID.
--wait-timeout <seconds>NoGive up after this many seconds, or 0 to wait indefinitely (default: 3600). Bounds the whole wait; SIM_TIMEOUT_SECONDS bounds one request.

Create workflow

sim workflows create [options]

Options

OptionRequiredDescription
--name <value>YesWorkflow name.
--description <value>NoOptional workflow description.
--folder <value>NoFolder path as shown in the app; the leading / is optional.

Create a workflow folder at a path

sim workflows folders create <path>

Arguments

ArgumentRequiredDescription
pathYesFolder path as shown in the app; the leading / is optional

Delete workflow folder

sim workflows folders delete <path> [options]

Arguments

ArgumentRequiredDescription
pathYesFolder path as shown in the app; the leading / is optional

Options

OptionRequiredDescription
--recursiveNoDelete the folder and its descendants.
-y, --yesYesConfirm this operation.

List workflow folders

sim workflows folders list [options]

Also available as sim workflows folders ls.

Options

OptionRequiredDescription
--parent <value>NoDirect parent folder path.
--search <value>NoCase-insensitive substring match against the folder name.
--sort-by <value>NoField used to sort the result. Sorting by name is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: name, createdAt, updatedAt.
--sort-order <value>NoSort direction. Accepted values: asc, desc.

Rename or move a workflow folder

sim workflows folders move <path> <destination>

Also available as sim workflows folders mv.

Arguments

ArgumentRequiredDescription
pathYesFolder path as shown in the app; the leading / is optional
destinationYesFolder path as shown in the app; the leading / is optional

Delete workflow

sim workflows delete <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Take a workflow’s chat deployment offline

sim workflows chat unpublish <workflowId> [options]

Take a workflow’s chat deployment offline (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Show a workflow’s chat deployment

sim workflows chat status <workflowId>

Show a workflow’s chat deployment (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Publish or replace a workflow’s chat deployment

sim workflows chat publish <workflowId> [options]

Publish or replace a workflow’s chat deployment (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--identifier <value>YesURL slug the deployed chat answers on. Must be free across live deployments.
--title <value>YesTitle shown to visitors.
--description <value>NoDescription shown to visitors. Omitted clears it.
--customizations <json|@file>NoPresentation overrides. Omitted fields take platform defaults. (JSON, or @path / @- to read a file or stdin).
--auth-type <value>NoHow visitors are gated. public leaves the chat open to anyone holding the URL. Accepted values: public, password, email, sso.
--password <value>NoWrite-only password. Required whenever authType is password, and rejected otherwise. Never readable back.
--allowed-emails <json|@file>NoEmail addresses or domains admitted under email and sso gating. At least one is required for those modes. (JSON, or @path / @- to read a file or stdin).
--output-configs <json|@file>NoBlock outputs to surface to visitors. Omitted surfaces none. (JSON, or @path / @- to read a file or stdin).
--include-thinkingNoAllow visitors to receive provider thinking events.
--no-include-thinkingNoSend --include-thinking as false.
--include-tool-callsNoAllow visitors to receive tool lifecycle events.
--no-include-tool-callsNoSend --include-tool-calls as false.
-y, --yesYesConfirm this operation.

Deploy workflow

sim workflows deploy <workflowId> [options]

Deploy Workflow (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--name <value>NoOptional label for the deployment version.
--description <value>NoOptional release note for the deployment version.

Duplicate workflow

sim workflows duplicate create <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--name <value>NoName for the copy. Defaults to the source name, deduplicated within the folder.
--folder <value>NoFolder path as shown in the app; the leading / is optional.

Run a deployed workflow or execute saved state manually

sim workflows run <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--input <json|@file>NoTrigger input as JSON (JSON, or @path / @- to read a file or stdin).
--asyncNoQueue the run and return immediately.
--execution-timeout-seconds <value>NoMaximum duration of an asynchronous run, in seconds, capped by the plan's execution timeout. Requires async: true; otherwise returns 400.
--select-output <value...>NoReturn streamed outputs as blockName.path or childWorkflowId.blockName.path; selecting a child workflow applies to every invocation, requires --follow (space-separated, or @path / @- with one value per line; @@value for a literal leading @).
--include-file-base64NoInline eligible output files as base64 content. Rejected when async is true.
--no-include-file-base64NoSend --include-file-base64 as false.
--base64-max-bytes <value>NoMaximum total bytes of file content to inline as base64, lowering but never raising the server limit of 16 MiB. Rejected when async is true.
--run-id <value>NoOne-shot identifier for this run; NOT an idempotency key — reusing a claimed value fails with RUN_ID_CONFLICT instead of replaying the first result, and a fresh value starts another run.
--manualNoRun the current saved workflow state instead of the active deployment.
--trigger <blockId>NoEnter a manual run through this runnable trigger (requires --manual).
--mock-payloadNoUse the selected trigger's server-derived mock payload (requires --manual).
--from-block <blockId>NoRun manually from this saved workflow block.
--source-run <runId>NoPrior run whose persisted state supplies upstream outputs (requires --from-block).
--followNoStream the run as it happens; progress on stderr, result on stdout. The stream reports only success and output, so the result omits the run id and timings a non-streaming run returns.
--include-thinkingNoShow model reasoning while following (requires --follow).
--include-tool-callsNoShow tool calls while following (requires --follow).
sim workflows export <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Get workflow

sim workflows get <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Show a workflow’s current deployment

sim workflows deployment status <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Update workflow public API access

sim workflows deployment update <workflowId> [options]

Update Workflow Public API Access (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--is-public-api <true|false>YesWhether the deployed workflow should accept unauthenticated public API execution. Accepted values: true, false.

Get workflow state

sim workflows state get <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Replace workflow state

sim workflows state replace <workflowId> [options]

Replace Workflow State (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--dry-runNoValidate and lint without persisting. The response is identical to the committed write of the same body, so a caller can inspect lint and then re-send the request for real. Nothing is written, no audit entry is recorded, and collaborators are not notified.
--no-dry-runNoSend --dry-run as false.
--blocks <json|@file>YesBlocks keyed by block id. (JSON, or @path / @- to read a file or stdin).
--edges <json|@file>YesDirected connections between blocks. (JSON, or @path / @- to read a file or stdin).
--loops <json|@file>NoIgnored on write: loop containers are recomputed from blocks. (JSON, or @path / @- to read a file or stdin).
--parallels <json|@file>NoIgnored on write: parallel containers are recomputed from blocks. (JSON, or @path / @- to read a file or stdin).
--variables <json|@file>NoReplacement variable set. Omit to leave the stored variables untouched. (JSON, or @path / @- to read a file or stdin).
-y, --yesNoConfirm this operation (required unless --dry-run).

Get workflow version

sim workflows versions get <workflowId> <version>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version.

List workflow versions

sim workflows versions list <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--limit <n>NoMaximum items to return (0 for everything). Defaults to 100.
--cursor <value>NoContinue from nextCursor returned by a previous result.

Update workflow version

sim workflows versions update <workflowId> <version> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version.

Options

OptionRequiredDescription
--name <value>NoNew label for the deployment version.
--description <value>NoNew release note for the deployment version, or null to clear it. (--description null sends the word, not JSON null).

Import workflow

sim workflows import [options]

Options

OptionRequiredDescription
--workflow <json|@file>YesWorkflow export object, bare workflow state, or JSON string containing either form. (JSON, or @path / @- to read a file or stdin).
--folder <value>NoFolder path as shown in the app; the leading / is optional.
--name <value>NoOverride for the imported workflow name.
--description <value>NoOverride for the imported workflow description.

List workflows

sim workflows list [options]

Options

OptionRequiredDescription
--scope <value>NoWhich lifecycle set to list: active (default) for live workflows, archived for workflows a DELETE archived. The folder filter resolves against active folders only, so pairing it with archived returns an empty page when the containing folder was archived too. Accepted values: active, archived.
--folder <value>NoFolder path as shown in the app; the leading / is optional.
--deployed-onlyNoReturn only workflows with an active deployment when true.
--no-deployed-onlyNoSend --deployed-only as false.
--limit <n>NoMaximum items to return (0 for everything). Defaults to 0.
--search <value>NoCase-insensitive substring match against the resource name.
--sort-by <value>NoField used to sort the result. Sorting by name is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order. Accepted values: position, name, createdAt, updatedAt, runCount.
--sort-order <value>NoSort direction. Accepted values: asc, desc.

Move workflows

sim workflows move [options]

Options

OptionRequiredDescription
--workflow <value...>YesWorkflows to move. Duplicates are collapsed. (space-separated, or @path / @- with one value per line; @@value for a literal leading @).
--to <value>YesDestination folder path; / moves the workflows to the workspace root.

Restore an archived workflow

sim workflows restore <workflowId>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Revert workflow to version

sim workflows revert create <workflowId> <version> [options]

Revert Workflow To Version (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
versionYesNumeric deployment version, or active for the currently live version.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Rollback workflow

sim workflows rollback <workflowId> [options]

Rollback Workflow (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--to-version <value>NoDeployment version to reactivate. Omit to select the previous active version.
-y, --yesYesConfirm this operation.

Take a workflow out of deployment

sim workflows undeploy <workflowId> [options]

Take a workflow out of deployment (OAuth login or personal API key required)

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
-y, --yesYesConfirm this operation.

Update workflow

sim workflows update <workflowId> [options]

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.

Options

OptionRequiredDescription
--name <value>NoReplacement workflow name.
--description <value>NoReplacement workflow description; null clears it. (--description null sends the word, not JSON null).
--folder <value>NoFolder path as shown in the app; the leading / is optional.

Move a workflow to a folder

sim workflows mv <workflowId> <folder>

Arguments

ArgumentRequiredDescription
workflowIdYesUnique workflow identifier.
folderYesFolder path as shown in the app; the leading / is optional

List workflow resources and child folders together

sim workflows ls [path] [options]

Arguments

ArgumentRequiredDescription
pathNoFolder path to list; defaults to the root folder

Options

OptionRequiredDescription
--search <text>NoFilter folders and resources by name.
--limit <n>NoMaximum combined items to return (0 for everything). Defaults to 0.

Create a workflow directory at a path

sim workflows mkdir <path>

Arguments

ArgumentRequiredDescription
pathYesFolder path to create; the leading / is optional