@@ -13,65 +13,60 @@ If you find [Conductor](https://github.com/conductor-oss/conductor) useful, plea
1313
1414## Quick Links
1515
16- - [ 60-Second Quickstart] ( #60-second-quickstart )
17- - [ Workflow-as-API (FastAPI example)] ( examples/fastapi_worker_service.py )
18- - [ Examples Catalog] ( examples/README.md )
19- - [ Worker Guide] ( docs/WORKER.md ) and [ Worker Configuration] ( WORKER_CONFIGURATION.md )
20- - [ Workflow Guide] ( docs/WORKFLOW.md ) and [ Workflow Testing] ( docs/WORKFLOW_TESTING.md )
21- - [ Metrics (Prometheus)] ( METRICS.md )
22-
23- ## 60-Second Quickstart
24-
25- Prereqs: Python 3.9+.
26-
27- ### Start a Conductor server
16+ <!-- TOC -->
17+ * [ Start Conductor server] ( #start--conductor-server )
18+ * [ Install the SDK] ( #install-the-sdk )
19+ * [ 60-Second Quickstart] ( #60-second-quickstart )
20+ * [ Comprehensive example with sync + async workers, metrics, and long-running tasks] ( #comprehensive-example-with-sync--async-workers-metrics-and-long-running-tasks )
21+ * [ Workers] ( #workers )
22+ * [ Monitoring Workers] ( #monitoring-workers )
23+ * [ Workflows] ( #workflows )
24+ * [ Troubleshooting] ( #troubleshooting )
25+ * [ AI & LLM Workflows] ( #ai--llm-workflows )
26+ * [ Examples] ( #examples )
27+ * [ API Journey Examples] ( #api-journey-examples )
28+ * [ Documentation] ( #documentation )
29+ * [ Support] ( #support )
30+ * [ Frequently Asked Questions] ( #frequently-asked-questions )
31+ * [ License] ( #license )
32+ <!-- TOC -->
33+
34+
35+ ## Start Conductor server
2836
2937If you don't already have a Conductor server running, pick one:
3038
3139** Docker Compose (recommended, includes UI):**
3240
3341``` shell
34- git clone https://github.com/conductor-oss/conductor.git
35- cd conductor
36- docker compose -f docker/docker-compose.yaml up -d
42+ docker run -p 8080:8080 conductoross/conductor:latest
3743```
44+ The UI will be available at ` http://localhost:8080 ` and the API at ` http://localhost:8080/api `
3845
39- The UI will be available at ` http://localhost:8127 ` and the API at ` http://localhost:8080/api ` (run without ` -d ` to see logs).
40-
41- ** macOS / Linux (one-liner):**
42-
46+ ** MacOS / Linux (one-liner):** (If you don't want to use docker, you can install and run the binary directly)
4347``` shell
4448curl -sSL https://raw.githubusercontent.com/conductor-oss/conductor/main/conductor_server.sh | sh
4549```
4650
47- This starts the same Docker Compose setup as above.
48-
49- ### Install the SDK
50-
51+ ** Conductor CLI**
5152``` shell
52- pip install conductor-python
53- ```
53+ # Installs conductor cli
54+ npm install -g @conductor-oss/conductor-cli
5455
55- ### Set environment variables
56+ # Start the open source conductor server
57+ conductor server start
58+ # see conductor server --help for all the available commands
59+ ```
5660
57- The SDK reads configuration from environment variables:
61+ ## Install the SDK
5862
5963``` shell
60- # Required — Conductor server endpoint
61- export CONDUCTOR_SERVER_URL=" http://localhost:8080/api"
62-
63- # Optional — Conductor UI base URL (Docker Compose runs UI on 8127; defaults to CONDUCTOR_SERVER_URL without /api)
64- export CONDUCTOR_UI_SERVER_URL=" http://localhost:8127"
65-
66- # Optional — Authentication (required for Orkes Conductor)
67- export CONDUCTOR_AUTH_KEY=" your-key"
68- export CONDUCTOR_AUTH_SECRET=" your-secret"
69-
70- # Optional — set to false to force HTTP/1.1 if your environment has unstable long-lived HTTP/2 connections (default: true)
71- # export CONDUCTOR_HTTP2_ENABLED=false
64+ pip install conductor-python
7265```
7366
74- ### Step 1: Create a workflow
67+ ## 60-Second Quickstart
68+
69+ ** Step 1: Create a workflow**
7570
7671Workflows are definitions that reference task types (e.g. a SIMPLE task called ` greet ` ). We'll build a workflow called
7772` greetings ` that runs one task and returns its output.
@@ -88,7 +83,7 @@ workflow.output_parameters({'result': greet_task.output('result')})
8883workflow.register(overwrite = True )
8984```
9085
91- ### Step 2: Write worker
86+ ** Step 2: Write worker**
9287
9388Workers are just Python functions decorated with ` @worker_task ` that poll Conductor for tasks and execute them.
9489
@@ -101,7 +96,7 @@ def greet(name: str) -> str:
10196 return f ' Hello { name} '
10297```
10398
104- ### Step 3: Run your first workflow app
99+ ** Step 3: Run your first workflow app**
105100
106101Create a ` quickstart.py ` with the following:
107102
@@ -153,39 +148,28 @@ Run it:
153148python quickstart.py
154149```
155150
156- > ** Using Orkes Conductor?** Export your authentication credentials as well:
151+ > ### Using Orkes Conductor / Remote Server?
152+ > Export your authentication credentials as well:
153+ >
157154> ``` shell
158155> export CONDUCTOR_SERVER_URL=" https://your-cluster.orkesconductor.io/api"
156+ >
157+ > # If using Orkes Conductor that requires auth key/secret
159158> export CONDUCTOR_AUTH_KEY=" your-key"
160159> export CONDUCTOR_AUTH_SECRET=" your-secret"
160+ >
161+ > # Optional — set to false to force HTTP/1.1 if your network environment has unstable long-lived HTTP/2 connections (default: true)
162+ > # export CONDUCTOR_HTTP2_ENABLED=false
161163> ` ` `
162164> See [Configuration](# configuration) for details.
163165
164166That' s it -- you just defined a worker, built a workflow, and executed it. Open the Conductor UI (default:
165167[http://localhost:8127](http://localhost:8127)) to see the execution.
166168
167- ### Comprehensive example with sync + async workers, metrics, and long-running tasks
169+ ## Comprehensive example with sync + async workers, metrics, and long-running tasks
168170
169171See [examples/workers_e2e.py](examples/workers_e2e.py)
170172
171- ### Configuration
172-
173- The SDK reads configuration from environment variables:
174-
175- ```shell
176- # Required — Conductor server endpoint
177- export CONDUCTOR_SERVER_URL="http://localhost:8080/api"
178-
179- # Optional — Authentication (required for Orkes Conductor)
180- export CONDUCTOR_AUTH_KEY="your-key"
181- export CONDUCTOR_AUTH_SECRET="your-secret"
182-
183- # Optional — Override UI base URL (Docker Compose runs UI on 8127; defaults to CONDUCTOR_SERVER_URL without /api)
184- export CONDUCTOR_UI_SERVER_URL="http://localhost:8127"
185-
186- # Optional — set to false to force HTTP/1.1 if your environment has unstable long-lived HTTP/2 connections (default: true)
187- # export CONDUCTOR_HTTP2_ENABLED=false
188- ```
189173---
190174
191175## Workers
@@ -242,7 +226,8 @@ finally:
242226
243227Workers support complex inputs (dataclasses), long-running tasks (`TaskInProgress`), and hierarchical configuration via environment variables.
244228
245- ### Resilience: auto-restart and health checks
229+ **Resilience: auto-restart and health checks**
230+
246231
247232Workers are typically long-lived services. By default, `TaskHandler` monitors worker subprocesses and restarts them if
248233they exit unexpectedly.
@@ -260,7 +245,7 @@ To disable monitoring/restarts (e.g., local debugging):
260245TaskHandler(..., monitor_processes=False, restart_on_failure=False)
261246```
262247
263- ### Worker Configuration
248+ ** Worker Configuration**
264249
265250Workers support hierarchical environment variable configuration — global settings that can be overridden per worker:
266251
@@ -276,7 +261,7 @@ export CONDUCTOR_WORKER_GREETINGS_THREAD_COUNT=50
276261
277262See [WORKER_CONFIGURATION.md](WORKER_CONFIGURATION.md) for all options.
278263
279- ### Monitoring
264+ ## Monitoring Workers
280265
281266Enable Prometheus metrics:
282267
@@ -341,7 +326,7 @@ run = workflow.execute(workflow_input={'name': 'Orkes'}, wait_for_seconds=10)
341326print(run.output)
342327```
343328
344- **Manage running workflows:**
329+ **Manage running workflows and send signals :**
345330
346331```python
347332from conductor.client.orkes_clients import OrkesClients
@@ -371,22 +356,12 @@ workflow_client.restart_workflow(workflow_id)
371356 `CONDUCTOR_HTTP2_ENABLED=false` (forces HTTP/1.1) — see `docs/WORKER.md`.
372357- FastAPI/Uvicorn: avoid running `uvicorn` with multiple web workers unless you explicitly want multiple independent
373358 `TaskHandler`s polling Conductor (see `examples/fastapi_worker_service.py`).
374-
375- ## Hello World
376-
377- The complete Hello World example lives in [`examples/helloworld/`](examples/helloworld/):
378-
379- ```shell
380- python examples/helloworld/helloworld.py
381- ```
382-
383- It creates a `greetings` workflow with one worker task, runs the worker, executes the workflow, and prints the result. See the [Hello World source](examples/helloworld/helloworld.py) for the full code.
384-
359+ ---
385360## AI & LLM Workflows
386361
387362Conductor supports AI-native workflows including agentic tool calling, RAG pipelines, and multi-agent orchestration.
388363
389- ### Agentic Workflows
364+ ** Agentic Workflows**
390365
391366Build AI agents where LLMs dynamically select and call Python workers as tools. See [examples/agentic_workflows/](examples/agentic_workflows/) for all examples.
392367
@@ -398,7 +373,7 @@ Build AI agents where LLMs dynamically select and call Python workers as tools.
398373| [function_calling_example.py](examples/agentic_workflows/function_calling_example.py) | LLM picks which Python function to call based on user queries |
399374| [mcp_weather_agent.py](examples/agentic_workflows/mcp_weather_agent.py) | AI agent using MCP tools for weather queries |
400375
401- ### LLM and RAG Workflows
376+ ** LLM and RAG Workflows**
402377
403378| Example | Description |
404379|---------|-------------|
@@ -434,7 +409,7 @@ See the [Examples Guide](examples/README.md) for the full catalog. Key examples:
434409| [test_workflows.py](examples/test_workflows.py) | Unit testing workflows | `python -m unittest examples.test_workflows` |
435410| [kitchensink.py](examples/kitchensink.py) | All task types (HTTP, JS, JQ, Switch) | `python examples/kitchensink.py` |
436411
437- ### API Journey Examples
412+ ## API Journey Examples
438413
439414End-to-end examples covering all APIs for each domain:
440415
0 commit comments