explaingit

cadence-workflow/cadence

9,292GoAudience · developerComplexity · 4/5LicenseSetup · hard

TLDR

An open-source platform for running long-running business processes reliably across distributed systems, automatically handling retries, state checkpointing, and recovery from crashes, originally built at Uber.

Mindmap

mindmap
  root((repo))
    What it does
      Long-running workflows
      Auto retry on failure
      Durable state recording
    Tech stack
      Go backend
      Cassandra MySQL Postgres
      Kafka Elasticsearch
    Client SDKs
      Go SDK official
      Java SDK official
      Python Ruby community
    Deployment
      Docker Compose local
      Kubernetes Helm chart
      Web UI included
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Build an order fulfillment workflow spanning payment, inventory, and shipping that retries automatically if any step fails.

USE CASE 2

Automate long-running document approval pipelines that may take days or weeks to complete without manual checkpointing.

USE CASE 3

Replace fragile cron jobs and manual recovery scripts with durable, resumable background processes.

USE CASE 4

Orchestrate distributed microservice calls that need guaranteed execution even when individual services go down temporarily.

Tech stack

GoJavaPythonRubyCassandraMySQLPostgreSQLKafka

Getting it running

Difficulty · hard Time to first run · 1h+

Requires Docker Compose to start Cassandra or MySQL plus multiple Cadence services, Kafka and Elasticsearch are needed for search and visibility features.

Licensed under Apache 2.0, use freely for any purpose including commercial use, modify and redistribute, as long as you keep the copyright notice.

In plain English

Cadence is an open-source platform for running long-running, multi-step business processes reliably across distributed systems. It was originally developed at Uber and open-sourced in 2017. The core idea is that you write your business logic as a "workflow," which is a sequence of steps that can take seconds or months to complete, and Cadence makes sure those steps execute correctly even if servers crash, network connections drop, or services become temporarily unavailable. Without a system like Cadence, developers typically handle these long-running processes by manually writing retry logic, checkpointing state to databases, and building recovery mechanisms. Cadence handles all of that automatically. Your workflow code reads as if it runs straight through from start to finish, but Cadence durably records the progress at each step, so if something fails midway the execution resumes from where it left off rather than starting over. The backend is made up of multiple services that run together. For storage it requires a database, either Cassandra, MySQL, or PostgreSQL. For search and visibility features, Kafka and Elasticsearch can optionally be added. The quickest way to start locally is through Docker Compose, which spins up all the required components at once. A web UI is included and shows the history and status of every workflow execution. Developers write their workflow logic using one of the client libraries. Official SDKs exist for Go and Java. Community-maintained SDKs for Python and Ruby are also available. Once a workflow is defined, it can be started from the command line or through the API. The CLI tool handles common operations like triggering workflows, inspecting their state, and managing the server configuration. Kubernetes deployment is supported through an official Helm chart. Cadence is licensed under Apache 2.0 and is maintained as an open-source project with an active community on GitHub and Slack.

Copy-paste prompts

Prompt 1
Show me a Go Cadence workflow that processes a payment, reserves inventory, and sends a confirmation email, with automatic retry if any step fails.
Prompt 2
How do I set up Cadence locally with Docker Compose and run a simple hello-world workflow from the CLI?
Prompt 3
Write a Java Cadence activity that calls an external REST API with a timeout and retries up to 3 times on failure.
Prompt 4
How do I inspect the execution history of a running Cadence workflow using the web UI or the cadence CLI?
Prompt 5
What is the difference between a Cadence workflow and an activity, and when should I split logic between them?
Open on GitHub → Explain another repo

← cadence-workflow on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.