BeelineWF · Open-source workflow engine
Business processes that always finish.
Some software hopes nothing goes wrong. Ours assumes everything will.
BeelineWF makes sure your business processes always finish: no stuck orders, no lost requests, no middle-of-the-night cleanup.
Free and open source · Runs on the database you already have
- Free and open source (MIT)
- Nothing new to operate
- Every step recorded
- Your data stays in your database
The problem
Picture this: an order stuck halfway on a Friday evening.
The payment went through. The approval never arrived. The customer is waiting, and someone is digging through logs by hand, again.
Without BeelineWF
- Failures stall orders mid-flow
- Retries repeat work and double-charge
- Cleanup happens by hand, often at night
With BeelineWF
- Failures resume where they stopped
- Nothing lost, nothing repeated
- Every step recorded, so you can see exactly what happened
Why BeelineWF
Built for the day things go wrong.
Finishes what it starts
Every step of every process is recorded. When something fails, the flow picks up exactly where it left off, on its own.
Nothing new to run
BeelineWF works with the Postgres database you already have. No extra cluster to set up, watch, or pay for.
See exactly what happened
A full history of every step, like a flight recorder. Debugging stops being archaeology, and audits answer themselves.
Change flows safely
Update a process without breaking the runs already in flight. Each version is kept, so the old and new run side by side.
Use cases
Made for processes with people in them.
Some work cannot run straight through. It waits on humans, splits across teams, depends on services outside your walls, or simply repeats on a schedule. That is exactly where BeelineWF lives.
Approvals, step after step
A purchase request needs a manager, then finance, then a director. Each person approves in turn, days apart if needed, while the flow waits without losing its place.
Reviews side by side
Legal and security check the same contract at the same time. Each verdict lands when it lands, and they merge into one decision to carry forward.
Waiting on the outside world
A background check or a partner service takes as long as it takes. The flow checks back until the work is done, then carries on by itself.
Repeats on a schedule
A reminder, report, or billing run starts itself every morning, week, or month. Each run is tracked start to finish, just like any other.
Product tour
Three screens. Zero stuck orders.
Draw the flow, watch it run, and see every step recorded. These are the views you'll live in — and the live demo opens them for real, no signup.
Dashboard: every run, one glance
What's running, what's waiting on a person, what already finished. When someone asks where an order is, the answer is on this screen — not in a log file.
Builder: draw the process, not the plumbing
Approvals, branches, and waits in the order your team actually works. Every step is recorded as you define it, so a restart mid-flow is a pause — never a loss.
Runner: the flight recorder for every run
Who approved what, when it waited, where it resumed after a failure. Debugging stops being archaeology — and audits answer themselves.
Watch a run break — then finish anyway
A short walkthrough: start a flow, kill it halfway, watch it resume where it stopped. Nothing lost, nothing repeated.
For developers
You define the steps. It finishes them.
Send your process to the API as JSON (the repo's workflow.yaml shows the shape), run the engine with Docker on your Postgres, and connect each step to your stack over HTTP. The code is open, so read every line before you trust it.
- Versioned definitionsEvery change is a new version; flows already running keep the one they started with.
- Postgres-firstNeeds only PostgreSQL. Message brokers are optional, never required.
- HTTP both waysSteps wait for approvals over HTTP and call your services the same way.
- Cron schedulesAttach a crontab schedule, with timezone, to any workflow; every tick starts a new run with its stored context. Pause or resume anytime.
- Sign in your wayUse your identity provider over OIDC, local email + password accounts, or just an API key (X-Api-Token) with no login.
The demo API is the same address under /api — send this key as the X-Api-Token header: dev-only-token.
# an approval step, verbatim
- type: input
id: "11111111-1111-7111-8111-111111111103"
name: "Manager Approval"
output_property: approval
allowed_roles:
- manager
record_actor: true
next_node: "11111111-1111-7111-8111-111111111105"
Your guide
Built by people who have been woken at night by their own scripts.
BeelineWF is free and open source under the MIT license. Your data stays in your database: inspect the code, run it yourself, change what you need.
Get started
Running in three steps.
Try the demo
Click around the live demo. No signup, no install: break something and watch it recover. Log in as admin@demo.beelinewf.com / Demo-1.
Define your steps
Send your steps to the API: orders, approvals, signups, whatever stalls today.
Run it
Start it with Docker. From here on, failures resume on their own. Nothing lost, nothing repeated.
See it survive a failure.
The fastest way to believe it: open the live demo, start a flow, and pull the plug halfway through.
When the demo asks you to log in, sign in as
admin@demo.beelinewf.com
with password
Demo-1
Contact
Talk to us.
Tell us about the process that keeps breaking. We read everything and reply from a human inbox.
Prefer your own email app? Write to us directly at
contact@beelinewf.com