Open workflow runtime
Run agent workflows anywhere.
Write orchestration in JavaScript; dispatch Codex, Claude Code, Gemini, Qwen, Kimi, or any local CLI.
Why ODW
Keep the plan in code. Keep the agent context clean.
ODW turns dynamic workflow scripts into portable artifacts: easy to inspect, run, pause, resume, and move between agent CLIs.
workflow.js
Portable scripts
The same Claude Code-style workflow can run on Codex, Gemini, Qwen, Kimi, or a custom shell adapter.
parallel()
Parallel by design
Fan out independent subtasks without filling the host agent's conversation with every intermediate step.
odw status
Observable runs
Detached workers persist logs, state, and final results so long-running orchestration can be inspected later.
Runtime shape
A small engine between workflow scripts and real agent CLIs.
The loader wraps Claude-style JavaScript, the scheduler limits concurrency, and adapters shell out to the local agents you already use.
export const meta = { name: "fan-out-reduce" }
const drafts = await parallel(
[1, 2, 3, 4].map((i) => () =>
agent(`Draft #${i}: ${args.question}`)
)
)
return await agent(
"Synthesize the best answer",
{ schema }
)
agent(prompt)
Dispatch real work
Run one coding-agent CLI on a scoped subtask and collect text or schema-validated output.
parallel(thunks)
Fan out safely
Run independent branches concurrently when the next step needs the full batch.
pipeline(items)
Stream stages
Move each item through review, verification, and synthesis without a global barrier.
Start
Install the runtime or hack from source.
Use the single-file installer, install from npm, or clone the repository. ODW drives local agent CLIs; it does not call model APIs directly.
curl -fsSL https://raw.githubusercontent.com/xz1220/open-dynamic-workflows/main/scripts/install.sh | sh
npm i -g open-dynamic-workflows
odw run examples/deep-research.js --wait