OSML language
Task, Choice, Parallel, Map, Wait, Pass, Succeed, Fail and StartExecution — defined in portable JSON with a published JSON Schema.
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.
A production-oriented engine with an open language, express or durable execution, and no vendor lock-in.
Task, Choice, Parallel, Map, Wait, Pass, Succeed, Fail and StartExecution — defined in portable JSON with a published JSON Schema.
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.
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.
Inline JavaScript (GraalVM), HTTP calls, Java handlers, task tokens, activities, and human approval — plus a plugin SPI.
Per-state retries with backoff and error catching, JSONPath and optional JSONata I/O, intrinsics, and cooperative cancellation.
Publish new versions, pin aliases, run sync or async, and observe every transition with Micrometer/Prometheus metrics.
Edit a workflow, watch the diagram update live, and validate against the OSML schema. Connect a Statum engine to execute it end to end.
From a JSON definition to a fast or durable, observable execution in four steps.
Describe states, transitions, retries and error handling in JSON.
Publish the machine to Statum over REST and get a versioned name.
Run express workflows in-process or start Standard executions on the durable step queue.
Replay the journal, view history, and debug step by step in the self-hosted console.
Published multi-arch images on Docker Hub. Pair the Statum engine with Postgres, then run the console to author workflows and inspect executions.
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.0Web 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.0Full-stack checkout and compose examples live in theopenstatemachine meta repository on GitHub.
Open State Machine is free and self-hosted. Run Statum next to your services and keep your workflows portable.