Skip to main content

Open Source Workflow Engine

Cadence is an open-source workflow engine for building fault-tolerant, stateful distributed applications. It is released under the Apache 2.0 license, hosted by the Linux Foundation, and actively maintained by contributors from Uber and the broader open-source community.

The full source — server, Go client, Java client, web UI, and Helm charts — is on GitHub. You can run Cadence on your laptop in under five minutes with a single SQLite binary, or deploy it to Kubernetes with a Helm chart. No license key, no usage limits, no vendor dependency.


Why open source matters for a workflow engine

A workflow engine sits at the center of your most critical business processes. Open source changes the risk profile of that dependency significantly.

ConcernProprietary / hosted-only engineCadence (open source)
Vendor lock-inWorkflows are tied to a provider's API and pricingRun anywhere; migrate to your own cluster at any time
AuditabilityBlack box — you cannot inspect how state is stored or replayedFull source available; persistence schema is documented and versioned
Data residencyPayloads stored on provider infrastructureYour workflows stay in your VPC, your region, your storage tier
CustomizationBlocked by the provider's feature roadmapFork, extend, or contribute upstream
Cost at scalePer-workflow or per-execution pricing adds upOperational cost only — no per-execution fee
Community supportVendor-controlled SLAsStack Overflow, CNCF Slack, GitHub Issues, community contributors

Deployment options

Cadence supports four deployment modes. Start with the simplest one that fits your stage.

ModeBackendWhen to use
SQLiteEmbedded SQLiteLocal development, demos, CI — no Docker required
Docker ComposeCassandra or MySQL in containersTeam dev environment, local integration tests
Kubernetes (Helm)Cassandra, MySQL, or PostgresStaging and production
Managed (Uber)Uber-operated multi-tenant clusterUber internal teams

Local quickstart

SQLite mode requires no Docker and no external database. It is the fastest path from a fresh clone to a running Cadence server.

git clone https://github.com/cadence-workflow/cadence.git
cd cadence
make bins
make install-schema-sqlite
./cadence-server --zone sqlite start

Open http://localhost:8088 for the Cadence Web UI.

Pre-built Docker images are available on Docker Hub

The server image ubercadence/server is updated with every release. See Docker Hub.


Client SDKs

LanguageStatusRepository
GoOfficialcadence-workflow/cadence-go-client
JavaOfficialcadence-workflow/cadence-java-client
PythonCommunity
RubyCommunitycoinbase/cadence-ruby
.NETIn development

You can also use iWF as a DSL framework that runs on top of Cadence if you prefer a state-machine abstraction over raw workflow code.


Hello World

The smallest possible Cadence program registers a workflow, registers an activity, starts a worker, and runs the workflow from a client.

func HelloWorkflow(ctx workflow.Context, name string) (string, error) {
ao := workflow.ActivityOptions{ScheduleToCloseTimeout: 10 * time.Second}
ctx = workflow.WithActivityOptions(ctx, ao)

var result string
err := workflow.ExecuteActivity(ctx, HelloActivity, name).Get(ctx, &result)
return result, err
}

func HelloActivity(ctx context.Context, name string) (string, error) {
return "Hello, " + name + "!", nil
}

Full step-by-step guides: Golang Hello World · Java Hello World

Register workflows and activities on every worker

Every worker that polls a task list must register all workflows and activities that may run on that task list. A worker that receives a task for an unregistered type will abandon the task and block the workflow until a correctly registered worker picks it up.


Persistence backends

BackendProduction useNotes
CassandraYesRecommended for high-throughput, multi-region deployments
MySQL 8YesSimpler ops for teams already running MySQL
PostgresYesFully supported; schema in schema/postgres/
SQLiteLocal dev onlyEmbedded, zero-config; not for production

Schema migrations are managed by the cadence-sql-tool CLI bundled with the server binary. See CONTRIBUTING.md for setup instructions.


Community

ChannelLink
CNCF Slack (#cadence-workflow)Join
Stack Overflowcadence-workflow tag
GitHub Issuescadence-workflow/cadence/issues
GitHub Discussionscadence-workflow/cadence/discussions
Redditr/cadenceworkflow
OSS Community Survey2025 Survey

Contributions to the server, SDKs, docs, and samples are welcome. See CONTRIBUTING.md for the development setup, coding standards, and PR process.


References