conductor is a free, open source orchestration & scheduling project written in Java and released under Apache-2.0. It has 32,207 GitHub stars, 1,010 forks and 253 open issues, and was last pushed 5 hours ago. On this registry it ranks #2 of 64 tracked projects in Orchestration & Scheduling, with 5 head-to-head comparisons available. It gained 10 stars over the last 3 tracked days.

What is conductor?

Conductor is an Apache-2.0 licensed, event driven agentic workflow engine written in Java that provides durable and highly resilient execution for applications and AI agents, aimed at teams running microservices, AI agents, and adaptive workflow graphs that need orchestration they can version, inspect, and recover.

What it is

Conductor is an open-source durable execution platform for microservices, AI agents, and adaptive workflow graphs. It lives in the JVM ecosystem, with Spring Boot and gRPC on the server side and JavaScript and React in the tooling — including the built-in ui-next UI. It originated at Netflix and is now actively maintained by Orkes and the community, distributed under the Apache-2.0 licence and indexed here under Infrastructure & Operations / Orchestration & Scheduling.

The concrete problem it solves is the placement of orchestration logic. Conductor keeps orchestration as a versioned, inspectable graph while workers and built-in tasks perform the business logic and side effects, which replaces orchestration embedded directly in application code. It turns runtime choices — loops, branching, fan-out, tool calls, approvals, retries, and cancellation — into durable, inspectable execution, so every step is persisted and survives crashes, restarts, and network failures. It also targets the newer problem of agentic execution, where the things being orchestrated are LLM calls and tool invocations rather than plain service calls.

Key capabilities

  • Durable execution: every step is persisted, with configurable retries and timeouts that survive crashes, restarts, and network failures.
  • Explicit orchestration: a versioned, inspectable graph governs flow while workers and built-in tasks perform business logic and side effects.
  • AI agent orchestration: native LLM tasks, MCP tool calling, human approval steps, and vector workflows for RAG.
  • Durable adaptive graphs: runtime-selected paths, bounded fan-out, tool calls, approvals, retries, cancellation, and recovery are all governed by the workflow.
  • Dynamic at runtime: dynamic forks, tasks, and sub-workflows can be resolved at runtime, and generated workflow definitions can be validated before they are started.
  • Execution recovery: an execution can be inspected and then restarted, rerun, retried, paused, resumed, or terminated according to the workflow's policy.
  • Scale separation: servers and workers scale independently, with task domains and rate-limit controls; CLI commands such as conductor workflow create workflow.json and conductor workflow start -w hello_workflow --sync have equivalent cURL/API calls.

Who uses it and how

  • Platform teams orchestrating microservices, where the workflow graph is versioned and inspected rather than hidden inside individual services.
  • AI and agent teams that need LLM tasks, MCP tool calls, human approval gates, and vector workflows for RAG in one durable execution model.
  • Teams running long-lived processes with human approvals or runtime-selected paths, using pause, resume, retry, and terminate against a workflow's own policy.
  • Teams generating workflow definitions at runtime, which can validate those definitions before starting them rather than discovering a bad graph mid-execution.
  • Operators who need to scale servers and workers separately and segment load by task domain; the project carries roughly 32,206 stars, 1,009 forks, and 253 open issues, with a community Slack for support.

Getting started

Install the CLI with npm install -g @conductor-oss/conductor-cli and run conductor server start, which requires Node.js v16+ and Java 21+ and serves the built-in ui-next interface at http://localhost:8080. Alternatively, run the published Docker image with docker run -p 5000:5000 -p 8080:8080 conductoross/conductor:next, which exposes the UI at port 5000 and the API at port 8080.

How it compares

No list of paid products that Conductor replaces is provided in the available facts, and no directly comparable tools are named either — the only named parties are Netflix, where the project originated, and Orkes, which maintains it alongside the community. On the facts available here, it stands alone in this registry.

When to use it — and when not to

A self-hoster must operate the server itself and satisfy both Java 21+ and Node.js v16+ for the CLI path, and the CLI caches the server JAR at ~/.conductor-cli/, so upgrades require conductor server start latest or manual removal of the cached JAR. Teams that want zero operational overhead, or that cannot run a JVM service, should look elsewhere rather than adopt it as a drop-in. The README excerpt available here is truncated mid-section, so the full feature list and the documented scale and rate-limit details should be verified at the project documentation site before committing to it.

project readme (upstream, from github) — read inline
Logo

Conductor - Durable Execution for Workflows and Agents

GitHub stars Github release License Conductor Slack Conductor OSS

Build agents that adapt. Run graphs that endure.

Conductor is an open-source durable execution platform for microservices, AI agents, and adaptive workflow graphs. It turns runtime choices—loops, branching, fan-out, tool calls, approvals, retries, and cancellation—into durable, inspectable execution. It originated at Netflix and is actively maintained by Orkes and the community.

conductor_oss_getting_started


Get Running in 60 Seconds

Prerequisites: Node.js v16+ and Java 21+ must be installed.

npm install -g @conductor-oss/conductor-cli
conductor server start

Open http://localhost:8080 — your server is running with the built-in ui-next UI.

Upgrading from a previous version? The CLI caches the server JAR at ~/.conductor-cli/. If you have an older version cached, force a fresh download:

conductor server start latest
# or delete the cache manually
rm ~/.conductor-cli/conductor-server-latest.jar && conductor server start

Run your first workflow:

# Create a workflow that calls an API and parses the response — no workers needed
curl -s https://raw.githubusercontent.com/conductor-oss/conductor/main/docs/quickstart/workflow.json -o workflow.json
conductor workflow create workflow.json

Note: Running this command twice will return an error on the second call — the workflow already exists. This is expected behavior. Use conductor workflow update to modify an existing workflow.

conductor workflow start -w hello_workflow --sync

See the Quickstart guide for the full walkthrough, including writing workers and replaying workflows.

Docker Image for Conductor (includes the ui-next UI):

# UI at http://localhost:5000  |  API at http://localhost:8080
docker run -p 5000:5000 -p 8080:8080 conductoross/conductor:next

All CLI commands have equivalent cURL/API calls. See the Quickstart for details.


Why Conductor is the workflow engine of choice for developers

Durable execution Every step is persisted. Survives crashes, restarts, and network failures with configurable retries and timeouts.
Explicit orchestration Keep orchestration as a versioned, inspectable graph while workers and built-in tasks perform business logic and side effects.
AI agent orchestration Native LLM tasks, MCP tool calling, human approval, and vector workflows for RAG.
Durable adaptive graphs Govern runtime-selected paths, bounded fan-out, tool calls, approvals, retries, cancellation, and recovery.
Dynamic at runtime Dynamic forks, tasks, and sub-workflows can be resolved at runtime. Validate generated workflow definitions before starting them.
Execution recovery Inspect an execution, then restart, rerun, retry, pause, resume, or terminate it according to the workflow's policy.
Operate at your scale Scale servers and workers independently, then use task domains, rate limits, concurrency limits, and metrics for control.
Polyglot workers Workers in Java, Python, Go, JavaScript, C#, Ruby, or Rust. Workers poll, execute, and report — run them anywhere.
Self-hosted, no lock-in Apache 2.0. 5 persistence backends, 6 message brokers. Runs anywhere Docker or a JVM runs.

Ship Durable Adaptive Graphs, Not Framework Code

Conductor workers are plain code — any language, any library, any I/O. The orchestration layer is declarative and machine-readable, so developers can keep their preferred SDK or framework while operators retain durable state, policy boundaries, replay, versioning, and auditability.

Start with the governed adaptive graph: plan → validate approved capabilities → bounded fan-out or human approval → evaluate → continue or finish.

An autonomous think-act agent in Conductor: discover tools via MCP, reason with an LLM, call the chosen tool, repeat until done.

{
  "name": "autonomous_agent",
  "description": "Agent that loops until the task is complete",
  "version": 1,
  "tasks": [
    {
      "name": "discover_tools",
      "taskReferenceName": "discover",
      "type": "LIST_MCP_TOOLS",
      "inputParameters": {
        "mcpServer": "${workflow.input.mcpServerUrl}"
      }
    },
    {
      "name": "agent_loop",
      "taskReferenceName": "loop",
      "type": "DO_WHILE",
      "loopCondition": "$.think['done'] != true && $.loop['iteration'] < 10",
      "loopOver": [
        {
          "name": "think",
          "taskReferenceName": "think",
          "type": "LLM_CHAT_COMPLETE",
          "inputParameters": {
            "llmProvider": "openai",
            "model": "gpt-4o-mini",
            "messages": [
              {
                "role": "system",
                "message": "You are an autonomous agent. Available tools: ${discover.output.tools}. Previous results: ${loop.output.results}. Respond with JSON: {\"action\": \"tool_name\", \"arguments\": {}, \"done\": false} or {\"answer\": \"final answer\", \"done\": true}."
              },
              { "role": "user", "message": "${workflow.input.task}" }
            ],
            "jsonOutput": true
          }
        },
        {
          "name": "act",
          "taskReferenceName": "act",
          "type": "SWITCH",
          "evaluatorType": "value-param",
          "expression": "route",
          "inputParameters": {
            "route": "${think.output.result.done}"
          },
          "decisionCases": {
            "false": [
              {
                "name": "execute_tool",
                "taskReferenceName": "tool_call",
                "type": "CALL_MCP_TOOL",
                "inputParameters": {
                  "mcpServer": "${workflow.input.mcpServerUrl}",
                  "method": "${think.output.result.action}",
                  "arguments": "${think.output.result.arguments}"
                }
              }
            ],
            "true": []
          }
        }
      ]
    }
  ]
}

Every step is durably persisted — no framework, no SDK lock-in. Code-first engines force your code to be deterministic so the framework can replay it. Conductor makes the engine deterministic — so your code doesn't have to be.

See Build Your First AI Agent for the framework-first walkthrough, or Durable Adaptive Graphs for the governed production pattern.


Conductor Skills for AI Coding Assistants

Conductor Skills let AI coding assistants (Claude Code, Gemini CLI, and others) create, manage, and deploy Conductor workflows directly from your terminal.

Claude

# Install Skills for Claude Code
/plugin marketplace add conductor-oss/conductor-skills
/plugin install conductor@conductor-skills

Install for all detected agents

One command to auto-detect every supported agent on your system and install globally where possible. Re-run anytime — it only installs for newly detected agents.

macOS / Linux

curl -sSL https://conductor-oss.github.io/conductor-skills/install.sh | bash -s -- --all

Windows (PowerShell) / (cmd)

## powershell
irm https://conductor-oss.github.io/conductor-skills/inst

readme truncated — read the full docs on github

Frequently asked questions

Is conductor free to use?

conductor 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 conductor do?

Conductor is an event driven agentic workflow engine providing durable and highly resilient execution engine for applications and AI Agents

What is conductor written in?

conductor is primarily written in Java. Its source is publicly available at https://github.com/conductor-oss/conductor, and it has 32,207 GitHub stars.