Fluxion is an open-source BPMN 2.0 workflow engine built in Rust. Deploy processes via HTTP, execute tasks, route decisions, and orchestrate services — without the JVM.
A full-featured workflow engine you can run anywhere — from a single binary to a distributed cluster.
Import any BPMN 2.0 diagram. Fluxion parses, validates, and compiles it to an executable workflow graph — supporting service tasks, user tasks, exclusive and parallel gateways, message events, and timers.
Written in Rust. No JVM warm-up, no garbage collection pauses. Fluxion starts in milliseconds and handles high-throughput workloads with predictable latency from the first request.
Every process instance, token, task, and variable is persisted to PostgreSQL via SQLx. Instances survive restarts and crashes. Full execution history is queryable at any time.
HS256/RS256 JWT authentication, OAuth2 resource server support, RBAC with viewer, operator, and admin roles. Tenant isolation enforced at the database level.
Prometheus metrics on every HTTP route, latency histograms, tenant-scoped gauges, and per-task counters. OpenTelemetry tracing with W3C traceparent propagation — plug Fluxion into your existing stack.
Evaluate business rules with the built-in DMN engine. Model decision tables and FEEL expressions outside your code, deploy them alongside your workflows, and call them from any service task.
Pause a workflow at an intermediate catch event and resume it when a correlated message arrives via the API. Model long-running async patterns like order confirmations and payment callbacks cleanly.
Open /ui for a live workflow console. View running and completed instances, inspect current graph position with node highlighting, manage user task inboxes, and act on tasks — no extra tooling needed.
Boundary and intermediate timer events are executed by a built-in scheduler. Model ISO 8601 durations and absolute dates in BPMN — Fluxion fires them accurately without an external cron.
Fluxion ships as a single binary with a REST API. Bring your own PostgreSQL or use the included Compose file.
# Start PostgreSQL + Fluxion cp .env.example .env docker compose up -d postgres cargo run -p fluxion-server # Server is ready at http://127.0.0.1:3001 curl http://127.0.0.1:3001/health → {"status":"ok"}
# Deploy a BPMN process definition curl --json '{ "bpmn_xml": "<definitions ...>" }' \ http://127.0.0.1:3001/api/v1/processes → { "process_key": "approval", "version": 1, "deployed_at": "2026-06-24T12:00:00Z" }
# Start a process instance curl --json '{ "variables": { "order_id": 42 } }' \ http://127.0.0.1:3001/api/v1/processes/approval/start # Claim and complete the generated user task curl --json '{ "assignee": "alice" }' \ http://127.0.0.1:3001/api/v1/tasks/TASK_ID/claim curl --json '{ "assignee": "alice", "variables": { "approved": true } }' \ http://127.0.0.1:3001/api/v1/tasks/TASK_ID/complete → {"status":"completed"}
Fluxion is structured as a Cargo workspace of focused crates, each with a clear boundary — easy to embed, extend, or replace.
/api/v1/*Fluxion connects to the tools your team already runs — no proprietary agents or SaaS dependencies required.
Fluxion is built for teams that need a fast, self-hosted workflow engine. Run cargo run -p fluxion-server, connect PostgreSQL, and your BPMN runtime is live in under a minute.