Serverless Workflow

Standards-based DSL and open-source dev tools and runtimes are at the heart of the Serverless Workflow project. We connect developers around the world to foster innovation and provide a community-driven workflow ecosystem.


Get started:

Specification Web Editor Java Go TypeScript .NET

Specify low-code, event-driven workflow orchestrations

using the most powerful open-source, vendor-neutral workflow DSL. Our DSL provides integrations with widely used standards for events and services such as CloudEvents, OpenAPI, AsyncAPI, GraphQL, gRPC, and more.

  • Define

    JSON, YAML

    Define you orchestration logic that is triggered via events and invokes services sync or async. Write logic that includes human decisions, set timeouts and retries, handle errors, and much more...

  • Develop

    Java, Go, TypeScript, .NET, ...

    Start developing your workflow orchestrations with help of our project SDKs. Get help creating out-of-box user experience using our open-source editor/web tooling and visualization support

  • Execute

    Serverless, Cloud-Native, Distributed runtimes

    Execute and scale your workflow-based orchestrations to build high-end applications.

Describe your business logic with the most powerful open-source DSL

View full example in web editor
{
  "states": [
    {
      "name": "Monitor Vitals",
      "type": "event",
      "onEvents": [
        {
          "eventRefs": [
            "High Body Temp Event",
            "High Blood Pressure Event"
          ],
          "actions": [
            {
              "functionRef": "Invoke Dispatch Nurse Function"
            }
          ]
        },
        {
          "eventRefs": [
            "High Respiration Rate Event"
          ],
          "actions": [
            {
              "functionRef": "Invoke Dispatch Pulmonologist Function"
            }
          ]
        }
      ]
    }
  ]
}
View full example in web editor
{
  "states": [
    {
      "name": "Send Email",
      "type": "operation",
      "actions": [
        {
          "functionRef": {
            "invoke": "async",
            "refName": "Invoke Send Email Function",
            "arguments": {
              "customer": "${ .customer }"
            }
          }
        }
      ]
    }
  ]
}
View full example in web editor
{
  "states": [
    {
      "name": "ProvisionOrder",
      "type": "operation",
      "actions": [
        {
          "functionRef": {
            "refName": "provisionOrderFunction"
          }
        }
      ],
      "onErrors": [
        {
          "errorRef": "Missing order id",
          "transition": "MissingId"
        },
        {
          "errorRef": "Missing order item",
          "transition": "MissingItem"
        },
        {
          "errorRef": "Missing order quantity",
          "transition": "MissingQuantity"
        }
      ]
    }
 ]
View full example in web editor
{
   "states": [
        {
            "name": "Item Purchase",
            "type": "event",
            "onEvents": [
                {
                    "eventRefs": [
                        "New Purchase Event"
                    ],
                    "actions": [
                        {
                            "functionRef": "Invoke Debit Customer Function"
                        }
                    ]
                }
            ],
            "compensatedBy": "Cancel Purchase",
            "onErrors": [
                {
                    "errorRef": "Debit Error",
                    "end": {
                        "compensate": true
                    }
                }
            ]
        },
        {
            "name": "Cancel Purchase",
            "type": "operation",
            "usedForCompensation": true,
            "actions": [
                {
                    "functionRef": "Invoke Credit Customer Function"
                }
            ]
        }
    ]
}
View full example in web editor
{
    "id": "periodicInboxCheck",
    "name": "Periodic Check Inbox Workflow",
    "version": "1.0",
    "description": "Periodically Check Inbox",
    "start": {
        "stateName": "CheckInbox",
        "schedule": {
            "cron": "0 0/15 * * * ?"
        }
    },
    "states": [...]
}

Model human decisions, define timeouts and retries, define parallel exec logic and looping, make data and event-based decisions, define callbacks, write powerful expressions, set secrets and constants and much more.

Read the specification document for the list of all DSL features.

Join our workflow community

Sign up for upcoming and view past community events

Adopted by leading brands in workflow technologies

These brands are already using Serverless Workflow. Is your company using Serverless Workflow and wants to be included in this list? Let us know here!

  • Huawei

    Huawei FunctionGraph hosts event-driven functions in a serverless context while ensuring high availability, high scalability, and zero maintenance.

  • Temporal

    Temporal is the open source microservice orchestration platform for writing durable workflows as code.

  • Red Hat

    Red Hat Kogito is a cloud-native business automation framework for building intelligent business applications.



  • Neuroglia

    Neuroglia is a consultancy and solution design company for the digital transformation of companies and their services..

  • Nokia

    Nokia is a trusted partner for critical networks, committed to innovation and technology leadership across mobile, fixed and cloud networks.

  • OpenEnterprise

    OpenEnterprise Automatiko helps you build better services and functions based on workflows expressed with well known standards.



  • Apache EventMesh

    A dynamic event-driven application runtime used to decouple the application and backend middleware layer.

  • FaasNet

    FaasNet makes it easy to deploy functions and API to Kubernetes without repetitive, boiler-plate coding.