Parallel Processing with Join Modes

v1.1 Feature

Demonstrates v1.1 join modes — wait_all, wait_any, wait_n for parallel branches.

6 nodes · 7 edgesv1.1 features
v1.1joinparallelresilience
Visual
dispatchsystem
parallelsearch_google
parallelsearch_bing
parallelsearch_brave
search_googleapi
parallelmerge_results
search_bingapi
parallelmerge_results
search_braveapi
parallelmerge_results
merge_resultsagent
sequentialdeliver
deliverapi
ex-join-modes-parallel.osop.yaml
osop_version: "1.1"
id: "join-modes-parallel"
name: "Parallel Processing with Join Modes"
description: "Demonstrates v1.1 join modes — wait_all, wait_any, wait_n for parallel branches."
tags: [v1.1, join, parallel, resilience]

nodes:
  - id: "dispatch"
    type: "system"
    purpose: "Dispatch query to multiple search providers."

  - id: "search_google"
    type: "api"
    purpose: "Search Google."
    runtime:
      endpoint: "https://www.googleapis.com/customsearch/v1"
    timeout_sec: 10

  - id: "search_bing"
    type: "api"
    purpose: "Search Bing."
    runtime:
      endpoint: "https://api.bing.microsoft.com/v7.0/search"
    timeout_sec: 10

  - id: "search_brave"
    type: "api"
    purpose: "Search Brave."
    runtime:
      endpoint: "https://api.search.brave.com/res/v1/web/search"
    timeout_sec: 10

  - id: "merge_results"
    type: "agent"
    subtype: "llm"
    purpose: "Merge and deduplicate results from available sources."
    runtime:
      model: "claude-haiku-4-5"

  - id: "deliver"
    type: "api"
    purpose: "Return merged results to user."

edges:
  - from: "dispatch"
    to: "search_google"
    mode: "parallel"
  - from: "dispatch"
    to: "search_bing"
    mode: "parallel"
  - from: "dispatch"
    to: "search_brave"
    mode: "parallel"
  # Proceed when ANY 2 of 3 search engines respond
  - from: "search_google"
    to: "merge_results"
    mode: "parallel"
    join_mode: "wait_n"
    join_count: 2
  - from: "search_bing"
    to: "merge_results"
    mode: "parallel"
  - from: "search_brave"
    to: "merge_results"
    mode: "parallel"
  - from: "merge_results"
    to: "deliver"
    mode: "sequential"