Overview
You build a workflow by writing anagent-workflow/v1 YAML document. This guide
covers the editor, the editing assistant, the anatomy of the DSL, and each
executor with a working snippet. For branching, loops, and end-to-end examples,
continue to Advanced Workflows.
The workflow editor
Open Settings → Workflows and click New workflow to create one — it opens immediately in the editor with a starter template you can shape. The editor has:- YAML source on the left, with live validation. A Valid / Invalid badge and inline error messages tell you the moment something is off.
- Flow preview on the right — a read-only graph of your tasks and their dependencies, updated as you type.
- Inputs panel — provide values for a test run.
- Run — execute the workflow and watch each task’s status and output. Click a node in the graph to inspect that step’s output; the result pane shows the final output by default.
- Runs — recent run history for the workflow, so you can reopen a past run’s output when debugging.
Saving writes the file to
~/.enconvo/workflows/<id>.yaml. Keep the id (file
name) stable — run history is keyed to it, so renaming orphans past runs.The editing assistant
Below the YAML source is an editing assistant. Describe the change you want in plain language — “add a step that searches the web for the topic and feed it into the summary”, “switch the summary to Claude Haiku”, “wrap the last step in a retry” — and the assistant edits the document for you. The assistant knows the full DSL and can discover the APIs of your installed plugins, so it wires up the righttool: paths and parameters. Its edits update
the YAML and flow graph live, leaving the changes unsaved so you can review
them before clicking Save.
Anatomy of a workflow
Every workflow has a small metadata header and atasks map:
Inputs
Declareinputs with default values. Callers override them per run — the run
merges provided inputs over the file’s defaults. When a workflow is launched from
SmartBar, the typed text arrives as inputs.input_text:
Executors
Shell — run / command
Runs a command in your login shell. command: is an alias of run:. The output
is an object, so reference .stdout, .stderr, .exitCode, or .text:
cwd, shell, timeoutMs, and env (a map of
string/number/boolean values).
Prompt — one-shot LLM
A single LLM call. The output is the reply text (or parsed JSON when you attach anoutput_schema, covered in Advanced Workflows):
Agent — full agent delegation
Delegates to an agent that can use tools, read files, and browse. Provide the agent command key and amessage:
Tool — call a plugin API
Calls any installed plugin’s Local API endpoint by its slash path, withparams.
You can discover the exact path and parameters for any plugin under
Settings → Plugins (open a plugin and copy an endpoint’s path), or ask the
editing assistant:
Transform — reshape data
Pure template evaluation with no side effects — useful for assembling a final result from earlier task outputs:Subworkflow — compose workflows
Run another workflow as a step, either by id or inline. Its output is the child run result; reference the child’s task outputs viaoutput.outputs.<taskId>:
Referencing data with templates
Workflows use Nunjucks templates. The values available in any task:| Reference | Available |
|---|---|
{{ inputs.x }} | Workflow inputs |
{{ tasks.<id>.output }} | An upstream task’s output |
{{ item }} / {{ index }} | The current item/index inside a foreach |
{{ round }} / {{ last }} | The round number / previous round’s output inside a loop |
{{ now }} | Current timestamp |
{{ env.HOME }} | Process environment variables |
Shell output is an object — use
tasks.x.output.stdout, not the bare
tasks.x.output. Plugin tool tasks often return an assistant-message object; run
the workflow once and inspect the real output shape before referencing nested
fields.Run, inspect, and save
Run
Click Run. Watch each task’s status in the flow graph, and click a node
to see that step’s output.
Debug from history
If a run fails, open Runs and reopen it — the failing task’s
error,
stdout, and stderr are recorded. Read them before editing.Related
Advanced workflows
Branching, loops, output schemas, subworkflows, and per-task models.
Plugins
The plugins whose APIs you call from
tool: tasks.