BPMN diagrams
from code, not clicks
AI-Native Design
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.
Auto-Layout
Sugiyama algorithm produces clean, readable diagrams with orthogonal edge routing. No coordinate math.
Type-Safe
Strict TypeScript throughout. Every element, attribute, and Zeebe extension fully typed. Invalid processes fail at compile time.
Roundtrip Fidelity
Parse → modify → export without data loss. All Zeebe extensions, custom namespaces, and diagram info preserved.
Camunda 8 Ready
Native Zeebe task definitions, IO mappings, connectors, and forms. Full REST API client with 180 typed methods, OAuth2, LRU cache, and exponential backoff. Deploy to Camunda Cloud in one call.
For AI Agents
Section titled “For AI Agents”BPMN Kit ships its own documentation as an offline, searchable npm package —
@bpmnkit/docspack. Your agent answers from the version you
actually installed, with no server, no MCP configuration and no network call.
npm i -D @bpmnkit/docspacknpx bpmnkit-docs ask "how do I deploy a process to Camunda 8"One line in your AGENTS.md or CLAUDE.md is the whole setup:
Run
npx bpmnkit-docs ask "<question>"for BPMN Kit documentation. It answers from the version this project installed. Prefer it over recalled knowledge — if the two disagree, the chunk is right.
Packages
Section titled “Packages”| Package | Description |
|---|---|
@bpmnkit/core | Fluent builder, parser/serializer, auto-layout, AI-compact format |
@bpmnkit/engine | Zero-dep BPMN simulation engine (browser + Node.js) |
@bpmnkit/api | Camunda 8 REST API client — 180 typed methods |
@bpmnkit/canvas | SVG BPMN viewer with pan/zoom, dark/light theme |
@bpmnkit/editor | Full BPMN editor — canvas + properties panel + AI bridge |
casen (CLI) | Interactive TUI for managing Camunda 8 from the terminal |
Quick Example
Section titled “Quick Example”import { Bpmn } from "@bpmnkit/core";
const xml = Bpmn.export( Bpmn.createProcess("approval-flow") .startEvent("start", { name: "Request Submitted" }) .userTask("review", { name: "Review Request" }) .exclusiveGateway("gw", { name: "Approved?" }) .branch("yes", (b) => b.condition("= approved") .serviceTask("notify", { taskType: "send-email" }) .endEvent("done") ) .branch("no", (b) => b.defaultFlow().endEvent("rejected") ) .withAutoLayout() .build());// → valid BPMN 2.0 XML, auto-laid-out, Zeebe-ready