From f5eda3527cbd8423e17e2ca69fbcfa1b7f5d0162 Mon Sep 17 00:00:00 2001 From: Adewale Abati Date: Mon, 11 May 2026 17:38:52 +0200 Subject: [PATCH] blog: orchestrating with goose (#9104) --- .../2026-05-05-goose-as-conductor/index.md | 122 ++++++++++++++++++ .../static/img/blog/goose-conductor.png | Bin 0 -> 13488 bytes 2 files changed, 122 insertions(+) create mode 100644 documentation/blog/2026-05-05-goose-as-conductor/index.md create mode 100644 documentation/static/img/blog/goose-conductor.png diff --git a/documentation/blog/2026-05-05-goose-as-conductor/index.md b/documentation/blog/2026-05-05-goose-as-conductor/index.md new file mode 100644 index 0000000000..3646c0af02 --- /dev/null +++ b/documentation/blog/2026-05-05-goose-as-conductor/index.md @@ -0,0 +1,122 @@ +--- +title: "Orchestrate complex workflows across multiple agents with goose" +description: "Use goose to coordinate multi-agent workflows — decompose complex tasks, delegate to specialized agents in parallel, and synthesize the results." +authors: + - adewale +image: /img/blog/goose-conductor.png +--- + +![goose orchestrating multiple agents like a conductor](/img/blog/goose-conductor.png) + +A lot of people prompt their agents one task at a time — "do this, now do that, now do the next thing." It works, but it's slow. Many people also want their agents doing many things at once: researching while coding, reviewing while testing, writing docs while refactoring. + +That's what orchestration gives you. Instead of feeding goose one task at a time and waiting, you can have it coordinate multiple agents working in parallel — each focused on a specific piece of the puzzle, with goose keeping everything on track. + + + +## What is orchestration? + +If you've used [subagents](/docs/guides/subagents) before, you already know how to delegate work to independent AI instances. Orchestration is the layer above that — the part that decides _who_ does _what_ and _when_. Instead of one goose session doing everything sequentially, orchestration lets you: + +- **Decompose** a complex task into independent subtasks +- **Delegate** each subtask to a separate agent (subagent, ACP provider, or another goose instance) +- **Coordinate** the results — waiting for dependencies, handling failures, merging outputs + +Think of it as the difference between a solo developer and a tech lead managing a team. + +## Try it yourself + +Here's something you can run right now to see orchestration in action. Ask goose: + +``` +I need to understand this codebase. In parallel: +- Summarize the project structure and key dependencies +- Identify the main entry points and how data flows through them +- Find any TODO comments or known issues in the code +``` + +goose will spin up three subagents simultaneously — one for each research task. You'll see them working at the same time in your session, and all three summaries come back roughly together instead of one after another. What would've been three sequential waits becomes one. + +## How it builds on what already exists + +Orchestration doesn't replace subagents or subrecipes — it builds on them: + +| Layer | What it does | +|-------|-------------| +| [Subagents](/docs/guides/subagents) (delegate) | Spin up independent sub-tasks | +| Async delegates | Run subagents in the background, collect results later | +| [ACP providers](/docs/guides/acp-providers) | Bring in external agents (Claude Code, Codex, Amp) | +| **Orchestration** | Coordinate all of the above into structured workflows | + +If subagents are your teammates, orchestration is the project plan that tells them what to do and when. + +## Phased workflows: research → build → verify + +Not everything can run in parallel. Some workflows have natural phases where later steps depend on earlier results. You can describe this to goose naturally: + +``` +Build a REST API for the inventory system: +1. First, research the existing data models in src/models/ and the API patterns in src/routes/ (do both at the same time) +2. Then implement the inventory API routes following those patterns +3. Finally, write integration tests and do a security review (both at the same time) +``` + +goose understands the dependency structure here. Phase 1 runs two research tasks in parallel. Phase 2 waits for those results before building. Phase 3 kicks off two independent verification tasks in parallel. + +The key insight: **reads can be parallel, writes should be sequential** (especially if they touch the same files). + +## Orchestration + ACP: mixing agents + +Here's where things get really interesting. Orchestration works with [ACP providers](/docs/guides/acp-providers), which means you can delegate to entirely different coding agents — not just goose subagents. + +To use them, you just say so in your prompt, e.g: + +``` +Refactor the auth module for clarity using Claude Code, +then write tests for it, and use Codex to generate the API docs. +``` + +goose understands that you want different agents handling different parts of the workflow. It delegates each task to the right agent, waits for the results, and brings everything together. This works the same whether you're on the CLI or the desktop app — you just ask in natural language. + +The only prerequisite is having the [provider configured](/docs/guides/acp-providers) for whichever agents you want to use. + +## Best practices + +When you start orchestrating, it's important to do this with tasks that are conceptually separate and will be less likely to result in edit conflicts on shared files. Here are some tips: + +### Parallelize your reads + +Research tasks are safe to run in parallel. Multiple agents can read the same codebase, docs, or APIs simultaneously without stepping on each other. + +### Be explicit in instructions + +Delegates only know what you tell them. They don't share context with each other or with the parent session. If a delegate needs information from a previous phase, pass it explicitly in the instructions. + +### Start simple + +You don't need to orchestrate everything. A single subagent is fine for straightforward tasks. Orchestration shines when you have genuinely independent work streams or need multiple perspectives on the same problem. + +## Get started + +If you're already using goose, you can start orchestrating today. The simplest way is just to ask: + +``` +Do these three things in parallel: [task A], [task B], [task C] +``` + +goose handles the rest — spinning up delegates, running them concurrently, and bringing the results together. + +For reusable workflows, check out the [subrecipes in parallel tutorial](/docs/tutorials/subrecipes-in-parallel/) to build recipes you can share with your team. And if you want to bring in external agents, the [ACP providers guide](/docs/guides/acp-providers) will get you set up with Claude Code, Codex, or Amp. + + + + + + + + + + + + + \ No newline at end of file diff --git a/documentation/static/img/blog/goose-conductor.png b/documentation/static/img/blog/goose-conductor.png new file mode 100644 index 0000000000000000000000000000000000000000..a16b31a01abbe7835c040abfd7ffca6374707b3b GIT binary patch literal 13488 zcmeHudpMM9_wYlCl#oMhkwZdEqD({%$yCZA#WoZB#^E~15?a_n*m_gkNj0m&@c;#0}EeFpossQD#IZ-lEmxb(<@Rm=M5uvtR6F5P#e^H1{NlX-SZ~9q5y!_C(GnlE>}qdJRrf;Nv;1T~NA zN_xNS8Qs^jzrWn?qUt1$c~)*KUP+Jv?~i84S``?y$z10YeU-n@CSJxJ6k3|P@gyk2 z5%=ltox7cU!ILl@1D?<1|z}qd->pa(Zl-hN|f}ctCo$_ab=Y>#BOn`GA2uCsTU2JSex^^ZdjgI-H`V3a0ztdj5GJ z+%X62G0CjyqG5?xXw$&`1DJ6sC$krY4G#;613-L&ef%-|wd%Y?67GrnV9agm;Bgex zJ?o&MPo5h5ahmme)O{3ls(9Q_OW1NJYKJ#A?J~|y!1foteeBACkV49KWQK=?WhIVV z4VO{FbSPq+qN#bB4y>OF?^skh2m=2q3dVyhE|-hp=R*-E7xmoAb7&U)tG%v#Z-wwqK-}q|M+l_Z)lZ4y7y-mWR7CZmT!PI9M`7e8ZTru{y zM-Q2;m2)f%JGGYcLiwT*x7#0>Jfn3dG=JFAh6!O9P7^4erJ&n#6}n zfQPc>Ys@u6S4o+3iVFD$tq{rtIT5|*8kJ#cy*zoh{^iGPM&Hi`VpdjI4%`URh9AwU zcKt9w|Dnl~ih^?KJZttZP>=Dk7ybf8KEpGr8NcU=ezc`@r6YjT*4OCv_^2SFU&%YT zMhWA>bhU6yotvwMR|^`tU0~xu1i-7)7>5Q zH|EJ6hmcc08Q~;C*AsfCL2CtyUzv9Q}U6HRp#y#cF&-%m`va_Av3=OemoG_Wg}{>Gpct z4E9ZPoNz{iK{qN0F7rlC?P3J;W4LID+pwF%ht|}o2Ic&uLk&)UYb(N^Wjy2qBb-v`{q3Y3(8~=IGH=%58y2$gZ zJ7Dtp)?jqN>#~!|9$1iino$b_)WTkDT8S?u|>g+q$0&lP0%_y_^vdm4iZ@hHTR<6j% z(QLnvl>q5l(cyHkCLPav2%9^bxj;$$d8vFtRw*Wq2OBRz?4{T@*;;~0TV`!?OQ>;I zi}BsR-FxCwxse+OqH?ZjP_d3+akSZXtGC2&TVdyn`e;^H5Y`B&lO5lq;*D*>oWjh+ z=I~f``lQKp(dwwqC`f59e}>r6bAsn8DTbV)@w*eO%sLB`u;PUj!i^!8it09mB+zmJ zmWV&2k?yW1SWF0hw>Y835!^J6jvBbPCmNIsS_N3NA zIL5MB5SHwYB9vA>k--Zat6w@OQb;*d>7vPn$x)6-+HYs^SiB?xgxY}0+9rKzt7XI) zrp)fg`gmcMP{}DARbgjgSChFYn3dGmsRV4gnY2>uc#QR9iiI$&J;9XGXpW>6vkVGG zTrASBT4=*zv-cR;vRq#zS(IhumfF!2g$hyMS=7L1Z6Q#YAr0=gMYKKt*zg^iA`c3V zA~GIrO<`S+0qK~OwJ~;-P(8;$-F1PQVcSkx?SA+o!kEF^D|_Nx5yhJeBc%XT*V}EN zBqhr!Du6*jT2n*>6gjpLHlu^R6p=QNtu{?q#_Wm4>-F+j=}}W%)4(aJWDqtp(n*_J zxGn;?b4pQ4?Ysmfj&0;)u(&NCr+{R=&xzxRF;KlipTX%4ORwJnv1}1*=l#mdvF)oY zKp?~IS2>P3ox?fV1NN`y8r-anS{-4pkmDJAZSi% z01bqe^wU0f4!}vp3w@Sz=V;px!2Sg1rU|m@BpQQ9`oJq$kk=o=U=N(Q z56JP2v_S##(RN-E2gf#2luGJmrWz_mnTw3+$74uj;&+Hj~S z!_pWys1dNmX(y*B;svma#9@B>htwkUz(TLEO{GxJNgt z2BTwYelXRE1+}Tn+pvXuDtsk>52Ul+vtU0y{#>Wa1&Rn_4>W8$kW;+-w9qTh{kKGw z4xpk+vX+NwYZp;BYCJy5Zt+pfbU^FG4tv(Ti|8gG*;h~kL`Id`+_2Ts3nEo9d5Bc| zfP5tIsr=IJ0k5wO=EpddCXd`oOTw-I`1kkWO|w9WyXn_KPjV7V0$|^TBQnW#v>SUw z3ia>eAK#6&*2jkeaaH!h_Ht70rHz;fsQ8XY>|+4aD28moH{OpkMjLRdm2u+GW7g50#8^`0T?&jCoTRHD zb8S0ay7msSJ{!=YKvJ?LP?*0KHehBvCk-(0Sb-<- zRZcdkdUffi1z8j*Z!C641DGR(uAJg4610BsF&LC}i2H4Hx^PnUTxEVM28RK`Qt1Ui zUz3hDU~IW3SYHYv0O{-K*AlEdxo1%iQeGIjK0 ztaIoYB0a)sFmn$uVV>!TwH{(!H_~ze#xNCrXFxC%K^3Q&R4r!uH=j_7@V>*yg2i`V zbAi$E47fw{FmkN-vlGS%s$VN%VpSvIPzcqHa~on+dV-OWnn$B3xCl~-8>~R6&hR4F zKxEX-*lXEyxFIS$u)A=2uY${@*@$qOhZ2&_D+idKWlUDm9O(B)gZs5+-|VXmhFkIw~5zEXMO)}ku2+xk@Gt&@ls!(J;YADsIxZK zJAHhvB`dh4wzigtGpn=Ds-+FBHzKKz??Av16z(_RKgbC~=fdfaF=J#B?R;IOmvc8!GGRGHItkc}q zMs?W?+ro-*)5O+dj8ZJ+OtNh7gzW%v*tY*#`vHId--m`=G%Y9e(~@KjZG>?T-K=ZI zLhq+;!V7Efeg@}p5(9oZjc4@hXlRU%lU)<4Cn_fT7rw4741|YejxI^LR4udUON$nk zRSUn#?ZeZ%n@{#uSS476hjiaC72ra08lgj6xh53~=qIjbp zAo{XD;P;a7nO&_*gp3?RGhx4)f!2Jx)8dUd_y>dnP*1fd$r9ambD6!$6<-50{eOJ0 z<;TziY?|0QP3%kr$p9mQJYx9t5#yd_t*;L2t`73+jQm;RxO`i8eOR|@&32$-W$IPd zXmDoDm~l<;Z2d0wRHOQp_utkq&C9nv@=E(dRje(9aW|L8T5Coqam3La_FQ=Xv#C0v ztl;ayxOOkc(5ZDZVcf4qjvR>5gM$%>-eouIwE2*#{n z;d0IQ--JwpmhZP}O~-5LtPX~2=)~?le$p#BbcYOY{T$!#3FLP}iHH{rECx73IASDg_I7Cl=vcF2@zMFN%XmE8oSs6s|tz^ho z>8Kq;fOY#PJ6faex?f^&YpAl;y2Nz(*J19x<$ji#qg95_g@3H9VOr<*X!7F!C1F-?s#+YpKgbGul+Hw`j&f2>kIkubW<@cOV+R=BUIin z8P>0MvzKENGyNJ&kGncM`#Jk4r^gNVZ_-TxF~Iy5G$M{cq#&R~+75u?`HAluSept| z&kUUkmh62tJm)wLbe1(tekDEi+OcC|K4gtp16V9CHtJ5PhR<7Cvft!A)d>s*jV>4T z5};=;cRsHEc1QhTs7spLhmUrL)fd_5d3QN1zKr@3+`sJrh)aYXoKo|tLac^y$LBxJ zu|L0P4V#*i44?h|Y53r+ZT%s`Z`H$Rk7xzVpo%6 zBgdXU@yMVt9u*BtU-rn5+jI2F;`+;hwUysjS3lka*)ChSvN#37YT2RDuKAPH<0F4#ny&e-X-BTy!nQG!JPc zq{tfTEWFUFDe~_1D(UsD8U86W@#DDqoHBx-5f^gZ1k6DRX2Q4sW?j{E*tAHa@wfRZ zOmp$39U7lV&B~z*6{FhIkpnC13*kl10u5Wb`G#1ok}G7o9dSw0%{1f>p#;MYwaLkV zu_xiP&)91<12D>p>glbb;L2K!eoFm(v#DkIDY4ZhzQtNflzMdJ7=uL)o$h6`9M>ErUykQ5WU8s( z$29oaMTpZ8L?69av zN_UB11tSC+N&dn*sWRGlZ=Z#x~tz_FYh@jo^cpk`EEmJ23;AtjF5CPt|-`YxOdVJvVlHuF%MV13|ABh~^=~ z%4^?Gw-e6h+2i7Ki*|mo%XOqC1 zE`d{zvqTW;@OBK6-4RQPj-y1^%*6ZZj91RRW9x&}13x`A_*8Jm4(DmG50A8_dxHnU zUQX>H7C6wm_dI-z)!-sJJ3B8ZIWFbDoUUH!P5cvFZ{{d*ofEOzud4?&#R6t9Ecp;IuL_U8GN$r80i0LdB>o^>3*`T;o<1>XmAi1zA$L&-M8$Ym7bL~ z{pk81CB!Q}K0d@3ult5UIVcK8eRXD&<|n$@PGB2#43pIohJR^?oBR_HZ6p+o4A{Qv zN$*`*vuV%muDjL@Ob=XZE(pBRw>&!us>f~;a$MV{4fJeQ~opCk9hQ7BRbV$<-SsIZ5@M)n;)3MB%~zX! zwFlQ%reTd*t!7Q4V&7cFNy)|epM6(*ge^Id>%VNpAS7wnc6p6>V`Ee2*LSAbZwKsF z-Wq}roBVK=JgI$Y;y!UKRX+UN?eHa*y!O~u_Tl%%R^1Db%0X{6Bx%rH_yG8SA5GYKT>sYgcT zkJ6f(9dlXXJu`7}V?)2qU$SQ!--2~PcuVie?Zs)qG|EW2O(MS2L|8U z{w_yzFk*N*=&e`Tqsq&(P#6fZ09OQdY;|>&c;AsYX4bfO#Wkz<L@7`a?R+OoN9$eVf;uVu7vz;WuK>`*yQ09pBAW?rMDY^yDT4gMxgo)H>$? z>Y?N?vu#f-#Y$BUY||y{qcdGKAV+G(9lI(&1vl1wf1>MOA}_>=U{H4-{X_g?=4kNr z0n^~wU0Lhjhcm@+p*g>uvIphd3#J!f4%ZdBP4za<9cLE|gsi3P(EOVH2pFp0ca{fH zIS3TiW5`1)O?d6QDf_cJ_hs|=ilfFIjP8l~8`J$^Y!OSlfQx@ce6rG1n1x*8QSTnc z7#eNGZAeDuralhjEE?8&>TA9UD+-&gKeTT8;4#6}N|C+f^wJ41OqTuqe$8qs-RHyX zY%9BozS`s8zu2%%M>E}(ho74le)$o-_?o30Z*@h!+9%>19|m;Ixp$n zp5trNcaIQVE<^m7;SQ|xfCqpA?8PYO#D%Xsmt5~W=TJO<1odtv6%ZaLeqC7k0Dkf& zn3N5hO`Klne_>h&QLJzHO3nkH^%~e?)5R8p=X+vihkt@Xy87`-Ly3P7W+Gx!0H5v)HSlqiprTJ9OxH?wMy?a@#5OQ@~F=04p^xY#ZFk(A& z7C+tQW@8}EZL3m<9a;!yFJ!L0IlXteJ+N}vUcS-KZu^dO-^ED|gh#*9Z&)t;F*jnw zDpVJrVbb|ueA9~W4;8qxLwB|4C3`8$_ZTLY@^vnYJyf&$TKD6(c>b`jzLI`mIkW== z@zszUt#U!`H_vpUqkna8R?$&91Wzy?? z17V97A*@^weeR<@@d3C1S`SwxHh&4GnID3lP2ipv`soXq3#;{w5LC8mgYWRG9*Z7< zG`o~AdU?##2w0hT7xqcLyL$ANN5MYOGYD7u0>f8+v3*{BbA_My?e)@RudkM3b8#bI zApm$gSNYuTxMHk~Nr&1PuoRSF{vjF;W-Wbx>I>mzR&Z^Cw&?-PtVY5RQFlCiZDOFD z{pEq~v6_Gh>)Y7RYs6$b|F84KZZ0;w`e1uGYweE|)NB0kf4AhDSTULz z${#aat`IA;w{!>Ct4nZqCba0F`T9KxFTdSV=n3Rhip|KXwK)qHU$|ny#elWtG1xc0 z90t0Nm*m>ld2YI6%{u8-%69fA{{FDJ-u@di9W{&fTFFaGOKT8Uf{|rk%&Hhkh*J(} zoN7MAevEp|2aa||yMX_oB4272s=`7ndx+8D zu$XFDIaG6notG6d)6Ok%z3l`9$%*W>0rnaxG3?Lb=MQi69B70K8E`xEYVAxTMp>DN z#xOU!S(c7V5fGG3O5)6}ciTHI{;|@(u}MeQmA&^fY^Y-|4=1waW#Ad(J;Hc}{LE^x`i+z_svTiu2F2%bPVpV~cEpJZNgshr zjKh&ET22l<&Gqm$WH%&8NeR5FHmPV5BgQH~v5~5f;lNacBr@qR5JFS-I|17wj6b4J zuC_@4JRo(VGTb9ta3{uUo>zOLB9r|9j!Hh^orrfU+u0>wS8$sOS$@4hbm_^a!Th)F zp5$nYs!^mXr%D*?*=fYc&x$TRG?T9b8yKN?H7uHq&Ht%PxaaVDv?7oJ;ig`s zk*%?#<zDl1fAKwczr(p3{Onat0)ZQKp1K1XoUf|+6feQl7U<+S{=(xCP9?} zl6P_-v_*J8u^DoNxyj_sOj+1&FO(ayw*mo%Aqg9#cgzkBqh<(&4oE@kHKvzwN~xjQ zYz_e&jOF1a<7Xhk7O0IRK%IqfM0Hy>Bzd7w0#$%GC=^UV0^I#BAaWm0gBD6!5XcR~ z3v0-iG44Tf_Ay{s0>>f*(Vb5p)FbNekBS`z7--l+U6Um#~jzdMsWh3_t zgY7WjgaMSWP(qQD(1bA*GSJEjRIkd>3~DMM?**lZyRR4`$oa^Pf=&ZE2DTvqs;Qfc zG=Us3@TD3^loeVoIy!weGLYTRPsg@tp%z~a5r!fZ3B9$ z_@g;ur8-Qu5*Nlv4oWO~-7(foj8G8?zfrkEocL9@p*M*(O%MsB!7{;GU$hN)*v1P7 zVD^xkID4Sxb_>mFcYS)V=D=@JoBSDkGf^sGFZt%Q=mZGwb26p23Gs&N(b${sNv2Z++k3h+|x=*?0 z?6OxQ@hv@bJ^5Lo(0^|?O4+FYAlbHcG|&H2+mV+WN{QWgphVaB-G8?u#X*IOoFP!l zQjzvL4#Yu*RZ_9l8{@bn9xJ2z3p1VtgZbiF`8NxGEJOSQ7Ltei z9)^}4*jUAAr`6FahFN;{m!0DM4++LqK>0o=F9>^nh#kylf z=v(q{@(y}ViQr^J=g;I+Ar-$)Wp{qB^3j_7!|l299VUo8Qj#l91GyOec%seo+?!a+ z^6d*93n&lo_f_y%sQipO*wkTZTu(i5-t%x;>OMTrMJtr(_QK2N_~7My0MB#QxS{x3 z-Qh?a%Lw|Ko@8pg-~7}kywChEigw3mG>NU3cvy|c+_o?BYCa|-nhIT4Pcn2C@~?;q zS&gjhP!mLJ4v5tUhJ49?Oh<3DOk40PqWL)5-oZlPS-l3t^YNt;AAGk5!Ylc zLC-iYTQxq97unb=*Fi{?Iv&LOEInpHx2&V^zGL2EqOyFRp48gHndT0iBaGl>Pp6E( z&ST_gkz(x)A%{vNj$q{U>K?jQKs3c#Kv~F&X5G8PNAgMDroQGuu)_%HTY>vwsyFxZ z#38*veOJzHVoqSUkRGqjOKEu+Lc&%|*KY}9R0T0#&WW-P<$~3U{Ox_y9~CyRPs3nS zEgHXD2*<1c9PoL*8&9;iFmg7F?1vgx%I>AN_}|@{ zT`?nOIbp#azz?(pw`;!UE>6_U4*R=BYfvxd9YJT&4dBsXw$ck~wLdaO|G4wZ;Q9UWYUlR6~c53IfI4v&-4RQo({^OKr+#c}I z@B>}hE-wGkJ_Q2e?zm(pFJ!!;SR?ta#^nNdX!!YeyLNrX`%{bO%lM)9P5r~h(*+R- zvH%z~dehPm(74kf!B6rz5;-r`VQG%m4N-DH^N~uV+cNC`{Nx z$07rIJy@bE`HrpML2b|DM}@n7>2}=neImV@vIAO!wqjjaKS3HAN!#gJmw&|JMCwrd z9(9op2d@4@0Sl0N0 zVloO(p*@Y@Y$>AlL5jcn!@eZH>w|d_@2V(1&{0G#jmCNn@I&+7L+d!Jk{@dV&;-=8 z9U3Lie)pRK{EBQ|L!0Ezu!o_zi(o0SUeJpKrs8ztF3c^g&zt;PSD}Y2;>yP) zi_L?vpmYp?#WFc@3#@u