Skip to Content
AgentsVisual builder

Visual builder

The visual builder is where you draw a workflow agent: a fixed list of steps that runs the same way every time. You drag steps onto a canvas, connect them in order, and fill in what each one does. For example, a nightly report: fetch the numbers, have an AI write a short summary, check the numbers, return the summary.

Use it when the same steps should always happen in the same order. If the work changes from one request to the next, an autonomous agent is simpler.

Visual pipeline builder

What is on the screen

AreaWhereWhat it is for
StepsLeft panelEvery kind of step you can drag onto the canvas
CanvasMiddleWhere you arrange the steps and connect them
Step settingsRight panel, opens when you click a stepWhat the selected step does

The Workflow and Autonomous switch at the top changes the kind of agent.

Build a workflow

  1. Add steps. Find the step you need in the Steps palette on the left and drag it onto the canvas.
  2. Connect them. Drag from the dot on the right side of one step to the dot on the left side of the next. The work flows left to right along the connections. To remove a connection, click it and press Delete or Backspace.
  3. Fill in each step. Click a step to open its settings on the right. What it asks for depends on the kind of step.
  4. Save. Click Save in the top bar. Until the workflow is complete, a To finish: line under the toolbar lists what is missing and Save stays disabled; see Pipeline validation.
  5. Test. Click Test, give it some sample input and run it. The results show the output and what each step did.

Node palette

The kinds of step

Each kind has its own colour on the canvas.

StepWhat it does
InputWhat the run starts with
OutputWhat the run returns
Model callAsks an AI model something and passes on the answer
Tool callUses one of your tools, such as “look up an order”
ConditionGoes one way or the other, depending on a yes/no check
TransformFills in a text template with values from earlier steps
LoopReads a list from earlier steps and passes it on, up to a limit
ParallelStarts several branches at the same time
MergeJoins branches back together
Sub-agentRuns another of your agents as one step
VerifyHas one or more checker models look for mistakes in an answer
Extract contextSums up what earlier steps found into a short brief
DecisionAsks a model one question with fixed answers and follows the chosen answer

See Step types for every setting of each.

Workflow or autonomous

Workflow is the canvas above: you decide every step and the order they run in. Best when the job must be repeatable and predictable.

Switching to Autonomous replaces the canvas with a form, in this order:

  • Personality & style and Instructions: who the agent is and what it should do
  • Work mode: Single, Cascade, Best of N, Panel, or Explore, extract, patch, with the model slots that mode needs
  • Memory: whether it remembers between conversations, where, for whom, what it saves and for how long
  • Capabilities: the tools and APIs it may use, other agents it can call, the machine its runner tools run on, and temporary agents
  • Run limits, and Always on (it keeps working in the background; see Always on)

The AI then decides which tools to call and in what order. See Autonomous agents.

Moving around the canvas

ActionHow
Move the viewClick and drag on an empty part of the canvas
ZoomScroll wheel or pinch
Select severalShift + click, or drag a box around them
Delete selectedDelete or Backspace
UndoCtrl/Cmd + Z
RedoCtrl/Cmd + Shift + Z

For developers

Once the agent is active, run it from your terminal:

$ npx @almyty/agents run invoice-pipeline \ --input '{"file_url": "https://example.com/invoice.pdf"}'

See the Agents CLI for --watch, --json, and more.

The graph you draw is stored as a pipeline object of nodes and edges, run as a directed acyclic graph. This is what export and import produce:

{ "pipeline": { "nodes": [ { "id": "input_1", "type": "input", "data": { "schema": { "type": "object", "properties": { "query": { "type": "string" } }, "required": ["query"] } } }, { "id": "llm_1", "type": "llm_call", "data": { "providerId": "provider-uuid", "userPromptTemplate": "Answer: {{input.query}}" } }, { "id": "output_1", "type": "output", "data": { "mapping": "{{nodes.llm_1.output}}" } } ], "edges": [ { "id": "e1", "source": "input_1", "target": "llm_1" }, { "id": "e2", "source": "llm_1", "target": "output_1" } ] } }

Each node’s canvas position is stored in its position field ({ x, y }) and is included in export and import. The Input step’s data is described with a JSON Schema; the Output step maps the final result from upstream steps.