cadence is a free, open source automation project written in Go and released under Apache-2.0. It has 9,444 GitHub stars, 913 forks and 205 open issues, and was last pushed 28 hours ago. On this registry it ranks #17 of 54 tracked projects in Automation, with 5 head-to-head comparisons available. It gained 3 stars over the last 3 tracked days.

What is cadence?

What it is

Cadence is an open-source orchestration engine for running asynchronous, long-running business logic in a fault-tolerant way. Written in Go under the Apache-2.0 license, it lives in the distributed systems and workflow automation space, and the project has been open source since 2017. This repository holds the core engine plus supporting tools: the CLI, schema management, a benchmark suite, and a canary. Client libraries for Go and Java are official, while Python and Ruby SDKs come from the community, and iWF can be layered on top as a DSL framework.

The problem it solves is durability across time. A workflow that must survive process restarts, network failures, and multi-day waits cannot be trusted to a single service holding state in memory. Cadence separates the orchestration engine from the worker that contains the workflow implementation, so the engine tracks workflow state while workers execute steps. The backend is made of multiple services, a database chosen from Cassandra, MySQL, or PostgreSQL, and optionally Kafka with Elasticsearch.

Key capabilities

  • Executes asynchronous, long-running workflows with fault tolerance and high availability.
  • Runs as a set of backend services backed by Cassandra, MySQL, or PostgreSQL.
  • Supports optional Kafka and Elasticsearch integration alongside the core database.
  • Provides official Go and Java client SDKs for implementing workflows.
  • Ships a CLI that operates workflows, tasklists, domains, and clusters, with commands organized by tab.
  • Includes bench and stress test workflow tools, plus a periodical feature health check workflow.
  • Deploys on Kubernetes through the official Helm chart from cadence-charts.

Who uses it and how

  • Teams run the backend locally with docker compose -f docker/docker-compose.yml up, then trigger workflows through an SDK or the CLI.
  • Operators pair the engine with workers holding their own workflow implementation, keeping business logic out of the engine.
  • Developers inspect workflow histories and detailed traces in Cadence Web UI, available at localhost:8088 under Docker Compose.
  • Kubernetes users follow the KubeStellar Console mission, which deploys Cadence with pre-flight checks, validation, troubleshooting, and rollback support.
  • CLI users install with brew install cadence-workflow or run ubercadence/cli as a Docker image.

Getting started

Start the backend components locally with docker compose -f docker/docker-compose.yml up, then run the Go or Java sample recipes. Install the CLI through Homebrew or the ubercadence/cli Docker image, and build tools from source with make cadence.

When to use it — and when not to

Self-hosting means operating multiple backend services plus a database, with Kafka and Elasticsearch optional but extra moving parts. KubeStellar Console and the Helm chart ease Kubernetes installs, but the operator still owns the data layer. Workflows require a separate worker, so the engine alone does not run business logic.

project readme (upstream, from github) — read inline

Cadence

Build Status Coverage Slack Status Github release License

Cadence Workflow is an open-source platform since 2017 for building and running scalable, fault-tolerant, and long-running workflows. This repository contains the core orchestration engine and tools including CLI, schema managment, benchmark and canary.

Getting Started

Cadence backend consists of multiple services, a database (Cassandra/MySQL/PostgreSQL) and optionally Kafka+Elasticsearch. As a user, you need a worker which contains your workflow implementation. Once you have Cadence backend and worker(s) running, you can trigger workflows by using SDKs or via CLI.

  1. Start cadence backend components locally
docker compose -f docker/docker-compose.yml up
  1. Run the Samples

Try out the sample recipes for Go or Java.

  1. Visit UI

Visit http://localhost:8088 to check workflow histories and detailed traces.

Kubernetes Deployment

For a guided Kubernetes installation experience, KubeStellar Console provides a step-by-step mission that deploys Cadence using the official Helm chart from cadence-charts. The mission includes pre-flight checks, validation, troubleshooting, and rollback support.

Client Libraries

You can implement your workflows with one of our client libraries:

You can also use iWF as a DSL framework on top of Cadence.

CLI

Cadence CLI can be used to operate workflows, tasklist, domain and even the clusters.

You can use the following ways to install Cadence CLI:

  • Use brew to install CLI: brew install cadence-workflow
    • Follow the instructions if you need to install older versions of CLI via homebrew. Usually this is only needed when you are running a server of a too old version.
  • Use docker image for CLI: docker run --rm ubercadence/cli: or docker run --rm ubercadence/cli:master . Be sure to update your image when you want to try new features: docker pull ubercadence/cli:master
  • Build the CLI binary yourself, check out the repo and run make cadence to build all tools. See CONTRIBUTING for prerequisite of make command.
  • Build the CLI image yourself, see instructions

Cadence CLI is a powerful tool. The commands are organized by tabs. E.g. workflow->batch->start, or admin->workflow->describe.

Please read the documentation and always try out --help on any tab to learn & explore.

UI

Try out Cadence Web UI to view your workflows on Cadence. (This is already available at localhost:8088 if you run Cadence with docker compose)

Other binaries in this repo

Bench/stress test workflow tools

See bench documentation.

Periodical feature health check workflow tools(aka Canary)

See canary documentation.

Schema tools for SQL and Cassandra

The tools are for manual setup or upgrading database schema

The easiest way to get the schema tool is via homebrew.

brew install cadence-workflow also includes cadence-sql-tool and cadence-cassandra-tool.

  • The schema files are located at /usr/local/etc/cadence/schema/.
  • To upgrade, make sure you remove the old ElasticSearch schema first: mv /usr/local/etc/cadence/schema/elasticsearch /usr/local/etc/cadence/schema/elasticsearch.old && brew upgrade cadence-workflow. Otherwise ElasticSearch schemas may not be able to get updated.
  • Follow the instructions if you need to install older versions of schema tools via homebrew. However, easier way is to use new versions of schema tools with old versions of schemas. All you need is to check out the older version of schemas from this repo. Run git checkout v0.21.3 to get the v0.21.3 schemas in the schema folder.

Contributing

We'd love your help in making Cadence great. Please review our contribution guide.

If you'd like to propose a new feature, first join the CNCF Slack workspace in the #cadence-users channel to start a discussion.

Please visit our documentation site for production/cluster setup.

Learning Resources

See Maxim's talk at Data@Scale Conference for an architectural overview of Cadence.

Visit cadenceworkflow.io to learn more about Cadence. Join us in Cadence Documentation project. Feel free to raise an Issue or Pull Request there.

Community

  • Github Discussion
    • Best for Q&A, support/help, general discusion, and annoucement
  • Github Issues
    • Best for reporting bugs and feature requests
  • StackOverflow
    • Best for Q&A and general discusion
  • Slack - Join #cadence-users channel on CNCF Slack
    • Best for contributing/development discussion

Stars over time

Stargazers over time

License

Apache 2.0 License, please see LICENSE for details.

Frequently asked questions

Is cadence free to use?

cadence is open source under the Apache-2.0 licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does cadence do?

Cadence is a distributed, scalable, durable, and highly available orchestration engine to execute asynchronous long-running business logic in a scalable and res

What is cadence written in?

cadence is primarily written in Go. Its source is publicly available at https://github.com/cadence-workflow/cadence, and it has 9,444 GitHub stars.