@bpmn-sdk/core is the foundation of the BPMN SDK. It gives you everything to work with BPMN 2.0, DMN 1.3, and Camunda Form definitions in pure TypeScript — no XML wrestling, no runtime dependencies.
Parse → Modify → Validate → Export
Features
BPMN 2.0 — parse, create, and export process diagrams with full Zeebe/Camunda 8 extension support
Fluent Builder API — construct valid processes programmatically, never touch raw XML
Sugiyama Layout Engine — auto-position elements with clean orthogonal edge routing
DMN 1.3 — decision tables, including FEEL expression support
Camunda Form Definitions — type-safe form schema builder
Optimizer — built-in rule engine to detect and auto-fix anti-patterns
Compact Format — 70% smaller token-efficient JSON representation for AI/LLM workflows
Zero Dependencies — runs in browsers, Node.js, Deno, Bun, and edge runtimes
import{ Bpmn }from"@bpmn-sdk/core"const defs = Bpmn.parse(xml)const process = defs.processes[0]// Access flow elementsfor(const el of process.flowElements){console.log(el.type, el.id, el.name)}// Serialize back to XMLconst updated = Bpmn.export(defs)
Auto-layout a process
import{ Bpmn, layoutProcess }from"@bpmn-sdk/core"const defs = Bpmn.parse(xml)const result =layoutProcess(defs.processes[0])// result.defs now has updated DI coordinatesconst laid = Bpmn.export(result.defs)