A fluent TypeScript API that generates production-ready BPMN 2.0 diagrams with auto-layout. Built for AI agents, automation platforms, and workflow builders.
LLMs call a fluent API instead of wrestling with raw XML. A compact intermediate format makes the entire diagram fit in a single prompt — AI generates it, the SDK validates and renders it.
Pure ESM, tree-shakeable. Runs in browsers, Node, Deno, Bun, and edge runtimes.
Sugiyama layout engine produces clean, readable diagrams with orthogonal edge routing. No coordinate math.
Strict TypeScript throughout. Every element, attribute, and Zeebe extension is fully typed. Invalid processes fail at compile time.
Parse → modify → export without data loss. All Zeebe extensions, custom namespaces, and diagram info preserved perfectly.
Native Zeebe task definitions, IO mappings, connectors, forms, and modeler templates. Deploy directly to Camunda Cloud.
Drag the divider to compare
Watch TypeScript code generate a live BPMN diagram in real time — every method call updates the preview.
import { CamundaClient } from "@bpmn-sdk/api";
const client = new CamundaClient({
baseUrl: "https://api.cloud.camunda.io",
auth: {
type: "oauth2",
clientId: process.env.CAMUNDA_CLIENT_ID,
clientSecret: process.env.CAMUNDA_CLIENT_SECRET,
audience: process.env.CAMUNDA_AUDIENCE,
},
});
// Deploy a process definition
await client.process.deploy({ resources: [{ content: xml }] });
// Start a new instance
const instance = await client.process.startInstance({
bpmnProcessId: "my-flow",
variables: { orderId: "ord-123" },
});
// React to lifecycle events
client.on("request", (e) => console.log(e.method, e.url));
client.on("error", (e) => metrics.inc("api.error")); A complete TypeScript client for the Camunda 8 REST API. Every endpoint is typed end-to-end — from request body to response shape. Drop it into any Node.js or edge runtime.
Arrow-key navigation through menus, commands, and input forms. No flags to memorize.
Store multiple Camunda clusters. Switch between dev, staging, and prod in one keystroke.
Processes, jobs, incidents, decisions, variables, messages — all accessible from the terminal.
Query results rendered as scrollable tables with detail view on enter. Copy-friendly output.
pnpm add @bpmn-sdk/core bun add @bpmn-sdk/core npm install @bpmn-sdk/core yarn add @bpmn-sdk/core import { Bpmn } from "@bpmn-sdk/core";
const xml = Bpmn.export(
Bpmn.createProcess("hello")
.startEvent("start")
.serviceTask("task", {
name: "Hello World",
taskType: "greet",
})
.endEvent("end")
.withAutoLayout()
.build()
); import { Engine } from "@bpmn-sdk/engine";
const engine = new Engine();
await engine.deploy({ bpmn: xml });
engine.registerJobWorker(
"greet",
async (job) => {
console.log("Hello!");
await job.complete();
}
);
engine.start("hello");