A flow builder for visually composing and running multi-agent workflows
Agent Flow lets you build complex AI pipelines by visually connecting agents, models, and knowledge bases.
It is a visual workflow builder similar to n8n or Dify — you can compose multi-agent orchestration entirely by drag and drop.
Three conditions must all be met for the Flows tab to appear in your workspace.
The environment must be licensed for agent_flow
Your account must have Flow permission (workspace.agent_flows) — admins always qualify
The address you connect to must be a preview host — Flows is still a preview feature, so the menu appears only on designated development and demo hosts
Because of the third condition, the menu will not appear on a regular production address even with the license and the permission in place. Contact your administrator if you need access.
Workspace > Flows shows every flow that has been created.
Flow list
Each flow card shows:
Element
Description
Active / Inactive badge
Whether the flow is active
Node count
Number of nodes in the flow
Name
Flow identifier name
Description
What the flow is for
Author
Shown as “By {author name}“
Updated
Time of the last change (relative)
Use All / My Flows at the top to narrow the list, or Search Flows to filter by name.
The ⋯ menu at the top-right of each card offers Duplicate, Delete, and the Active / Inactive toggle.
An inactive flow is blocked both in the chat model list and for webhook calls. For a flow you want to pause rather than lose, switch it to inactive instead of deleting it — the configuration is preserved.
In Workspace > Flows, click + New Flow at the top right.
After entering the create screen
Fill in the basics in the left panel.
Field
Description
Example
Enter flow name
Display name of the flow
”Document Analysis Flow”
Flow ID
2–50 character identifier starting with a lowercase letter or digit
doc-analysis
Enter description
What the flow is for
”Summarizes documents and extracts key points”
Stateful
Keep conversation state across runs (on by default)
On
Flow ID availability is checked as you type — a green check when it is free, a red X with “This Flow ID is already in use” when it is taken.
The Flow ID cannot be changed after creation. The on-screen hint mentions lowercase letters, numbers, and hyphens, but underscores (_) are accepted as well (^[a-z0-9][a-z0-9_-]*$).
2
Start from a template, or from an empty canvas
The empty canvas of a new flow opens with the Start from a template gallery. Picking a card starts you off with nodes and edges already laid out.
Template
What it does
Simple LLM Response
Answers the user input with a single model call
Guarded Agent Answer
Screens the input with a guardrail, then lets an agent answer when it passes
Intent Routing
Routes to differently prompted models depending on question / request / other
Parallel Model Compare
Sends the same input to two models in parallel and merges both answers
Knowledge Base Q&A
Retrieves documents from a knowledge base and answers using that context
Summarize Pipeline
Summarizes with a model, then formats the result with a transform template
Click Build from scratch (✕) at the top right of the gallery to dismiss it and build on an empty canvas.
Templates lay out the skeleton only. Resources such as models, agents, and knowledge bases must be selected on each node before the flow will run.
Picking a template turns the Stateful toggle off, because the template replaces the whole flow configuration. If the flow should keep conversation context, switch Stateful back on after choosing a template.
3
Place nodes
Drag a node from the Node panel on the left onto the canvas, or click it to drop it at the center of the canvas.
As the palette grows, filter it with the Search nodes box at the top.
Dragged nodes land where you drop them; clicked nodes land at the center of the canvas
4
Connect nodes
Drag from a node’s output handle (dot on the right) to the next node’s input handle (dot on the left).
Data flows left to right.
Handle positions: left = input, right = output.
Branching nodes — Condition, Router, Guardrail, Approval Gate — stack multiple output handles vertically on the right.
The Start node has no input handle, and the Output node has no output handle.
5
Configure nodes
Clicking a node opens its settings panel on the right.
For an Agent node pick the agent to run; for a Model node pick the LLM and set the system / user prompts.
Drag the panel’s left edge to resize it.
Once a flow exists, saving happens in two stages. Saving on the edit screen only updates the draft; publishing is what changes the version that actually runs.
Button
What it does
Save Draft
Saves the current canvas as a draft. The live flow is untouched
Publish
Promotes the draft to live. The previous live version is kept as a version snapshot
When an unpublished draft exists, the Publish button carries an amber Unpublished draft dot and a banner appears above the canvas.
Editing draft — the live flow is unchanged until you publish
Discard draft on the right of the banner asks “Discard this draft and return to the live version?” and then restores the canvas to the live version.
If you only save a draft and leave, nothing changes for your users. Chat and webhook calls keep running the previously published version. Press Publish to actually roll the change out.
This does not apply while creating a flow. The create screen has a single Save & Create button; the split into Save Draft / Publish begins on the edit screen.
Each publish pushes the previous live version onto a snapshot stack (up to 20, oldest dropped beyond that).Open the Versions tab in the test drawer to review the publish history and press Restore — the snapshot comes back as a draft. Review it on the canvas and press Publish to make the rollback final.
The first node in the flow is used as the entry point
No Output node
Leaf nodes automatically connect to the flow end
Orphan node
A node connected to nothing (a single-node flow is fine)
Loop detected
The graph contains a cycle
Missing Start / Output nodes are not errors. Implicit entry and exit are supported, so they are reported as warnings only. Adding both is still clearer about intent.
If a Condition, Router, or Guardrail branch inside the cycle leaves it, the loop is considered safe and only a warning is reported. It is an error only when no branch leaves the cycle at all.Execution is bounded by a superstep limit (50 by default), and loop exits are built by combining {Label.loop_count} with a Greater than condition in a Condition node.
Test Run in the toolbar opens a test drawer below the canvas. It runs the current canvas as-is, unsaved, so you can check behavior before publishing.The drawer has three tabs.
Tab
Contents
Test Run
Enter test input and press Run. Shows per-node progress and the final output
Run History
Execution history for this flow (owners and admins see all runs; shared users see only their own)
Versions
Publish history and Restore
While running, each node’s status (running / completed / error) appears on the canvas and in the step list at the same time, and clicking a step expands a preview of that node’s output. With a KBSphere agent the number of retrieved sources is shown as well.Drag the top edge of the drawer to resize it.
If the flow contains an Approval Gate, execution stops there and an Approval required card appears. Add a note and press Approve or Reject to resume from that point.
Start a new chat
In the model selector, a Flow connection type filter appears. Select it
Pick the flow, then type your message
Flows appear in the model selector as a connection type filter, not as a separate tab. The filter only shows up when at least one flow is available to you.
Chat runs carry state per conversation, so context is preserved within a chat regardless of the Stateful toggle.
The Webhook endpoint is shown near the bottom of the left panel on the edit screen. Copy URL copies the full address.
POST /api/v1/agent-flows/{flow ID}/invoke
Request field
Description
input
Input passed to the flow (required)
stream
true for an SSE stream; defaults to false
session_id
Conversation session key. Supplying it keeps state per session
The default response is JSON containing flow_id, session_id, and output.
The endpoint also accepts an API key (Bearer sk-...), which makes it usable from external systems. The caller needs read access to the flow, and calls to an inactive flow are rejected.
The violet AI Assistant button at the bottom right of the editor opens a conversational builder. Describe the flow you want in plain language and the AI generates the nodes and edges directly onto the canvas.
1
Pick a model
Choose the model the builder should use in the selector in the panel header.
2
Describe your intent
Describe the flow you want, e.g. “Build a flow that classifies customer inquiries by department.”
Suggestion chips are shown when the panel first opens — click one to start immediately.
3
Answer the AI's questions
The AI asks follow-ups — whether to use a guardrail, which routing style, and so on — as buttons. Click the option you want.Examples:
“Should we use a guardrail?” → [PII protection][Banned words][None]
Once it has enough information, the nodes and edges are placed on the canvas. Keep the conversation going to refine them.
“Change the router node to a condition”
“Add agent C in the middle”
“Remove the guardrail node”
Being specific up front skips the follow-up questions. For example: “Build a flow with a PII guardrail → sentiment routing → separate agents for positive and negative.”
Conversation history — the transcript is stored with the flow, so you can pick up where you left off
Editing existing flows — opened on an existing flow, it reads the current structure and proposes changes
Live canvas updates — generated nodes appear on the canvas immediately
Resizable panel — drag the handle at the top of the panel
The AI Assistant button is shown only to users with write access to the flow.
Anything the AI generates can still be edited by hand. Sketching the skeleton with AI and tuning each node yourself works well. Results stay a draft until you publish, so there is little risk in experimenting.
Export and import are performed from the flow editor’s top toolbar.
Export
Import
Click Export in the toolbar to download a JSON file.
The file contains the flow name, description, node configuration, and connections.
Click Import in the toolbar and upload a previously exported JSON file.
Only JSON of the form type: "agent_flow" is accepted.
Agents, models, and guardrails referenced by the imported flow must exist in the current environment. Press Validate first to surface any missing-resource errors.
Inputs containing personal information are blocked, and only safe inputs reach the agent.
Setting Block Action to Continue lets you shape the block information in a Transform node and explain it to the user.
A model-written draft only reaches the send step after a person reviews it.
Set On Reject to Take the reject branch to design a rejection path, or Stop the flow to end there.
Given a newline-separated list or a JSON array as input, the Iteration node runs each item through the LLM in parallel and joins the results.
Control the load with Concurrency (1–8) and Max Items.
Flows use the same access control as other workspace resources.For flows, both the create and the edit screen open the access control modal from the lock-icon [Access] button in the top toolbar — unlike other resources, there is no inline permission area on the screen itself.Pick the sharing scope with the Access permission selector in the modal.
Option
Description
Everyone
Readable by all users
Selected groups only
Available to members of the groups listed under Accessible groups
A group in the table has read access by that fact alone; check the Editable column to grant write access as well.
A newly created flow is readable by everyone by default. Along with channels, this is one of the few exceptions in the workspace — to narrow it, open the flow after creating it and switch Access permission to Selected groups only yourself.
The Everyone option is shown to admins only. Regular users see just Selected groups only.
You must press Apply in the access control modal. Selecting groups and closing the modal does not save the change. After applying, you still need to press Save & Create (create) or Save Draft · Publish (edit) to persist it.
Organization units cannot be selected on this screen. To open access to an organization unit, an administrator must link the organization unit to a group — users in that organization are then treated as members of the group. See Sharing & Permissions for details.
The Flows tab requires all three of the following:
An environment licensed for agent_flow
Flow permission on your account (workspace.agent_flows)
A connection address that is a preview host
Flows is still a preview feature, so even with the license and permission the menu will not appear on a regular production address. Ask your administrator to confirm.
I saved, but chat still behaves the old way
Save Draft on the edit screen does not change the live flow. You must press Publish for chat and webhook calls to pick it up.If the “Editing draft” banner is above the canvas, or the Publish button has an amber dot, the change is still unpublished.
Which agents can I use in a flow?
Every agent registered in the workspace.
Standard mode, KBSphere (enhanced RAG), and DBSphere (database) modes are all supported.
What happens when a flow hits an error?
By default, execution stops at the failing node and an error message is shown.To handle it differently per node, open the Error handling & retry section at the bottom of the settings panel and set On error (Stop the flow / Skip and continue / Use default value) along with Max retries, Retry interval, and Timeout. Every node except Start has this section.
There is no separate Error Handler node.
Can I run the same node repeatedly?
Two ways:
Iteration node — for processing many items at once in parallel (concurrency 1–8)
Loop edges — a cycle that returns to an earlier node based on a condition. Fully supported, provided one Condition / Router / Guardrail branch leaves the loop
Loop execution is bounded by a superstep limit (50 by default), and the exit is built by combining {Label.loop_count} with a Greater than condition.
Can one flow connect several agents?
Yes — chain agents sequentially or branch with Condition / Router nodes.
Each agent’s output is passed automatically as the next agent’s input.To have one model split work across several agents and combine the results, use the Supervisor node.
In what order does a flow execute?
Execution starts at the Start node and follows the connected nodes in order.
A Condition node branches to the true or false path based on its evaluation, and a Router node branches to the matching route.
A Merge node is where parallel paths join.Without a Start node the first node becomes the entry point; without an Output node the leaf nodes become the exit.
How do I roll back to an earlier version?
Open the Versions tab in the test drawer, review the publish history, and press Restore.
Restore brings that version back as a draft, so review it on the canvas and press Publish to make the rollback final.Up to 20 snapshots are retained.
How do I move a flow to another environment?
Use Export in the editor toolbar to download a JSON file, then Import it in the target environment’s editor.
The referenced agents, models, and guardrails must exist there too — press Validate after importing to confirm.