Latest stable

Parallel Runner

Bounded concurrent fan-out for independent kanban tasks, data items, or complete commands—with structured evidence for every item.

Use it for independent work

Choose Parallel Runner when each item can finish without consuming another item’s response. It owns queueing, a maximum worker count, per-item execution, and aggregation.

Do not use it to hide dependencies. Use Workflow Runner when outputs or session IDs must flow in order.

Prerequisites

  • Run yy init so project-local scripts and kanban exist.
  • Choose exactly one input: task IDs, kanban filter, items/file, or command file.
  • Include {{task_id}} or {{item}} in custom prompts.
  • Install tmux only when using windows, tabs, panes, or handoff.

Inputs and execution modes

InputBest for
--kanban / --kanban-filter readyDependency-aware task fan-out
--items-fileJSONL, CSV, TSV, or XLSX records
--commands-fileComplete commands or multiple workflows

Headless mode logs in the background worker pool. Tmux windows/panes make work visible. --tmux-handoff never reuses completed panes and can split them with --max-panes-per-session.

Representative commands

independent ready tasks
./.juno_task/scripts/parallel_runner.sh --kanban-filter "ready" --parallel 3
command batch
./.juno_task/scripts/parallel_runner.sh --lint-commands-file workflows.yaml
./.juno_task/scripts/parallel_runner.sh --commands-file workflows.yaml --parallel 2
nonblocking tmux
./.juno_task/scripts/parallel_runner.sh --tmux panes --no-attach --kanban T1,T2 --parallel 2
./.juno_task/scripts/parallel_runner_wait.sh --timeout 7200

Safety contract

  • Cap --parallel for provider quotas and shared files.
  • Run only ready tasks; related tasks are not dependency edges.
  • Pi --live with tmux is valid only with --parallel 1.
  • Use --strict only with --file-format; it fails an item when the expected fenced block is absent.
  • Lint raw command YAML before launching expensive work.

Artifacts and handoff

The printed output directory contains per-item JSON with exit code, elapsed time, final response and session ID; parallel_runner_status.json; logs; and aggregation_*.json. Capped handoff also writes tmux_handoff_manifest.json. Continue a captured session with yy continue SESSION_ID; do not reconstruct work from tmux scrollback.

Troubleshooting

  • Tail the printed log; the runner has no --verbose flag.
  • Inspect status and aggregation JSON before retrying.
  • Use --stop --name NAME or --stop-all for tmux sessions.
  • If a custom prompt ignores task context, verify its explicit placeholder.

Freshness sources

Reviewed against the current YYLO README sections Autonomous Execution and Parallel Execution, plus parallel_runner.sh --help and parallel_runner_wait.sh in the generated inventory.