EN
EN

OCPM ENGINE

Object-centric process mining at database speed

Object-centric process mining at database speed

ocpm-engine is a Rust-first, source-neutral engine for object-centric process mining. It runs discovery, conformance, enhancement, and prediction against files, PostgreSQL, or DuckDB, and returns bit-exact answers, up to 55x faster than the standard Python stack on fixed benchmark workloads.

ocpm-engine is a Rust-first, source-neutral engine for object-centric process mining. It runs discovery, conformance, enhancement, and prediction against files, PostgreSQL, or DuckDB, and returns bit-exact answers, up to 55x faster than the standard Python stack on fixed benchmark workloads.

16.1x

faster than OCPQ on the strict Q1-Q7 benchmark, exact parity at every node

55.5x

faster than vanilla PostgreSQL + PM4Py across eight SAP O2C and P2P workloads

26x

less peak client memory than the PM4Py arms on the same workloads

100%

bit-exact answers, verified by SHA-256 hash gates on every published benchmark cell

The architecture

The architecture

A patent-pending architecture for exact, data-local object-centric process mining.

A patent-pending architecture for exact, data-local object-centric process mining.

OCPM engine architecture diagram

Factorized execution capsules

Events and bindings move as compact capsules: one shared activity path with aligned per-execution vectors, and offset-indexed binding memberships. No mandatory event-row or Cartesian expansion; rows expand lazily through an exact-size iterator only when a consumer needs them.

Capability-aware provider negotiation

Every provider declares versioned semantic capabilities and cost estimates for a specific dataset generation. The engine pushes work down only when capability and cost justify it, and otherwise runs an exact canonical fallback that returns the same answer.

Transactionally published generations

Data is staged, validated, and published atomically as immutable generations. Every capsule, statistic, and model artifact is bound to the generation that produced it, so readers never observe partial state.

One scan, many windows

An interval index routes each complete process execution to every matching training, test, comparison, or drift window during a single bounded source scan, with results merged back in caller order.

Exact sufficient statistics

Discovery, conformance, and prediction consume exact aggregates computed next to the data; model fitting, calibration, and artifacts stay source-neutral in Rust with content hashes.

The benchmark

Fixed, published workloads with pinned versions. Every answer is verified bit-exact before anything is timed.

Fixed, published workloads with pinned versions. Every answer is verified bit-exact before anything is timed.

Latency vs the field

OCPQ Q1-Q7 geometric-mean latency, BPIC 2017 fixture, lower is better

Throughput under concurrency

SAP order-to-cash DFG queries per second, log scale

Peak client memory

SAP order-to-cash workloads, lower is better

Benchmark figures are geometric means on fixed, published workloads with pinned versions and exact-answer verification; they do not imply the same ratio for arbitrary queries. ocpm-engine and pg_ocpm are Apache-2.0. (c) 2026 Vertical Bar, Inc.

How it works

How it works

Factorized execution capsules

Events and relationship bindings travel as compact capsules that share activity paths and binding dimensions instead of materializing one row per event. Algorithms consume capsules directly and expand rows only when a consumer genuinely needs them.

Capability-aware providers

The engine negotiates versioned capabilities and cost estimates with each data source: pg_ocpm inside PostgreSQL 13-18, an existing DuckDB catalog over Parquet snapshots, or in-memory data. When a pushdown is unavailable, an exact canonical fallback produces the same answer.

Exactness, gated

Optimized and fallback paths are tested for canonical equality, and every published benchmark cell passes an exact-answer hash gate. Speed never changes the result.

Mine your processes where your data lives.

Mine your processes where your data lives.