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.

Dashboard

Screenshots on their way.

See the real thing in the live demo →
BeelineWF dashboard showing workflow runs and their statuses

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.

Workflow builder

Screenshots on their way.

See the real thing in the live demo →
BeelineWF workflow builder showing connected approval steps

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.

Workflow runner

Screenshots on their way.

See the real thing in the live demo →
BeelineWF workflow runner showing a run's step-by-step history

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.

Demo video

Demo video on its way.

See the real thing in the live demo →

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.

From the repo's workflow.yaml:See the full file →
# 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.

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

All fields required. Submitting opens your email app with the message ready to send.