Aug 12, 2026

Builder and SDK are the same graph

The canvas, the workflow JSON, and the node registry describe one thing. Pick the surface. Do not pick a second product.

Teams split here for no good reason. One group wants a canvas. The other wants a file in git. Those are two editors. They are not two products.

We keep one graph: the same nodes, the same registry, the same run. That graph is the workflow — the versioned executable behind the agent you ship. The builder draws it. The SDK writes it. The host executes that JSON. If those views diverge, you now operate two graphs. That is the second product. We will not ship it.

Builder canvas for a document summarization graph

One document

This is the thing both surfaces emit. The canvas is a view. The TypeScript is a view. The run does not care which view you used.

{
  "name": "invoice-recovery",
  "nodes": [
    { "id": "fetch", "type": "http", "url": "https://billing.internal/invoices" },
    { "id": "reason", "type": "model", "prompt": "Explain the failure in one paragraph." },
    { "id": "notify", "type": "http", "url": "https://slack.internal/hooks" }
  ],
  "edges": [
    { "from": "fetch", "to": "reason" },
    { "from": "reason", "to": "notify" }
  ]
}

The useful test is boring. Can you open the same run in both surfaces and see the same nodes, the same checkpoints, the same replay target? If not, the product has split, even if the marketing has not.

Who authors what

SurfaceYou use it whenIt writes
BuilderYou want to see the pathThe same workflow JSON
SDKThe graph lives in a repoThe same workflow JSON
HostA trigger firesA run against that JSON

Pick the surface that matches how you already work. The checkpoint and the replay loop stay the same.

More on that in Why replay needs the checkpoint.

You write the agent.
We execute the graph.

Linea Labs © 2026