Skip to content

Commit edeb444

Browse files
committed
update readme
1 parent adde9b3 commit edeb444

1 file changed

Lines changed: 55 additions & 80 deletions

File tree

README.md

Lines changed: 55 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -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

2937
If 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
4448
curl -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

7671
Workflows 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')})
8883
workflow.register(overwrite=True)
8984
```
9085

91-
### Step 2: Write worker
86+
**Step 2: Write worker**
9287

9388
Workers 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

106101
Create a `quickstart.py` with the following:
107102

@@ -153,39 +148,28 @@ Run it:
153148
python 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
164166
That'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
169171
See [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
243227
Workers 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
247232
Workers are typically long-lived services. By default, `TaskHandler` monitors worker subprocesses and restarts them if
248233
they exit unexpectedly.
@@ -260,7 +245,7 @@ To disable monitoring/restarts (e.g., local debugging):
260245
TaskHandler(..., monitor_processes=False, restart_on_failure=False)
261246
```
262247
263-
### Worker Configuration
248+
**Worker Configuration**
264249
265250
Workers 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
277262
See [WORKER_CONFIGURATION.md](WORKER_CONFIGURATION.md) for all options.
278263
279-
### Monitoring
264+
## Monitoring Workers
280265
281266
Enable Prometheus metrics:
282267
@@ -341,7 +326,7 @@ run = workflow.execute(workflow_input={'name': 'Orkes'}, wait_for_seconds=10)
341326
print(run.output)
342327
```
343328
344-
**Manage running workflows:**
329+
**Manage running workflows and send signals:**
345330
346331
```python
347332
from 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
387362
Conductor supports AI-native workflows including agentic tool calling, RAG pipelines, and multi-agent orchestration.
388363
389-
### Agentic Workflows
364+
**Agentic Workflows**
390365
391366
Build 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
439414
End-to-end examples covering all APIs for each domain:
440415

0 commit comments

Comments
 (0)