Conductor OSS website screenshot

Conductor OSS

Conductor OSS is the Netflix-founded, Orkes-stewarded open source workflow and agentic AI orchestration platform. It provides a durable, event-driven workflow engine for coordinating microservices, long-running tasks, human approvals, and LLM-powered agents across any language or cloud, with first class support for HTTP, gRPC, Kafka, AMQP, SQS, and MCP-based tool calling.

2 APIs 7 Features
Agentic AIDurable ExecutionEvent-DrivenMicroservicesNetflixOpen SourceOrchestrationWorkflow EngineWorkflows

APIs

Conductor OSS REST API

The Conductor OSS REST API is the canonical control plane for the workflow engine — registering and versioning workflow and task definitions, starting and querying workflow exec...

Conductor MCP Server

Conductor MCP is an official Model Context Protocol server for Orkes Conductor that exposes workflow execution, task management, and metadata operations as MCP tools so that LLM...

Collections

Features

Durable Workflow Execution

Workflow state is persisted at every step so executions survive worker restarts, server failover, and long human-in-the-loop waits.

Polyglot Workers

Tasks are executed by language-agnostic workers that poll the server, with official SDKs in Java, Python, Go, JavaScript / TypeScript, C#, Clojure, Ruby, and Rust.

System Tasks and Operators

Built-in HTTP, Kafka, JQ, wait, human approval, sub-workflow, fork, join, switch, do-while, and dynamic-fork operators compose workflows without writing code.

Agentic AI and LLM Orchestration

Native LLM tasks for 14+ providers, vector database integrations for RAG, MCP tool calling, and human-in-the-loop checkpoints make Conductor a runtime for agentic AI applications.

Event-Driven Triggers

Event handlers consume from Kafka, AMQP, SQS, NATS, and webhook sources to start workflows or complete tasks from external systems.

Horizontal Scalability

Stateless API servers and worker pools scale horizontally, with pluggable persistence (PostgreSQL, MySQL, Cassandra, Redis) and indexing (OpenSearch / Elasticsearch).

Operational Observability

Built-in metrics, structured logs, distributed tracing, and a Swagger UI on every server expose the workflow surface for operators.

Use Cases

Microservices Orchestration

Coordinate sagas, compensations, retries, and timeouts across distributed microservices without bespoke orchestration code.

AI Agent Orchestration

Run production-grade agentic workflows with reasoning loops, tool calling, MCP integration, RAG retrieval, and human approvals.

Payment and Order Processing

Reliable long-running flows for payments, fulfillment, KYC, and onboarding — the reference example workload shipped by Conductor.

Data and ML Pipelines

Schedule and orchestrate ETL, model training, and inference pipelines with durable retries and conditional branching.

Human-in-the-Loop Approvals

Pause workflows on human tasks, capture approvals via UI or API, and resume execution deterministically.

Event-Driven Integration

Bridge message brokers and SaaS webhooks into deterministic workflows across the enterprise.

Integrations

Apache Kafka

System task and event-handler integration for Kafka topics.

AMQP / RabbitMQ

Built-in AMQP system task and event source.

AWS SQS

Native SQS event queue and system task module.

NATS

NATS event queue integration for triggering workflows.

PostgreSQL / MySQL / Cassandra / Redis

Pluggable persistence backends for workflow and task state.

OpenSearch / Elasticsearch

Pluggable indexing backends powering search and history.

AWS S3 / Azure Blob

External payload storage for large workflow inputs and outputs.

Model Context Protocol (MCP)

Official MCP server exposes Conductor to AI agents as tools.

gRPC

gRPC API surface alongside the REST API for high-performance clients.

Solutions

Conductor OSS

Apache 2.0 open source workflow engine, self-hosted via Docker, Helm, or source build.

Orkes Developer Edition

Free hosted Conductor sandbox by Orkes with all enterprise features enabled for prototyping and learning.

Orkes Enterprise / Cloud

Fully managed Conductor on AWS, Azure, GCP, or on-prem with SOC2, RBAC, SSO, audit logs, and up to 99.99% availability SLA.

Resources

🔗
Website
Website
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
👥
GitHub
GitHub
👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
📰
Blog
Blog
🔗
Slack
Slack
👥
YouTube
YouTube
🔗
License
License
💰
Pricing
Pricing
🌐
Portal
Portal
📝
Signup
Signup
🎓
Training
Training
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
📦
SDKs
SDKs
🔗
CLI
CLI

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: Conductor OSS REST API
  version: 3.x
items:
- info:
    name: Metadata
    type: folder
  items:
  - info:
      name: List workflow definitions
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/metadata/workflow'
    docs: Returns all registered workflow definitions.
  - info:
      name: Register a workflow definition
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/metadata/workflow'
      body:
        type: json
        data: '{}'
    docs: Registers a new workflow definition.
  - info:
      name: Update workflow definitions
      type: http
    http:
      method: PUT
      url: '{baseUrl}/api/metadata/workflow'
      body:
        type: json
        data: '{}'
    docs: Updates existing workflow definitions.
  - info:
      name: Get workflow definition
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/metadata/workflow/:name'
      params:
      - name: name
        value: ''
        type: path
      - name: version
        value: ''
        type: query
    docs: Returns a specific workflow definition by name.
  - info:
      name: Delete a workflow definition
      type: http
    http:
      method: DELETE
      url: '{baseUrl}/api/metadata/workflow/:name'
      params:
      - name: name
        value: ''
        type: path
      - name: version
        value: ''
        type: query
    docs: Deletes a workflow definition by name and version.
  - info:
      name: List task definitions
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/metadata/taskdefs'
    docs: Returns all registered task definitions.
  - info:
      name: Register task definitions
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/metadata/taskdefs'
      body:
        type: json
        data: '{}'
    docs: Registers new task definitions.
  - info:
      name: Get task definition
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/metadata/taskdefs/:taskType'
      params:
      - name: taskType
        value: ''
        type: path
    docs: Returns a specific task definition by name.
  - info:
      name: Delete a task definition
      type: http
    http:
      method: DELETE
      url: '{baseUrl}/api/metadata/taskdefs/:taskType'
      params:
      - name: taskType
        value: ''
        type: path
    docs: Deletes a task definition by name.
- info:
    name: Workflow
    type: folder
  items:
  - info:
      name: Start a workflow
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/workflow'
      body:
        type: json
        data: '{}'
    docs: Starts a new workflow execution.
  - info:
      name: Get workflow execution
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/workflow/:workflowId'
      params:
      - name: workflowId
        value: ''
        type: path
      - name: includeTasks
        value: ''
        type: query
    docs: Returns the execution details of a specific workflow.
  - info:
      name: Terminate a workflow
      type: http
    http:
      method: DELETE
      url: '{baseUrl}/api/workflow/:workflowId'
      params:
      - name: workflowId
        value: ''
        type: path
      - name: reason
        value: ''
        type: query
    docs: Terminates a running workflow execution.
  - info:
      name: Pause a workflow
      type: http
    http:
      method: PUT
      url: '{baseUrl}/api/workflow/:workflowId/pause'
      params:
      - name: workflowId
        value: ''
        type: path
    docs: Pauses a running workflow execution.
  - info:
      name: Resume a workflow
      type: http
    http:
      method: PUT
      url: '{baseUrl}/api/workflow/:workflowId/resume'
      params:
      - name: workflowId
        value: ''
        type: path
    docs: Resumes a paused workflow execution.
  - info:
      name: Restart a workflow
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/workflow/:workflowId/restart'
      params:
      - name: workflowId
        value: ''
        type: path
      - name: useLatestDefinitions
        value: ''
        type: query
    docs: Restarts a completed or terminated workflow from the beginning.
  - info:
      name: Retry a workflow
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/workflow/:workflowId/retry'
      params:
      - name: workflowId
        value: ''
        type: path
      - name: resumeSubworkflowTasks
        value: ''
        type: query
    docs: Retries a failed workflow from the last failed task.
  - info:
      name: Rerun a workflow
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/workflow/:workflowId/rerun'
      params:
      - name: workflowId
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Reruns a completed workflow from a specific task.
  - info:
      name: Skip a task
      type: http
    http:
      method: PUT
      url: '{baseUrl}/api/workflow/:workflowId/skiptask/:taskReferenceName'
      params:
      - name: workflowId
        value: ''
        type: path
      - name: taskReferenceName
        value: ''
        type: path
    docs: Skips a specific task in a running workflow.
  - info:
      name: Search workflows
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/workflow/search'
      params:
      - name: start
        value: ''
        type: query
      - name: size
        value: ''
        type: query
      - name: sort
        value: ''
        type: query
      - name: freeText
        value: ''
        type: query
      - name: query
        value: ''
        type: query
    docs: Search for workflow executions based on query parameters.
- info:
    name: Tasks
    type: folder
  items:
  - info:
      name: Poll for a task
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/tasks/poll/:taskType'
      params:
      - name: taskType
        value: ''
        type: path
      - name: workerid
        value: ''
        type: query
      - name: domain
        value: ''
        type: query
    docs: Polls for a task of a given type for a worker.
  - info:
      name: Batch poll for tasks
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/tasks/poll/batch/:taskType'
      params:
      - name: taskType
        value: ''
        type: path
      - name: workerid
        value: ''
        type: query
      - name: count
        value: ''
        type: query
      - name: timeout
        value: ''
        type: query
    docs: Polls for multiple tasks of a given type.
  - info:
      name: Update task status
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/tasks'
      body:
        type: json
        data: '{}'
    docs: Updates the status of a task with results.
  - info:
      name: Get task details
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/tasks/:taskId'
      params:
      - name: taskId
        value: ''
        type: path
    docs: Returns details of a specific task.
  - info:
      name: Get task queue sizes
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/tasks/queue/sizes'
      params:
      - name: taskType
        value: ''
        type: query
    docs: Returns the sizes of task queues.
- info:
    name: Events
    type: folder
  items:
  - info:
      name: List event handlers
      type: http
    http:
      method: GET
      url: '{baseUrl}/api/event'
    docs: Returns all registered event handlers.
  - info:
      name: Create event handler
      type: http
    http:
      method: POST
      url: '{baseUrl}/api/event'
      body:
        type: json
        data: '{}'
    docs: Registers a new event handler.
bundled: true