B3Forge
B3Forge is a visual workflow editor and a browser execution engine. You compose canister calls into a typed workflow in a node graph, and the workflow runs in your browser with a delegated identity: no backend executes it and no data leaves your device. It is in beta on the Internet Computer.
Open B3ForgeA workflow is a graph of three kinds of node:
- Variables define typed input values where the workflow starts, and compose values from literals and earlier outputs.
- CanisterCall calls a canister method, query or update. It follows one edge when the call succeeds and another when the method returns a top-level
Err. - Utility runs arithmetic, guards and list operations in the browser, with no network call:
add,sub,mul,div,scale_bps,rescalebetween token decimals, and guards such asguard_gtethat branch when a condition fails.
The node inspector offers each field only the upstream values whose type fits it. A Rust compatibility engine, compiled to WebAssembly, enforces the same rule.
Expressions
Section titled “Expressions”A node’s arguments are Candid expressions that refer to earlier nodes’ outputs:
(record { owner = $N0.recipient_account.owner; amount = $N1.Ok.amount : nat; memo = opt $N2.memo})$N0is the first node’s return value..Okand.Errfollow a variant’s branches.: natis an explicit, checked cast.optwraps a value in an option.
The browser resolves the expressions, encodes the call’s arguments and decodes its results with the same Rust semantics as the on-chain runtime.
Sharing
Section titled “Sharing”Workflows are stored and shared through the beta’s backend canister: publish a workflow to the community catalog, and others can fork it into a private copy. The backend stores, shares and indexes workflows; it never runs them.
Limits of the beta
Section titled “Limits of the beta”- Variables nodes compose values but do not compute: arithmetic and comparisons belong in Utility nodes.
- A call can branch only on a top-level
Errresult. - Every node is declared up front, and a call that fails at the network level stops the workflow, with no retry.