Open source workflow engine

Fast and durable workflow orchestration, open and self-hosted

Define workflows in OSML — the Open State Machine Language — and run them on Statum: a journal-first, Postgres-backed engine that runs express workflows in-process and long-running ones as durable, crash-safe steps.

9
OSML state types
6
Task backends
2
Express & Standard modes

Everything you need to orchestrate work

A production-oriented engine with an open language, express or durable execution, and no vendor lock-in.

ƒ

OSML language

Task, Choice, Parallel, Map, Wait, Pass, Succeed, Fail and StartExecution — defined in portable JSON with a published JSON Schema.

Express & Standard

Express runs workflows in-process to completion — low latency, ideal for short-lived work. Standard steps through a durable Postgres queue with crash-safe recovery.

Journal-first

An append-only event journal is the source of truth. Execution state is a projection replayed from the journal — auditable for every mode, crash-safe for Standard.

Multiple task backends

Inline JavaScript (GraalVM), HTTP calls, Java handlers, task tokens, activities, and human approval — plus a plugin SPI.

Retry & Catch

Per-state retries with backoff and error catching, JSONPath and optional JSONata I/O, intrinsics, and cooperative cancellation.

Versioning & aliases

Publish new versions, pin aliases, run sync or async, and observe every transition with Micrometer/Prometheus metrics.

Try OSML in your browser

Edit a workflow, watch the diagram update live, and validate against the OSML schema. Connect a Statum engine to execute it end to end.

How it works

From a JSON definition to a fast or durable, observable execution in four steps.

1

Define OSML

Describe states, transitions, retries and error handling in JSON.

2

Register

Publish the machine to Statum over REST and get a versioned name.

3

Execute

Run express workflows in-process or start Standard executions on the durable step queue.

4

Inspect

Replay the journal, view history, and debug step by step in the self-hosted console.

Run with Docker

Published multi-arch images on Docker Hub. Pair the Statum engine with Postgres, then run the console to author workflows and inspect executions.

Statum engine

Headless API and workflow runtime. Requires Postgres.

docker pull openstatemachine/engine:0.1.0

docker run -p 8080:8080 \
  -e SPRING_PROFILES_ACTIVE=docker \
  -e POSTGRES_HOST=postgres \
  openstatemachine/engine:0.1.0

Statum console

Web UI with nginx serving the SPA and proxying /api to the engine.

docker pull openstatemachine/console:0.1.0

docker run -p 9000:9000 \
  -e STATUM_API_UPSTREAM=http://host.docker.internal:8080 \
  openstatemachine/console:0.1.0

Full-stack checkout and compose examples live in theopenstatemachine meta repository on GitHub.

Own your orchestration layer

Open State Machine is free and self-hosted. Run Statum next to your services and keep your workflows portable.