Workflows
Deploying and managing workflows is the CLI’s original purpose. You author a workflow as a YAML file (see YAML format), deploy it, and the CLI keeps the file and the server-side workflow in sync via an embedded workflowId.
Workflow commands live under hutly workflow <verb> (alias: hutly workflows <verb>). The grouped form is canonical going forward; the historical top-level forms (hutly deploy, hutly list, …) remain as aliases — hutly deploy and hutly workflow deploy are equivalent.
deploy
Deploy a workflow from a YAML file. Available as both hutly deploy and hutly workflow deploy.
# Deploy
hutly workflow deploy ./workflows/my-workflow.yaml
# Deploy and publish in one step
hutly workflow deploy ./workflows/my-workflow.yaml --publish
# Preview what would happen without calling the API
hutly workflow deploy ./workflows/my-workflow.yaml --dry-run
# Force create a new workflow, ignoring any existing workflowId
hutly workflow deploy ./workflows/my-workflow.yaml --force-new| Flag | Purpose |
|---|---|
--publish |
Publish the workflow immediately after deploying |
--dry-run |
Show what would be deployed without calling the API |
--force-new |
Create a new workflow even if the YAML already has a workflowId |
How it works:
- First deployment creates a new workflow and writes the assigned
workflowIdback into the YAML file. - Subsequent deployments update the existing workflow identified by that
workflowId. - All
!includedirectives are resolved before deployment.
Commit the YAML file (now containing workflowId) to version control after the first deploy.
publish
Publish a workflow so it can run in production. Available as both hutly publish and hutly workflow publish.
hutly workflow publish <workflow-id>unpublish
Unpublish a workflow. Removes the AWS Step Functions state machine but keeps the workflow definition, so you can re-publish later.
hutly workflow unpublish <workflow-id>list
List workflows in the organisation. Available as both hutly list and hutly workflow list.
# All workflows
hutly workflow list
# Filter by status
hutly workflow list --status published
hutly workflow list --status draft
# Search by name/description (server-side filter)
hutly workflow list --search slack
# Limit results
hutly workflow list --limit 10
# Machine-readable output for jq / scripts
hutly workflow list --json --pretty| Flag | Purpose |
|---|---|
--status <status> |
Filter by published or draft |
--search <query> |
Server-side search across name/description |
--limit <n> |
Cap the number of results |
--json / --pretty |
Machine-readable / indented output |
get
Fetch a single workflow’s full definition as JSON.
hutly workflow get <workflow-id>
hutly workflow get <workflow-id> --prettypull
Export an existing workflow back to a YAML file. Available as both hutly pull and hutly workflow pull.
# Export to an auto-generated filename
hutly workflow pull <workflow-id>
# Export to a specific file
hutly workflow pull <workflow-id> -o ./workflows/exported.yamldelete
Delete a workflow. Available as both hutly delete and hutly workflow delete.
# Delete with a confirmation prompt
hutly workflow delete <workflow-id>
# Delete without confirmation (for scripts)
hutly workflow delete <workflow-id> --yesvalidate
Validate a workflow and all of its !include dependencies without deploying.
hutly workflow validate ./workflows/my-workflow.yamlsynthesize
Output a complete workflow YAML with every !include directive resolved inline — useful for inspecting exactly what will be deployed.
hutly synthesize ./workflows/my-workflow.yamlbeautify
Reorder and format a workflow YAML file for readability.
hutly beautify ./workflows/my-workflow.yamltranslate
Translate a workflow definition between YAML and JSON via the API.
hutly workflow translate --helptriggers
List every trigger wired to a workflow — webhooks, schedules, and integration triggers.
hutly workflow triggers <workflow-id>See Webhooks, Schedules & Tasks for managing triggers, and Canvas / set-trigger-canvas for binding an HTML canvas as a workflow’s trigger input UI.
executions
Inspect and trigger workflow executions.
hutly workflow executions --helpExamples
Deploy a new workflow
$ hutly deploy ./workflows/form6.yaml
✓ Loaded workflow YAML with !include directives
✓ Converted YAML to workflow definition
✓ Created workflow d51ebe98-3da9-4003-805b-b3eba98e4b7e
✓ Updated form6.yaml with workflowId
✓ Deployment successful!
Name: Form 6 (New Farm)
ID: d51ebe98-3da9-4003-805b-b3eba98e4b7e
Status: draft
Don't forget to commit the updated YAML file with workflowId!Update an existing workflow
$ hutly deploy ./workflows/form6.yaml
✓ Loaded workflow YAML with !include directives
✓ Converted YAML to workflow definition
✓ Updated workflow d51ebe98-3da9-4003-805b-b3eba98e4b7e
✓ Deployment successful!
Name: Form 6 (New Farm)
ID: d51ebe98-3da9-4003-805b-b3eba98e4b7e
Status: draftTips
- Version control — always commit YAML files with their
workflowIdafter the first deploy. - File organisation — keep instructions and schemas in separate directories for reuse (see YAML format).
- Dry run — use
--dry-runto preview changes before deploying. - Batch operations — drive multiple deploys from a shell script.