taskflow
Declarative agent orchestration.
Describe multi-step coding-agent work as a DAG, verify it before a token is spent, and return only the final result to your context window.
1{2 "name": "review-changes",3 "concurrency": 4,4 "phases": [5 {6 "id": "discover",7 "type": "agent",8 "agent": "scout",9 "output": "json",10 "task": "List changed source files under src/. Output ONLY a JSON array of {path} objects."11 },12 {13 "id": "review-each",14 "type": "map",15 "over": "{steps.discover.json}",16 "as": "file",17 "agent": "security-reviewer",18 "dependsOn": ["discover"],19 "task": "Review {file.path} for security risks. Return one paragraph."20 },21 {22 "id": "summarize",23 "type": "reduce",24 "from": ["review-each"],25 "agent": "writer",26 "dependsOn": ["review-each"],27 "final": true,28 "task": "Combine these reviews into one prioritized risk summary."29 }30 ]31}A complete review flow: discover files, fan out reviews, then summarize.
Describe, verify, execute, and return — all in one pipeline.
Write a DAG
A single JSON file declares phases and dependencies.
Verify first
Static checks catch cycles and budget issues before any tokens are spent.
Fan out
Map, parallel, and tournament phases run isolated subagents.
Gate & reduce
Quality gates and reduce phases aggregate results.
Final output
Only the last phase returns to your host context.
By the numbers
4 hosts
Pi, Codex, Claude Code, OpenCode
10 phase types
agent, map, gate, reduce, and more
0 runtime deps
No production dependencies
Cross-session resume
Pick up where you left off
Built for real agent workflows
Declarative DAGs
Define phases, dependencies, and fan-out as data. The runtime turns your graph into isolated subagent calls.
Context Isolation
Intermediate transcripts stay inside the runtime. Only the final phase reaches your conversation.
Cross-Session Resume
Paused or failed runs pick up where they left off. Cached phases skip automatically on re-run.
Declarative vs imperative
Why declare your agent workflows as data instead of scripting them?
| Aspect | Declarative | Imperative |
|---|---|---|
| Verifiable before tokens | DAG checked for cycles, dead ends, and budget before any model call. | Bugs surface at runtime, after you have already paid. |
| Context cost | Only the final output returns to your context. | Every transcript floods the host conversation. |
| Resume after failure | Cached phases auto-skip on re-run. | Start over from the beginning. |
| Reusability | Save, version, and call by name. | Copy-paste scripts between runs. |
What early users say
We turned a 50-file security review from a context-window disaster into a 10-minute taskflow.
Platform Engineer, Series B startup
Cross-session resume alone saved us hours. A run dies at the summary step and we just continue it.
Staff Engineer, AI infrastructure
The tournament phase consistently beats our single-shot headline and release-note drafts.
Developer Advocate, open-source tooling
Ready to declare your first DAG?
Install on Pi or Codex and run a multi-phase workflow in minutes.