Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 28 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Conductor provides the patterns that work: evaluator-optimizer loops for iterati
- **Conditional routing** - Route between agents based on output conditions
- **Human-in-the-loop** - Pause for human decisions with Rich terminal UI
- **Safety limits** - Max iterations and timeout enforcement
- **Web dashboard** - Real-time DAG visualization with agent detail streaming
- **[Web dashboard](#web-dashboard)** - Real-time workflow visualization with interactive DAG graph, live streaming, and in-browser human gates
- **Validation** - Validate workflows before execution

## Installation
Expand Down Expand Up @@ -104,6 +104,33 @@ conductor run my-workflow.yaml --input question="What is Python?"
}
```

## Web Dashboard

Conductor includes a built-in real-time web dashboard that lets you visualize and interact with your workflows as they run. Launch it with `--web`:

```bash
conductor run workflow.yaml --web --input question="What is Python?"
```

![Web Dashboard](docs/img/web-dashboard.png)

**Key features:**

- **Interactive DAG graph** — Zoomable, draggable workflow graph with animated edges showing execution flow and conditional routing
- **Live agent streaming** — Watch agent reasoning, tool calls, and outputs stream in real-time as each step executes
- **Three-pane layout** — Resizable panels for the graph, agent detail, and a tabbed output pane (Log, Activity, Output)
- **In-browser human gates** — Respond to human-in-the-loop decision points directly in the dashboard, no terminal needed
- **Per-node detail** — Click any node to see its prompt, metadata (model, tokens, cost), activity stream, and output
- **Background mode** — Run with `--web-bg` to start the dashboard in the background, print the URL, and exit. Use `conductor stop` to shut it down later.

```bash
# Run in background — prints dashboard URL and exits
conductor run workflow.yaml --web-bg --input topic="AI in healthcare"

# Stop a background workflow
conductor stop
```

## Providers

Conductor supports multiple AI providers. Choose based on your needs:
Expand Down
Binary file added docs/img/web-dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
62 changes: 26 additions & 36 deletions examples/parallel-research.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -82,16 +82,15 @@ agents:

Be specific and actionable.
output:
plan:
type: object
description: Structured research plan
properties:
questions:
type: array
areas:
type: array
sources:
type: array
questions:
type: array
description: 3-5 key research questions to answer
areas:
type: array
description: 3-4 areas to investigate
sources:
type: array
description: Types of sources to consult
summary:
type: string
description: One-sentence plan summary
Expand All @@ -111,14 +110,11 @@ agents:

Topic: {{ workflow.input.topic }}

Research Plan:
{{ planner.output.plan | json }}

Focus on:
- Academic papers and research studies
- University publications
- Scientific journals
- Research institutions
Research Questions:
{{ planner.output.questions | json }}

Research Areas:
{{ planner.output.areas | json }}

Provide credible, well-sourced findings based on your knowledge.
output:
Expand All @@ -145,14 +141,11 @@ agents:

Topic: {{ workflow.input.topic }}

Research Plan:
{{ planner.output.plan | json }}

Focus on:
- Recent news articles
- Industry blogs and publications
- Case studies and real-world examples
- Expert opinions and commentary
Research Questions:
{{ planner.output.questions | json }}

Research Areas:
{{ planner.output.areas | json }}

Provide findings based on your knowledge of recent and authoritative sources.
output:
Expand All @@ -179,14 +172,11 @@ agents:

Topic: {{ workflow.input.topic }}

Research Plan:
{{ planner.output.plan | json }}

Focus on:
- Technical documentation
- API references and specifications
- Implementation guides
- Standards and best practices
Research Questions:
{{ planner.output.questions | json }}

Research Areas:
{{ planner.output.areas | json }}

Provide findings based on your technical knowledge.
output:
Expand Down Expand Up @@ -290,7 +280,7 @@ agents:
Topic: {{ workflow.input.topic }}

Original Research Questions:
{{ planner.output.plan.questions | json }}
{{ planner.output.questions | json }}

Executive Summary:
{{ synthesizer.output.executive_summary }}
Expand Down Expand Up @@ -331,7 +321,7 @@ agents:
- to: $end
when: "{{ output.quality_score >= 7 }}"
- to: planner
when: "context.iteration < 3"
when: "{{ context.iteration < 3 }}"
output:
feedback: "{{ quality_checker.output.gaps | json }}"
- to: $end
Expand Down
4 changes: 2 additions & 2 deletions examples/research-assistant.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ agents:
- to: synthesizer
when: "coverage >= 70"
- to: researcher
when: "context.iteration < 3"
when: "{{ context.iteration < 3 }}"
- to: synthesizer

- name: synthesizer
Expand Down Expand Up @@ -218,7 +218,7 @@ agents:
- to: $end
when: "{{ output.passed }}"
- to: synthesizer
when: "context.iteration < 5"
when: "{{ context.iteration < 5 }}"
- to: $end

output:
Expand Down
8 changes: 3 additions & 5 deletions tests/test_integration/test_examples.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,9 @@ def mock_handler(agent, prompt, context):
"""Mock handler for testing parallel research workflow."""
agent_outputs = {
"planner": {
"plan": {
"questions": ["Q1", "Q2", "Q3"],
"areas": ["A1", "A2"],
"sources": ["academic", "web", "technical"],
},
"questions": ["Q1", "Q2", "Q3"],
"areas": ["A1", "A2"],
"sources": ["academic", "web", "technical"],
"summary": "Research AI in healthcare",
},
"academic_researcher": {
Expand Down
Loading