Process orchestration
without the JVM
Conduit is a BPMN 2.0 workflow engine that fits in a single binary. No application server. No JVM warm-up. No middleware overhead. Just Rust, PostgreSQL, and your workers.
Single binary
Ships as one executable. No JVM, no app server, no container sprawl. Drop it on a VM or package it in a scratch container.
PostgreSQL is the runtime
All state lives in the database. Atomic token advancement. No separate message broker or state machine service.
Workers are external
Workers poll for tasks over REST. Write them in any language. The engine orchestrates — it never executes business logic itself.
BPMN 2.0 + DMN
Full BPMN 2.0 element support including subprocesses, boundary events, message/signal correlation, and DMN decision tables.
FEEL expressions
Gateway conditions and DMN rules use standard FEEL (Friendly Enough Expression Language), the same expression language as Camunda and Zeebe.
Observability built-in
Prometheus metrics, structured JSON logs, and a health endpoint. Leader election for clustered deployments via PostgreSQL advisory locks.
How it works
Conduit models your business process as a BPMN 2.0 diagram. When an instance starts, a token advances through the graph. At each element the engine decides what happens next — all in a single PostgreSQL transaction.
Your Application
│
│ REST API
▼
┌─────────────────┐
│ Conduit │
│ │
│ API Layer │ ◀── Deploy BPMN / Start instances
│ │ │ Complete tasks / Send messages
│ Engine │
│ │ │
│ Job Executor │ ──▶ Timer events / boundary timeouts
│ │ │
│ PostgreSQL │
└─────────────────┘
▲
│ Fetch & lock / Complete
Worker Processes
(any language)
Quick start
Run PostgreSQL
docker-compose up -d
cargo sqlx migrate run Deploy a process
curl -X POST http://localhost:8080/api/v1/deployments \
-F "file=@my-process.bpmn" Start an instance
curl -X POST http://localhost:8080/api/v1/instances \
-H 'Content-Type: application/json' \
-d '{\"process_key\":\"my-process\",\"variables\":{\"amount\":100}}'