dibbla workflows
Build, version, and execute Dibbla workflows from the CLI — plus the supporting `nodes`, `edges`, `inputs`, `tools`, `revisions`, and `functions` sub-trees.
A Dibbla workflow is a directed graph of nodes (agents, functions, conditionals) wired together by edges. Each workflow has a definition, a set of inputs, optional API endpoints, and a revision history.
The CLI exposes the entire workflow surface as seven top-level command groups, all sharing the same global formatting flags:
| Command | Purpose | Alias |
|---|---|---|
dibbla workflows | Workflow CRUD, validation, execution, API docs. | wf |
dibbla nodes | Add or remove nodes in a workflow. | — |
dibbla edges | Connect, list, or disconnect node ports. | — |
dibbla inputs | Set node input values. | — |
dibbla tools | Attach or detach tools on agent nodes. | — |
dibbla revisions | Snapshot and restore workflow versions. | rev |
dibbla functions | Browse the registry of available functions. | fn |
Global flags
These apply to every command in this section:
| Flag | Purpose |
|---|---|
-o, --output yaml|json|table | Output format. Defaults vary by command. |
-q, --quiet | Minimal output, suitable for scripting. |
-v, --verbose | Log raw HTTP requests and responses — useful when debugging. |
dibbla workflows
list
List every workflow in the org.
$dibbla workflows list NAME LABEL NODES HAS_API expense-flow Expense Reporter 12 true support-bot Support Triage 8 false
get
Print the workflow definition. Use --revision <id> to fetch a specific snapshot.
$dibbla wf get expense-flow -o yaml > expense-flow.yaml $dibbla wf get expense-flow --revision a71z
| Flag | Purpose |
|---|---|
<name> (positional, required) | Workflow name. |
--revision <id> | Fetch a specific revision. Default: HEAD. |
create
Create a workflow from a YAML or JSON definition file.
| Flag | Purpose |
|---|---|
-f, --file <path> (required) | Workflow definition. |
$dibbla wf create -f expense-flow.yaml # stderr: confirmation line Created workflow expense-flow (revision: HEAD) # stdout: created workflow definition (yaml/json/table per --output)
update
Replace an existing workflow’s definition.
This does not create a revision. update, and every nodes / edges /
inputs / tools mutation, overwrite HEAD in place — the response literally
reports revision: HEAD. Only dibbla revisions create inserts a snapshot.
If you want to be able to go back, take one first.
| Flag | Purpose |
|---|---|
<name> (positional, required) | Workflow to update. |
-f, --file <path> (required) | New definition. |
delete
Delete a workflow and all its revisions.
| Flag | Purpose |
|---|---|
<name> (positional, required) | Workflow name. |
--yes | Skip the confirmation prompt. |
validate
Validate a definition without saving it. Useful in CI before update.
| Flag | Purpose |
|---|---|
-f, --file <path> (required) | Definition to validate. |
$dibbla wf validate -f expense-flow.yaml # Prints the validation report — valid: true/false, node_count, edge_count # In CI, test the payload. An invalid definition still exits 0: $dibbla wf validate -f expense-flow.yaml -o json | jq -e '.valid'
execute
Execute a workflow, optionally targeting a specific API node.
| Flag | Purpose |
|---|---|
<name> (positional, required) | Workflow name. |
--data <json> | Inline JSON input data. |
-F, --file <path> | JSON input file. Capital F here — on execute, lowercase -f is --follow. |
-f, --follow | Stream the run’s events instead of returning immediately. |
--async | Return as soon as the run is accepted. |
--node <id> | Target a specific API node. |
$dibbla wf execute expense-flow --data '{"amount": 42}' $dibbla wf execute expense-flow -F input.json --node api-submit url
Print the URL of the workflow editor.
| Flag | Purpose |
|---|---|
<name> (positional, required) | Workflow name. |
--revision <id> | URL for a specific revision. |
api-docs
Print readable API endpoint documentation, including HTTP method, URL, request and response schemas, and a curl example.
| Flag | Purpose |
|---|---|
<name> (positional, required) | Workflow name. |
--revision <id> | API docs for a specific revision. |
dibbla nodes
add
Add a node to a workflow. The node definition can come from a file or be passed inline as JSON.
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Target workflow. |
-f, --file <path> | Node definition (YAML/JSON). |
--inline <json> | Inline JSON node definition. |
One of --file or --inline is required.
$dibbla nodes add expense-flow -f nodes/classifier.yaml $dibbla nodes add expense-flow \ --inline '{"id":"sum","type":"function","function":"math.sum"}'
remove
Remove a node by ID.
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Workflow name. |
<node_id> (positional, required) | Node to remove. |
--yes | Skip the confirmation prompt. |
dibbla edges
Edges connect a source node’s output port to a target node’s input port. The CLI specifies an edge as "<src.port -> tgt.port>".
add
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Workflow name. |
"<src.port -> tgt.port>" (positional, required) | Edge specification. Quote it — the arrow contains shell-special characters. |
$dibbla edges add expense-flow "classifier.out -> sum.in" remove
Same shape as add, removes instead.
list
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Workflow name. |
$dibbla edges list expense-flow EDGE classifier.out -> sum.in sum.out -> approver.amount approver.approved -> notify.message
dibbla inputs
set
Set a single input value on a node.
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Workflow name. |
<node> (positional, required) | Node ID. |
<input> (positional, required) | Input name. |
<value> (positional, always required) | New value. |
--null | Store null regardless of what <value> says. The argument is still required — pass "". |
$dibbla inputs set expense-flow classifier model gpt-4o-mini $dibbla inputs set expense-flow classifier system_prompt "" --null
dibbla tools
Attach or detach tools on agent nodes.
add
| Flag | Purpose |
|---|---|
<workflow> <agent> <tool> (positional, all required) | Workflow name, agent node ID, tool name. |
remove
Same arguments as add, removes instead.
$dibbla tools add expense-flow classifier web_search $dibbla tools remove expense-flow classifier web_search
dibbla revisions
Workflow snapshots — and they are explicit only. update, nodes, edges, inputs and tools all write straight to HEAD and leave no history behind them; the editor’s autosave does the same. dibbla revisions create is the only thing that takes a snapshot.
The practical consequence: if you want to be able to undo a change, snapshot before you make it. There is nothing to recover afterwards.
Revision ids are four base-36 characters (a71z), not a prefixed hash.
list
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Workflow name. |
$dibbla rev list expense-flow ID TIMESTAMP LABEL k3f9 2026-04-28T14:02:11Z Snapshot before tool swap a71z 2026-04-22T11:18:38Z Initial create
create
Create a snapshot of the current HEAD.
| Flag | Purpose |
|---|---|
<workflow> (positional, required) | Workflow name. |
restore
Restore a previous revision to HEAD.
Nothing snapshots the current HEAD for you. The restore overwrites HEAD in place, and whatever was there is gone — there is no roll-forward. Take a revision first:
dibbla revisions create expense-flow # snapshot what you are about to replace
dibbla revisions restore expense-flow <revision_id>
| Flag | Purpose |
|---|---|
<workflow> <revision_id> (positional, both required) | Workflow and revision to restore. |
$dibbla rev restore expense-flow a71z Restored revision a71z for expense-flow
dibbla functions
Browse the function registry — the catalog of pre-built functions that workflow nodes can call.
list
| Flag | Purpose |
|---|---|
--server <id> | Filter by server name. |
--tag <tag> | Filter by tag. |
$dibbla fn list --tag math NAME SERVER DESCRIPTION TOOLS math.sum core Sum a list of numbers math.average core Arithmetic mean
get
Print the full definition of a function — schema, inputs, outputs, side effects.
| Flag | Purpose |
|---|---|
<server> <name> (positional, both required) | Server identifier and function name. |
$dibbla fn get core math.sum -o yaml See also
dibbla run— local task pipelines, separate from the workflow runtime.dibbla deploy— deploy the app that hosts your workflow’s API endpoints.