Why correctness first?

bpm-engine is a correctness-first workflow execution kernel: it prioritizes execution semantics, persistence, replay, and formal invariants over feature breadth or low-code UX.

This document contrasts bpm-engine with other workflow systems on semantics and guarantees, not on feature lists.


Positioning

Focus bpm-engine Camunda Temporal AWS Step Functions
Primary strength Execution semantics, invariants, replay BPMN modeling, forms, Cockpit Durable execution, SDKs Serverless DAG, AWS integration
Execution model Token state machine, persisted Token/activity, persisted Event-sourced workflow history State machine, managed
Replay / audit First-class: history + replay API Audit log, Cockpit Event history, replay in SDK Limited
Invariants Formal (token, join, external task), tested Implicit in runtime Implicit in runtime Implicit
External work Lease-based fetch-and-lock Human / external tasks Activities, heartbeats Task token, Lambda

Semantic comparison (short)


When to choose bpm-engine

Choose bpm-engine when:

Choose Camunda when you need rich BPMN modeling, forms, and operational UIs. Choose Temporal when you want durable workflows with strong SDKs and less focus on BPMN. Choose Step Functions when you want a managed, serverless DAG on AWS.


Summary

bpm-engine does not try to be “another full BPM suite.” It aims to be a correctness-first execution kernel: small, explicit, and built so that execution semantics are visible, replayable, and invariant-checked.