Skip to main content

Installation & Initialization

Cadence offers several installation paths, from a single binary with zero external dependencies to production-grade Kubernetes deployments. The right path depends on the adopter's stage: local evaluation, development and testing, or production.

Server installation methods​

MethodBest for
Local binaryFastest evaluation, local development
Docker ComposeTrying the full stack locally (server + persistence + UI + metrics)
Kubernetes / HelmStaging and production deployments

Local binary (minimal install)​

For quick evaluation, Cadence can be built and run directly from source:

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

The server starts all four services (frontend, history, matching, worker) on their default ports. This is a single-node setup with an embedded database suitable for local development and evaluation.

The Web UI is a separate project and is not included in the local binary build. Use Docker Compose or Helm for a setup that includes the UI. See the server README and Get Started for full details.

Docker Compose​

Docker Compose runs the Cadence server, a persistence backend (Cassandra by default), the Web UI, and an observability stack (Prometheus + Grafana) with a single command:

git clone https://github.com/cadence-workflow/cadence.git
cd cadence/docker && docker compose up

The docker/ directory includes alternate Compose files for different persistence backends, advanced visibility, metrics, multi-cluster replication, and operational testing. For production Docker usage, use the auto-setup image tag for initial schema creation and a release-tagged image for steady-state operation. See the server README and the Docker README for the full reference.

Kubernetes / Helm​

Cadence publishes a Helm chart that deploys the server (frontend, history, matching, and worker services), schema setup jobs, and optional subcharts for Cassandra, MySQL, PostgreSQL, Elasticsearch, OpenSearch, and Kafka:

helm repo add cadence https://cadence-workflow.github.io/cadence-charts
helm repo update
helm install cadence-release cadence/cadence -n cadence --create-namespace

The chart defaults to Cassandra with automatic schema initialization. Switching to PostgreSQL or MySQL requires setting the appropriate subchart and persistence driver values. Example values files are provided for common configurations (Cassandra with PVCs, MySQL, PostgreSQL, PostgreSQL + Elasticsearch/OpenSearch, Cloud SQL, TLS, and metrics). See the Helm chart README for the full values.yaml reference and the Helm deployment codelab for a step-by-step walkthrough on GKE. Production integrations covers the subchart inventory and what each backing service connects to.

CLI installation​

The Cadence CLI (cadence) is the primary tool for domain, workflow, tasklist, and cluster operations. It can be installed independently of the server:

MethodCommand
Homebrewbrew install cadence-workflow
Dockerdocker run --rm ubercadence/cli:<version>
From sourcemake cadence in the server repository

Initialization​

After installation, the main initialization step is domain registration. A domain is the unit of isolation and configuration in Cadence (analogous to a namespace):

cadence --domain my-domain domain register --retention 7

For Helm deployments where the CLI is not installed locally, use kubectl exec against the frontend pod:

kubectl exec -it deployment/cadence-release-frontend -- \
cadence --domain my-domain domain register --retention 7

No additional configuration is required for a minimal working setup. For production, adopters configure persistence backends, numHistoryShards (set once at cluster creation and immutable afterward), cluster metadata for multi-region replication, archival, advanced visibility, and dynamic configuration. See Cluster Configuration for the full production configuration reference.

Deployment components​

The Cadence server runs four logical services (frontend, history, matching, and worker) which can run as a single combined process or be split across dedicated processes for production scale.

Beyond the server, a complete deployment includes:

ComponentRoleRequired
Persistence databaseDurable storage for workflow execution state. Supports Cassandra, MySQL, PostgreSQL, or SQLite (local development only).Yes
Application workersUser-provided services that host workflow and activity implementations via Cadence SDKs (Go, Java, Python).Yes (to run workflows)
Advanced visibility storeElasticsearch or OpenSearch, with Kafka for event streaming. Enables rich workflow search queries beyond basic listing.No
Web UIBrowser-based interface for inspecting and managing workflows, domains, and tasklists. Bundled in Docker Compose and Helm deployments.No
Metrics stackPrometheus + Grafana (default in Docker Compose), Statsd + Graphite, or M3.No (recommended for production)