@agent-relay/dashboard 2.0.58 → 2.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/out/404.html +1 -1
  2. package/out/_next/static/chunks/695-9905bff526bf3c31.js +1 -0
  3. package/out/_next/static/chunks/{873-604131545363afd2.js → 873-609efa769bceebeb.js} +1 -1
  4. package/out/_next/static/chunks/app/blog/let-them-cook-multi-agent-orchestration/page-a58308f43557b908.js +1 -0
  5. package/out/_next/static/chunks/{main-be50531dde531aa3.js → main-acb1b24265295d6a.js} +1 -1
  6. package/out/_next/static/css/{7519fcf229687c83.css → 629d21db423c78a2.css} +1 -1
  7. package/out/about.html +2 -2
  8. package/out/about.txt +2 -2
  9. package/out/app/onboarding.html +1 -1
  10. package/out/app/onboarding.txt +1 -1
  11. package/out/app.html +1 -1
  12. package/out/app.txt +2 -2
  13. package/out/blog/agent-review-workflow.png +0 -0
  14. package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +2 -2
  15. package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +1 -1
  16. package/out/blog/let-them-cook-multi-agent-orchestration-twitter-5x2.png +0 -0
  17. package/out/blog/let-them-cook-multi-agent-orchestration-twitter.png +0 -0
  18. package/out/blog/let-them-cook-multi-agent-orchestration.html +46 -0
  19. package/out/blog/let-them-cook-multi-agent-orchestration.png +0 -0
  20. package/out/blog/let-them-cook-multi-agent-orchestration.svg +155 -0
  21. package/out/blog/let-them-cook-multi-agent-orchestration.txt +6 -0
  22. package/out/blog.html +3 -3
  23. package/out/blog.txt +1 -1
  24. package/out/careers.html +3 -3
  25. package/out/careers.txt +2 -2
  26. package/out/changelog.html +2 -2
  27. package/out/changelog.txt +2 -2
  28. package/out/cloud/link.html +1 -1
  29. package/out/cloud/link.txt +1 -1
  30. package/out/complete-profile.html +1 -1
  31. package/out/complete-profile.txt +1 -1
  32. package/out/connect-repos.html +1 -1
  33. package/out/connect-repos.txt +1 -1
  34. package/out/contact.html +2 -2
  35. package/out/contact.txt +2 -2
  36. package/out/docs.html +2 -2
  37. package/out/docs.txt +2 -2
  38. package/out/history.html +1 -1
  39. package/out/history.txt +1 -1
  40. package/out/index.html +1 -1
  41. package/out/index.txt +2 -2
  42. package/out/login.html +1 -1
  43. package/out/login.txt +1 -1
  44. package/out/metrics.html +1 -1
  45. package/out/metrics.txt +1 -1
  46. package/out/pricing.html +2 -2
  47. package/out/pricing.txt +2 -2
  48. package/out/privacy.html +2 -2
  49. package/out/privacy.txt +2 -2
  50. package/out/providers/setup/claude.html +1 -1
  51. package/out/providers/setup/claude.txt +1 -1
  52. package/out/providers/setup/codex.html +1 -1
  53. package/out/providers/setup/codex.txt +1 -1
  54. package/out/providers/setup/cursor.html +1 -1
  55. package/out/providers/setup/cursor.txt +1 -1
  56. package/out/providers.html +1 -1
  57. package/out/providers.txt +1 -1
  58. package/out/security.html +2 -2
  59. package/out/security.txt +2 -2
  60. package/out/signup.html +1 -1
  61. package/out/signup.txt +1 -1
  62. package/out/terms.html +2 -2
  63. package/out/terms.txt +2 -2
  64. package/package.json +1 -1
  65. package/out/_next/static/chunks/695-e794284f76ffbce7.js +0 -1
  66. /package/out/_next/static/{NUzHPcppjsjp8vNZEuf2A → Zy1iEBTs-RzAM6cw9InUm}/_buildManifest.js +0 -0
  67. /package/out/_next/static/{NUzHPcppjsjp8vNZEuf2A → Zy1iEBTs-RzAM6cw9InUm}/_ssgManifest.js +0 -0
@@ -0,0 +1,46 @@
1
+ <!DOCTYPE html><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="image" href="/blog/let-them-cook-multi-agent-orchestration.svg"/><link rel="preload" as="image" href="/blog/agent-review-workflow.png"/><link rel="stylesheet" href="/_next/static/css/ad96af0f7a47b705.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/629d21db423c78a2.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-dd93b81e2659669c.js"/><script src="/_next/static/chunks/1dd3208c-40ab0fc0f60392b8.js" async=""></script><script src="/_next/static/chunks/528-d375bc8b46912d2c.js" async=""></script><script src="/_next/static/chunks/main-app-7f73a939a312a228.js" async=""></script><script src="/_next/static/chunks/app/blog/let-them-cook-multi-agent-orchestration/page-a58308f43557b908.js" async=""></script><title>Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration | Agent Relay Blog</title><meta name="description" content="Multi-agent orchestration is a step change in how tasks get done. After 6 weeks of building with agent swarms, here&#x27;s what works, what breaks, and why the planning phase becomes everything."/><meta property="og:title" content="Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration"/><meta property="og:description" content="What I learned watching AI agents coordinate, communicate, and occasionally fall apart"/><meta property="og:url" content="https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration"/><meta property="og:site_name" content="Agent Relay"/><meta property="og:image" content="https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration.svg"/><meta property="og:image:width" content="1200"/><meta property="og:image:height" content="630"/><meta property="og:image:alt" content="Let Them Cook: Multi-Agent Orchestration - Agent Relay"/><meta property="og:type" content="article"/><meta property="article:published_time" content="2026-02-04"/><meta property="article:author" content="Khaliq Gant"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:title" content="Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration"/><meta name="twitter:description" content="What I learned watching AI agents coordinate, communicate, and occasionally fall apart"/><meta name="twitter:image" content="https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration.svg"/><link rel="apple-touch-icon" href="/apple-icon.png?9e7a840704165ca6" type="image/png" sizes="256x256"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div class="landing-page static-page"><div class="landing-bg"><div class="grid-bg"><div class="grid-lines"></div><div class="grid-glow"></div></div><div class="glow-orbs"><div class="orb orb-1"></div><div class="orb orb-2"></div><div class="orb orb-3"></div></div></div><nav class="nav scrolled"><div class="nav-inner"><a href="/" class="nav-logo"><svg width="28" height="28" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg" class="
2
+ transition-all duration-300
3
+ drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]
4
+
5
+ " aria-label="Agent Relay Logo" role="img"><path d="M30 80 L 50 20 L 70 80" stroke="#00d9ff" stroke-width="5" stroke-linejoin="round" stroke-linecap="round" fill="none"></path><line x1="40" y1="50" x2="60" y2="50" stroke="#00d9ff" stroke-width="5" stroke-linecap="round"></line><path d="M50 20 L 50 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" opacity="0.7"></path><path d="M50 20 C 80 20 80 50 50 50 L 80 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.7"></path></svg><span class="logo-text">Agent Relay</span></a><div class="nav-links"><a href="/#demo">Demo</a><a href="/#features">Features</a><a href="/pricing">Pricing</a><a href="https://docs.agent-relay.com/" class="nav-docs">Docs</a></div><div class="nav-actions"><a href="/login" class="btn-ghost">Sign In</a><a href="/signup" class="btn-primary">Get Started</a></div></div></nav><main><section class="static-hero"><div class="static-hero-content"><h1><a href="/blog" style="color:inherit;text-decoration:none">Blog</a></h1><p class="static-subtitle">News, tutorials, and insights from the Agent Relay team.</p></div></section><section class="static-content"><div class="content-container"><article class="blog-post"><img src="/blog/let-them-cook-multi-agent-orchestration.svg" alt="Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration" style="width:100%;height:auto;border-radius:12px;margin-bottom:32px"/><div class="blog-post-header"><div class="blog-meta"><span class="blog-category">Engineering</span><span>February 4, 2026</span><span class="blog-author">by <a href="https://x.com/khaliqgant" target="_blank" rel="noopener noreferrer">Khaliq Gant</a></span></div><h2 class="blog-post-title">Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration</h2><p class="blog-post-subtitle">What I learned watching AI agents coordinate, communicate, and occasionally fall apart</p></div><div class="blog-post-content"><p>I've been building <a href="https://github.com/AgentWorkforce/relay" target="_blank" rel="noopener noreferrer">Agent Relay</a> using Agent Relay. Agents coordinating to build the tool that lets them coordinate. It sounds recursive because it is. I took some time to jot down some thoughts about multi-agent orchestration from the past few weeks where I've spoken to agents more than I've spoken to my wife 😳.</p><p>For the past six weeks, I've been deep in this world. Agent Relay is an open-source communication layer allowing any CLI tool (Claude, Cursor, OpenCode, Gemini) to communicate efficiently and seamlessly. And it's rumored that Claude Code is coming out with first-party support for agent swarms:</p><div class="tweet-embed" style="margin:24px 0;display:flex;justify-content:center"><blockquote class="twitter-tweet" data-theme="dark"><a href="https://twitter.com/nummanali/status/2014698883507462387">View tweet</a></blockquote></div><p>Am I worried about this? If I'm being completely honest, yes, a little bit. But my main feeling is that it's great to push multi-agent orchestration into the forefront of developer minds so the true power can be experienced and more best practices form around it.</p><h2>Key Takeaways</h2><ul><li><strong>2-5 worker agents per Lead</strong> is the sweet spot</li></ul><ul><li><strong>Claude for coordination, Codex for deep work</strong> (match the CLI to the role)</li></ul><ul><li><strong>Planning is everything</strong> (agents cut corners on vague specs)</li></ul><ul><li><strong>Shadow agents and reviewers</strong> catch lazy work</li></ul><ul><li><strong>Store trajectories</strong> so future agents have context</li></ul><p>---</p><h2>Part 1: The Promise</h2><p>Multi-agent orchestration is a step change in how tasks get done. It puts agents front and center while the human takes a step back and just lets them cook. That doesn't mean the human will be completely removed. There are still bumps in the road to truly autonomous agent work, and the planning phase becomes one of the most crucial steps.</p><h3>What Multi-Agent Unlocks</h3><p>Having agents who can communicate with each other and coordinate on tasks is a huge unlock. Assigning <a href="https://github.com/AgentWorkforce/relay/tree/main/.claude/agents" target="_blank" rel="noopener noreferrer">agent profiles</a> similar to how human teams would organize has been a paradigm I have found success with. For instance:</p><ul><li><strong>Lead</strong> – coordinates the team and breaks down tasks</li></ul><ul><li><strong>Backend</strong> – implements server-side logic</li></ul><ul><li><strong>BackendReviewer</strong> – reviews backend code for quality</li></ul><ul><li><strong>FrontendReviewer</strong> – reviews frontend code for quality</li></ul><ul><li><strong>TypeChecker</strong> – ensures type safety across the codebase</li></ul><ul><li><strong>TestWriter</strong> – writes and maintains tests</li></ul><ul><li><strong>DocumentationExpert</strong> – handles docs and comments</li></ul><p>Each agent assumes its role, can read the logs of other agents, and can message others to check their work, sanity-check their decisions, and hand off tasks in a coordinated manner.</p><h3>The Speed Improvement</h3><p>The method that has worked well for me is creating a detailed spec upfront and then spawning a Lead agent. I give it the spec and tell it to assemble a team as it sees fit. The Lead then spawns agents accordingly. Because Agent Relay is CLI-agnostic, I make sure to mix Codex, Claude, OpenCode, Gemini, and Droid agents, assigning different models based on the role. A fast model like Haiku or Conductor for Lead roles, and for deeper technical tasks, Opus or GPT-5 Codex high.</p><p>Using this workflow, I've seen that not only does code quality increase, but the speed at which agents can pump out complex features is at least a <strong>4-5X improvement</strong>.</p><p>I have been using Agent Relay to build itself on the cloud environment at <a href="https://agent-relay.com" target="_blank" rel="noopener noreferrer">agent-relay.com</a> and the pace of delivery has been mind-blowing.</p><p>It hasn't been all good though...</p><p>---</p><h2>Part 2: The Problems</h2><h3>Agents Are Sometimes Lazy</h3><p>I've had instances where an agent swarm takes on a complicated feature and then the Lead excitedly declares everything done. On one build, the Lead proudly reported "All 12 endpoints implemented!" When I tested it, only 8 actually returned data. The rest were stubbed out with TODOs. This happened occasionally with single-agent sessions, but imagine it compounding across 5, 6, or 10 agents...</p><h3>Agents Get Overwhelmed and Die</h3><p>Having a Lead agent creates a single point of failure. If the swarm is large and chatty, the Lead receives a flood of messages from other agents plus queries from the human asking about status or redirecting work. This can overwhelm the Lead, causing it to enter an endless loop and eventually die or become completely unresponsive.</p><p>---</p><h2>Part 3: The Playbook</h2><p>Here's what I've learned about making multi-agent orchestration actually work.</p><h3>Team Structure</h3><p>Team structure is critical. There's a magic ratio of Lead-to-worker agents that I haven't exactly figured out yet (it varies depending on roles) but I've had success with <strong>2-5 worker agents per Lead</strong>. A single Lead managing 10 agents usually becomes problematic.</p><h3>Communication Patterns by CLI</h3><p>Not all CLI agents communicate the same way, and taking this into account is beneficial when working with swarms.</p><p><strong>Codex</strong> is great at heads-down work but doesn't communicate well. Once it's working, it's hard to interrupt. I've had Leads waiting 15+ minutes for a response, assuming the agent died, when Codex was just deep in implementation.</p><p><strong>Claude</strong> communicates excellently and can be interrupted mid-task without issue. It naturally provides status updates and asks clarifying questions.</p><p><strong>Cursor</strong> (particularly Composer) is very fast and communicates well, making it good for rapid iteration.</p><p><strong>My staffing rule of thumb:</strong> Put Claude agents in Lead and Reviewer roles where communication is key. Put Codex agents on isolated implementation tasks where heads-down focus is more valuable than status updates. Use Cursor when you need speed and tight feedback loops.</p><p>Agent Relay allows users to define a <code>teams.json</code> (<a href="https://docs.agent-relay.com/reference/configuration#project-configuration-files" target="_blank" rel="noopener noreferrer">docs</a>) that auto-spawns agents on start, so these staffing decisions can be codified and stay consistent across sessions:</p><pre class="code-block" data-lang="json"><code>{
6
+ &quot;team&quot;: &quot;my-team&quot;,
7
+ &quot;autoSpawn&quot;: true,
8
+ &quot;agents&quot;: [
9
+ {
10
+ &quot;name&quot;: &quot;Coordinator&quot;,
11
+ &quot;cli&quot;: &quot;claude&quot;,
12
+ &quot;role&quot;: &quot;coordinator&quot;,
13
+ &quot;task&quot;: &quot;Coordinate the team...&quot;
14
+ },
15
+ {
16
+ &quot;name&quot;: &quot;Developer&quot;,
17
+ &quot;cli&quot;: &quot;codex&quot;,
18
+ &quot;task&quot;: &quot;Implement features...&quot;
19
+ }
20
+ ]
21
+ }</code></pre><h3>Catching Lazy Work</h3><p>Agent Relay has a notion of a <a href="https://docs.agent-relay.com/features/shadows#shadow-agents" target="_blank" rel="noopener noreferrer"><strong>shadow agent</strong></a> that helps quite a bit with this problem. Reviewer agents also typically catch shoddy work.</p><figure class="blog-image" style="margin:32px 0"><img src="/blog/agent-review-workflow.png" alt="Agent Relay dashboard showing Developer reporting completion to Coordinator, who then routes the work to ReviewerA for review" style="width:100%;border-radius:8px"/><figcaption style="text-align:center;color:var(--text-secondary);margin-top:12px;font-size:14px;font-style:italic">Agent Relay dashboard showing Developer reporting completion to Coordinator, who then routes the work to ReviewerA for review</figcaption></figure><p>Additionally, layering in one of the many AI code review tools has been effective at catching minor issues.</p><h3>Continuity and Hooks</h3><p>Agent Relay has a <a href="https://docs.agent-relay.com/guides/session-continuity#session-continuity" target="_blank" rel="noopener noreferrer"><code>continuity</code></a> concept, largely borrowed from the <a href="https://github.com/parcadei/Continuous-Claude-v3" target="_blank" rel="noopener noreferrer">Continuous Claude</a> package by <a href="https://x.com/parcadei" target="_blank" rel="noopener noreferrer">@parcadei</a>. This enables ephemeral agents that save their context periodically, get released, then spawn again and continue seamlessly by reading their saved state.</p><p>If you want more granular control or access to agent lifecycle events, Agent Relay has an extensive <a href="https://docs.agent-relay.com/guides/hooks" target="_blank" rel="noopener noreferrer">hooks system</a> with 7 different events:</p><div style="overflow-x:auto;margin:24px 0"><table style="width:100%;border-collapse:collapse;font-size:15px"><thead><tr><th style="padding:12px 16px;text-align:left;border-bottom:2px solid var(--border-subtle);font-weight:600">Hook</th><th style="padding:12px 16px;text-align:left;border-bottom:2px solid var(--border-subtle);font-weight:600">Description</th></tr></thead><tbody><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onSessionStart</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Agent starts</td></tr><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onSessionEnd</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Agent stops</td></tr><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onOutput</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Agent produces output</td></tr><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onMessageReceived</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Receives relay message</td></tr><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onMessageSent</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Sends relay message</td></tr><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onIdle</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Agent inactive</td></tr><tr><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)"><code>onError</code></td><td style="padding:10px 16px;border-bottom:1px solid var(--border-subtle)">Error occurs</td></tr></tbody></table></div><h3>Trajectories: Preserving Context</h3><p>One unexpected unlock has been having agents store <strong>trajectories</strong>, a train of thought stored in logical chapters for a completed task. Inspired by <a href="https://x.com/gergelyorosz/status/2002160432841097239" target="_blank" rel="noopener noreferrer">this thread</a> from <a href="https://x.com/GergelyOrosz" target="_blank" rel="noopener noreferrer">@GergelyOrosz</a>.</p><pre class="code-block" data-lang="json"><code>{
22
+ &quot;id&quot;: &quot;traj_itn5hyej5mi6&quot;,
23
+ &quot;task&quot;: { &quot;title&quot;: &quot;Fix module resolution issues&quot; },
24
+ &quot;status&quot;: &quot;completed&quot;,
25
+ &quot;chapters&quot;: [
26
+ {
27
+ &quot;title&quot;: &quot;Work&quot;,
28
+ &quot;events&quot;: [
29
+ {
30
+ &quot;type&quot;: &quot;decision&quot;,
31
+ &quot;content&quot;: &quot;Thread shadowMode through protocol layers&quot;,
32
+ &quot;raw&quot;: { &quot;reasoning&quot;: &quot;Devin review found fields were silently dropped...&quot; },
33
+ &quot;significance&quot;: &quot;high&quot;
34
+ }
35
+ ]
36
+ }
37
+ ],
38
+ &quot;retrospective&quot;: {
39
+ &quot;summary&quot;: &quot;Fixed issue by threading shadow options through all layers&quot;,
40
+ &quot;confidence&quot;: 0.9
41
+ }
42
+ }</code></pre><p>The <a href="https://github.com/AgentWorkforce/trajectories/" target="_blank" rel="noopener noreferrer">AgentWorkforce/trajectories</a> repo provides a CLI tool that agents can easily understand. It becomes invaluable when an agent needs to revisit a previously-worked feature or investigate a bug. By finding the relevant trajectory, the agent gains instant context. These trajectories are also useful to humans reviewing the codebase.</p><h3>The Human&#x27;s New Role</h3><p>Coordinating with multiple agents and seeing output fly in at rapid speed is exhilarating. Being able to remove myself as the bottleneck is a huge benefit. This necessitates that the <strong>planning phase is carefully and meticulously done</strong> to ensure agents have well-defined tasks with edge cases thought out.</p><p>It also means the <strong>review phase is paramount</strong>. Having agents self-review and cross-review is an effective strategy.</p><p>---</p><h2>Try It Yourself</h2><p>Want to experiment with multi-agent orchestration? You can <a href="https://agent-relay.com" target="_blank" rel="noopener noreferrer">get started with Agent Relay Cloud</a> or set it up locally in seconds.</p><p>Just tell your CLI agent to run:</p><pre class="code-block" data-lang="bash"><code>curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md</code></pre><p>The agent will read the setup guide and configure everything, then let it cook.</p><p>Check out the <a href="https://docs.agent-relay.com" target="_blank" rel="noopener noreferrer">docs</a> for more details, or hit me on X with any thoughts or questions. I'm all for a discussion: <a href="https://x.com/khaliqgant" target="_blank" rel="noopener noreferrer">@khaliqgant</a></p><h2>References</h2><ul><li><a href="https://cursor.com/blog/scaling-agents" target="_blank" rel="noopener noreferrer">Cursor: Scaling Agents</a> – An interesting perspective on how Cursor is thinking about agent scaling and the challenges involved</li></ul><ul><li><a href="https://x.com/pbteja1998/status/2017662163540971756" target="_blank" rel="noopener noreferrer">@pbteja1998 on multi-agent swarms with OpenClaw</a> – Exciting developments in how people are experimenting with multi-agent orchestration</li></ul></div></article><hr style="border:none;border-top:1px solid var(--border-subtle);margin:48px 0"/><h2>Stay Updated</h2><p>Follow us on <a href="https://twitter.com/agent_relay" target="_blank" rel="noopener noreferrer">Twitter</a> for the latest updates and more content.</p></div></section></main><footer class="footer"><div class="footer-inner"><div class="footer-brand"><a href="/" class="footer-logo"><svg width="24" height="24" viewBox="0 0 100 100" fill="none" xmlns="http://www.w3.org/2000/svg" class="
43
+ transition-all duration-300
44
+ drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]
45
+
46
+ " aria-label="Agent Relay Logo" role="img"><path d="M30 80 L 50 20 L 70 80" stroke="#00d9ff" stroke-width="5" stroke-linejoin="round" stroke-linecap="round" fill="none"></path><line x1="40" y1="50" x2="60" y2="50" stroke="#00d9ff" stroke-width="5" stroke-linecap="round"></line><path d="M50 20 L 50 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" opacity="0.7"></path><path d="M50 20 C 80 20 80 50 50 50 L 80 80" stroke="#00ffc8" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.7"></path></svg><span class="logo-text">Agent Relay</span></a><p>Orchestrate AI agents like a symphony.</p></div><div class="footer-links"><div class="footer-column"><h4>Product</h4><a href="/#features">Features</a><a href="/pricing">Pricing</a><a href="https://docs.agent-relay.com/">Documentation</a><a href="/changelog">Changelog</a></div><div class="footer-column"><h4>Company</h4><a href="/about">About</a><a href="/blog">Blog</a><a href="/careers">Careers</a><a href="/contact">Contact</a></div><div class="footer-column"><h4>Legal</h4><a href="/privacy">Privacy</a><a href="/terms">Terms</a><a href="/security">Security</a></div></div></div><div class="footer-bottom"><p>© 2026 Agent Relay. All rights reserved.</p><div class="social-links"><a href="https://github.com/AgentWorkforce/relay" aria-label="GitHub"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"></path></svg></a><a href="https://twitter.com/agent_relay" aria-label="Twitter"><svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"></path></svg></a></div></div></footer></div><script src="/_next/static/chunks/webpack-dd93b81e2659669c.js" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0]);self.__next_f.push([2,null])</script><script>self.__next_f.push([1,"1:HL[\"/_next/static/css/ad96af0f7a47b705.css\",\"style\"]\n2:HL[\"/_next/static/css/629d21db423c78a2.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"3:I[1815,[],\"\"]\n5:I[2147,[\"294\",\"static/chunks/app/blog/let-them-cook-multi-agent-orchestration/page-a58308f43557b908.js\"],\"\"]\n6:I[5092,[],\"\"]\n7:I[2023,[],\"\"]\n9:I[1584,[],\"\"]\na:[]\n"])</script><script>self.__next_f.push([1,"0:[\"$\",\"$L3\",null,{\"buildId\":\"Zy1iEBTs-RzAM6cw9InUm\",\"assetPrefix\":\"\",\"urlParts\":[\"\",\"blog\",\"let-them-cook-multi-agent-orchestration\"],\"initialTree\":[\"\",{\"children\":[\"blog\",{\"children\":[\"let-them-cook-multi-agent-orchestration\",{\"children\":[\"__PAGE__\",{}]}]}]},\"$undefined\",\"$undefined\",true],\"initialSeedData\":[\"\",{\"children\":[\"blog\",{\"children\":[\"let-them-cook-multi-agent-orchestration\",{\"children\":[\"__PAGE__\",{},[[\"$L4\",[\"$\",\"div\",null,{\"className\":\"landing-page static-page\",\"children\":[[\"$\",\"div\",null,{\"className\":\"landing-bg\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid-bg\",\"children\":[[\"$\",\"div\",null,{\"className\":\"grid-lines\"}],[\"$\",\"div\",null,{\"className\":\"grid-glow\"}]]}],[\"$\",\"div\",null,{\"className\":\"glow-orbs\",\"children\":[[\"$\",\"div\",null,{\"className\":\"orb orb-1\"}],[\"$\",\"div\",null,{\"className\":\"orb orb-2\"}],[\"$\",\"div\",null,{\"className\":\"orb orb-3\"}]]}]]}],[\"$\",\"nav\",null,{\"className\":\"nav scrolled\",\"children\":[\"$\",\"div\",null,{\"className\":\"nav-inner\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"className\":\"nav-logo\",\"children\":[[\"$\",\"svg\",null,{\"width\":28,\"height\":28,\"viewBox\":\"0 0 100 100\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"\\n transition-all duration-300\\n drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]\\n \\n \",\"aria-label\":\"Agent Relay Logo\",\"role\":\"img\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M30 80 L 50 20 L 70 80\",\"stroke\":\"#00d9ff\",\"strokeWidth\":\"5\",\"strokeLinejoin\":\"round\",\"strokeLinecap\":\"round\",\"fill\":\"none\"}],[\"$\",\"line\",null,{\"x1\":\"40\",\"y1\":\"50\",\"x2\":\"60\",\"y2\":\"50\",\"stroke\":\"#00d9ff\",\"strokeWidth\":\"5\",\"strokeLinecap\":\"round\"}],[\"$\",\"path\",null,{\"d\":\"M50 20 L 50 80\",\"stroke\":\"#00ffc8\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"opacity\":\"0.7\"}],[\"$\",\"path\",null,{\"d\":\"M50 20 C 80 20 80 50 50 50 L 80 80\",\"stroke\":\"#00ffc8\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"fill\":\"none\",\"opacity\":\"0.7\"}]]}],[\"$\",\"span\",null,{\"className\":\"logo-text\",\"children\":\"Agent Relay\"}]]}],[\"$\",\"div\",null,{\"className\":\"nav-links\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/#demo\",\"children\":\"Demo\"}],[\"$\",\"a\",null,{\"href\":\"/#features\",\"children\":\"Features\"}],[\"$\",\"a\",null,{\"href\":\"/pricing\",\"children\":\"Pricing\"}],[\"$\",\"a\",null,{\"href\":\"https://docs.agent-relay.com/\",\"className\":\"nav-docs\",\"children\":\"Docs\"}]]}],[\"$\",\"div\",null,{\"className\":\"nav-actions\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/login\",\"className\":\"btn-ghost\",\"children\":\"Sign In\"}],[\"$\",\"a\",null,{\"href\":\"/signup\",\"className\":\"btn-primary\",\"children\":\"Get Started\"}]]}]]}]}],[\"$\",\"main\",null,{\"children\":[[\"$\",\"section\",null,{\"className\":\"static-hero\",\"children\":[\"$\",\"div\",null,{\"className\":\"static-hero-content\",\"children\":[[\"$\",\"h1\",null,{\"children\":[\"$\",\"a\",null,{\"href\":\"/blog\",\"style\":{\"color\":\"inherit\",\"textDecoration\":\"none\"},\"children\":\"Blog\"}]}],[\"$\",\"p\",null,{\"className\":\"static-subtitle\",\"children\":\"News, tutorials, and insights from the Agent Relay team.\"}],\"$undefined\"]}]}],[\"$\",\"section\",null,{\"className\":\"static-content\",\"children\":[\"$\",\"div\",null,{\"className\":\"content-container\",\"children\":[[\"$\",\"article\",null,{\"className\":\"blog-post\",\"children\":[[\"$\",\"img\",null,{\"src\":\"/blog/let-them-cook-multi-agent-orchestration.svg\",\"alt\":\"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration\",\"style\":{\"width\":\"100%\",\"height\":\"auto\",\"borderRadius\":\"12px\",\"marginBottom\":\"32px\"}}],[\"$\",\"div\",null,{\"className\":\"blog-post-header\",\"children\":[[\"$\",\"div\",null,{\"className\":\"blog-meta\",\"children\":[[\"$\",\"span\",null,{\"className\":\"blog-category\",\"children\":\"Engineering\"}],[\"$\",\"span\",null,{\"children\":\"February 4, 2026\"}],[\"$\",\"span\",null,{\"className\":\"blog-author\",\"children\":[\"by \",[\"$\",\"a\",null,{\"href\":\"https://x.com/khaliqgant\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":\"Khaliq Gant\"}]]}]]}],[\"$\",\"h2\",null,{\"className\":\"blog-post-title\",\"children\":\"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration\"}],[\"$\",\"p\",null,{\"className\":\"blog-post-subtitle\",\"children\":\"What I learned watching AI agents coordinate, communicate, and occasionally fall apart\"}]]}],[\"$\",\"div\",null,{\"className\":\"blog-post-content\",\"children\":[[\"$\",\"p\",\"0\",{\"dangerouslySetInnerHTML\":{\"__html\":\"I've been building \u003ca href=\\\"https://github.com/AgentWorkforce/relay\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eAgent Relay\u003c/a\u003e using Agent Relay. Agents coordinating to build the tool that lets them coordinate. It sounds recursive because it is. I took some time to jot down some thoughts about multi-agent orchestration from the past few weeks where I've spoken to agents more than I've spoken to my wife 😳.\"}}],[\"$\",\"p\",\"1\",{\"dangerouslySetInnerHTML\":{\"__html\":\"For the past six weeks, I've been deep in this world. Agent Relay is an open-source communication layer allowing any CLI tool (Claude, Cursor, OpenCode, Gemini) to communicate efficiently and seamlessly. And it's rumored that Claude Code is coming out with first-party support for agent swarms:\"}}],[\"$\",\"div\",\"2\",{\"className\":\"tweet-embed\",\"style\":{\"margin\":\"24px 0\",\"display\":\"flex\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"blockquote\",null,{\"className\":\"twitter-tweet\",\"data-theme\":\"dark\",\"children\":[\"$\",\"a\",null,{\"href\":\"https://twitter.com/nummanali/status/2014698883507462387\",\"children\":\"View tweet\"}]}]}],[\"$\",\"p\",\"3\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Am I worried about this? If I'm being completely honest, yes, a little bit. But my main feeling is that it's great to push multi-agent orchestration into the forefront of developer minds so the true power can be experienced and more best practices form around it.\"}}],[\"$\",\"h2\",\"4\",{\"children\":\"Key Takeaways\"}],[\"$\",\"ul\",\"5\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003e2-5 worker agents per Lead\u003c/strong\u003e is the sweet spot\"}}]}],[\"$\",\"ul\",\"6\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eClaude for coordination, Codex for deep work\u003c/strong\u003e (match the CLI to the role)\"}}]}],[\"$\",\"ul\",\"7\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003ePlanning is everything\u003c/strong\u003e (agents cut corners on vague specs)\"}}]}],[\"$\",\"ul\",\"8\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eShadow agents and reviewers\u003c/strong\u003e catch lazy work\"}}]}],[\"$\",\"ul\",\"9\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eStore trajectories\u003c/strong\u003e so future agents have context\"}}]}],[\"$\",\"p\",\"10\",{\"dangerouslySetInnerHTML\":{\"__html\":\"---\"}}],[\"$\",\"h2\",\"11\",{\"children\":\"Part 1: The Promise\"}],[\"$\",\"p\",\"12\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Multi-agent orchestration is a step change in how tasks get done. It puts agents front and center while the human takes a step back and just lets them cook. That doesn't mean the human will be completely removed. There are still bumps in the road to truly autonomous agent work, and the planning phase becomes one of the most crucial steps.\"}}],[\"$\",\"h3\",\"13\",{\"children\":\"What Multi-Agent Unlocks\"}],[\"$\",\"p\",\"14\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Having agents who can communicate with each other and coordinate on tasks is a huge unlock. Assigning \u003ca href=\\\"https://github.com/AgentWorkforce/relay/tree/main/.claude/agents\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eagent profiles\u003c/a\u003e similar to how human teams would organize has been a paradigm I have found success with. For instance:\"}}],[\"$\",\"ul\",\"15\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eLead\u003c/strong\u003e – coordinates the team and breaks down tasks\"}}]}],[\"$\",\"ul\",\"16\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eBackend\u003c/strong\u003e – implements server-side logic\"}}]}],[\"$\",\"ul\",\"17\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eBackendReviewer\u003c/strong\u003e – reviews backend code for quality\"}}]}],[\"$\",\"ul\",\"18\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eFrontendReviewer\u003c/strong\u003e – reviews frontend code for quality\"}}]}],[\"$\",\"ul\",\"19\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eTypeChecker\u003c/strong\u003e – ensures type safety across the codebase\"}}]}],[\"$\",\"ul\",\"20\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eTestWriter\u003c/strong\u003e – writes and maintains tests\"}}]}],[\"$\",\"ul\",\"21\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eDocumentationExpert\u003c/strong\u003e – handles docs and comments\"}}]}],[\"$\",\"p\",\"22\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Each agent assumes its role, can read the logs of other agents, and can message others to check their work, sanity-check their decisions, and hand off tasks in a coordinated manner.\"}}],[\"$\",\"h3\",\"23\",{\"children\":\"The Speed Improvement\"}],[\"$\",\"p\",\"24\",{\"dangerouslySetInnerHTML\":{\"__html\":\"The method that has worked well for me is creating a detailed spec upfront and then spawning a Lead agent. I give it the spec and tell it to assemble a team as it sees fit. The Lead then spawns agents accordingly. Because Agent Relay is CLI-agnostic, I make sure to mix Codex, Claude, OpenCode, Gemini, and Droid agents, assigning different models based on the role. A fast model like Haiku or Conductor for Lead roles, and for deeper technical tasks, Opus or GPT-5 Codex high.\"}}],[\"$\",\"p\",\"25\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Using this workflow, I've seen that not only does code quality increase, but the speed at which agents can pump out complex features is at least a \u003cstrong\u003e4-5X improvement\u003c/strong\u003e.\"}}],[\"$\",\"p\",\"26\",{\"dangerouslySetInnerHTML\":{\"__html\":\"I have been using Agent Relay to build itself on the cloud environment at \u003ca href=\\\"https://agent-relay.com\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eagent-relay.com\u003c/a\u003e and the pace of delivery has been mind-blowing.\"}}],[\"$\",\"p\",\"27\",{\"dangerouslySetInnerHTML\":{\"__html\":\"It hasn't been all good though...\"}}],[\"$\",\"p\",\"28\",{\"dangerouslySetInnerHTML\":{\"__html\":\"---\"}}],[\"$\",\"h2\",\"29\",{\"children\":\"Part 2: The Problems\"}],[\"$\",\"h3\",\"30\",{\"children\":\"Agents Are Sometimes Lazy\"}],[\"$\",\"p\",\"31\",{\"dangerouslySetInnerHTML\":{\"__html\":\"I've had instances where an agent swarm takes on a complicated feature and then the Lead excitedly declares everything done. On one build, the Lead proudly reported \\\"All 12 endpoints implemented!\\\" When I tested it, only 8 actually returned data. The rest were stubbed out with TODOs. This happened occasionally with single-agent sessions, but imagine it compounding across 5, 6, or 10 agents...\"}}],[\"$\",\"h3\",\"32\",{\"children\":\"Agents Get Overwhelmed and Die\"}],[\"$\",\"p\",\"33\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Having a Lead agent creates a single point of failure. If the swarm is large and chatty, the Lead receives a flood of messages from other agents plus queries from the human asking about status or redirecting work. This can overwhelm the Lead, causing it to enter an endless loop and eventually die or become completely unresponsive.\"}}],[\"$\",\"p\",\"34\",{\"dangerouslySetInnerHTML\":{\"__html\":\"---\"}}],[\"$\",\"h2\",\"35\",{\"children\":\"Part 3: The Playbook\"}],[\"$\",\"p\",\"36\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Here's what I've learned about making multi-agent orchestration actually work.\"}}],[\"$\",\"h3\",\"37\",{\"children\":\"Team Structure\"}],[\"$\",\"p\",\"38\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Team structure is critical. There's a magic ratio of Lead-to-worker agents that I haven't exactly figured out yet (it varies depending on roles) but I've had success with \u003cstrong\u003e2-5 worker agents per Lead\u003c/strong\u003e. A single Lead managing 10 agents usually becomes problematic.\"}}],[\"$\",\"h3\",\"39\",{\"children\":\"Communication Patterns by CLI\"}],[\"$\",\"p\",\"40\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Not all CLI agents communicate the same way, and taking this into account is beneficial when working with swarms.\"}}],[\"$\",\"p\",\"41\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eCodex\u003c/strong\u003e is great at heads-down work but doesn't communicate well. Once it's working, it's hard to interrupt. I've had Leads waiting 15+ minutes for a response, assuming the agent died, when Codex was just deep in implementation.\"}}],[\"$\",\"p\",\"42\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eClaude\u003c/strong\u003e communicates excellently and can be interrupted mid-task without issue. It naturally provides status updates and asks clarifying questions.\"}}],[\"$\",\"p\",\"43\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eCursor\u003c/strong\u003e (particularly Composer) is very fast and communicates well, making it good for rapid iteration.\"}}],[\"$\",\"p\",\"44\",{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003cstrong\u003eMy staffing rule of thumb:\u003c/strong\u003e Put Claude agents in Lead and Reviewer roles where communication is key. Put Codex agents on isolated implementation tasks where heads-down focus is more valuable than status updates. Use Cursor when you need speed and tight feedback loops.\"}}],[\"$\",\"p\",\"45\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Agent Relay allows users to define a \u003ccode\u003eteams.json\u003c/code\u003e (\u003ca href=\\\"https://docs.agent-relay.com/reference/configuration#project-configuration-files\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003edocs\u003c/a\u003e) that auto-spawns agents on start, so these staffing decisions can be codified and stay consistent across sessions:\"}}],[\"$\",\"pre\",\"46\",{\"className\":\"code-block\",\"data-lang\":\"json\",\"children\":[\"$\",\"code\",null,{\"children\":\"{\\n \\\"team\\\": \\\"my-team\\\",\\n \\\"autoSpawn\\\": true,\\n \\\"agents\\\": [\\n {\\n \\\"name\\\": \\\"Coordinator\\\",\\n \\\"cli\\\": \\\"claude\\\",\\n \\\"role\\\": \\\"coordinator\\\",\\n \\\"task\\\": \\\"Coordinate the team...\\\"\\n },\\n {\\n \\\"name\\\": \\\"Developer\\\",\\n \\\"cli\\\": \\\"codex\\\",\\n \\\"task\\\": \\\"Implement features...\\\"\\n }\\n ]\\n}\"}]}],[\"$\",\"h3\",\"47\",{\"children\":\"Catching Lazy Work\"}],[\"$\",\"p\",\"48\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Agent Relay has a notion of a \u003ca href=\\\"https://docs.agent-relay.com/features/shadows#shadow-agents\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003e\u003cstrong\u003eshadow agent\u003c/strong\u003e\u003c/a\u003e that helps quite a bit with this problem. Reviewer agents also typically catch shoddy work.\"}}],[\"$\",\"figure\",\"49\",{\"className\":\"blog-image\",\"style\":{\"margin\":\"32px 0\"},\"children\":[[\"$\",\"img\",null,{\"src\":\"/blog/agent-review-workflow.png\",\"alt\":\"Agent Relay dashboard showing Developer reporting completion to Coordinator, who then routes the work to ReviewerA for review\",\"style\":{\"width\":\"100%\",\"borderRadius\":\"8px\"}}],[\"$\",\"figcaption\",null,{\"style\":{\"textAlign\":\"center\",\"color\":\"var(--text-secondary)\",\"marginTop\":\"12px\",\"fontSize\":\"14px\",\"fontStyle\":\"italic\"},\"children\":\"Agent Relay dashboard showing Developer reporting completion to Coordinator, who then routes the work to ReviewerA for review\"}]]}],[\"$\",\"p\",\"50\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Additionally, layering in one of the many AI code review tools has been effective at catching minor issues.\"}}],[\"$\",\"h3\",\"51\",{\"children\":\"Continuity and Hooks\"}],[\"$\",\"p\",\"52\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Agent Relay has a \u003ca href=\\\"https://docs.agent-relay.com/guides/session-continuity#session-continuity\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003e\u003ccode\u003econtinuity\u003c/code\u003e\u003c/a\u003e concept, largely borrowed from the \u003ca href=\\\"https://github.com/parcadei/Continuous-Claude-v3\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eContinuous Claude\u003c/a\u003e package by \u003ca href=\\\"https://x.com/parcadei\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003e@parcadei\u003c/a\u003e. This enables ephemeral agents that save their context periodically, get released, then spawn again and continue seamlessly by reading their saved state.\"}}],[\"$\",\"p\",\"53\",{\"dangerouslySetInnerHTML\":{\"__html\":\"If you want more granular control or access to agent lifecycle events, Agent Relay has an extensive \u003ca href=\\\"https://docs.agent-relay.com/guides/hooks\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003ehooks system\u003c/a\u003e with 7 different events:\"}}],[\"$\",\"div\",\"54\",{\"style\":{\"overflowX\":\"auto\",\"margin\":\"24px 0\"},\"children\":[\"$\",\"table\",null,{\"style\":{\"width\":\"100%\",\"borderCollapse\":\"collapse\",\"fontSize\":\"15px\"},\"children\":[[\"$\",\"thead\",null,{\"children\":[\"$\",\"tr\",null,{\"children\":[[\"$\",\"th\",\"0\",{\"style\":{\"padding\":\"12px 16px\",\"textAlign\":\"left\",\"borderBottom\":\"2px solid var(--border-subtle)\",\"fontWeight\":600},\"dangerouslySetInnerHTML\":{\"__html\":\"Hook\"}}],[\"$\",\"th\",\"1\",{\"style\":{\"padding\":\"12px 16px\",\"textAlign\":\"left\",\"borderBottom\":\"2px solid var(--border-subtle)\",\"fontWeight\":600},\"dangerouslySetInnerHTML\":{\"__html\":\"Description\"}}]]}]}],[\"$\",\"tbody\",null,{\"children\":[[\"$\",\"tr\",\"0\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonSessionStart\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Agent starts\"}}]]}],[\"$\",\"tr\",\"1\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonSessionEnd\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Agent stops\"}}]]}],[\"$\",\"tr\",\"2\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonOutput\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Agent produces output\"}}]]}],[\"$\",\"tr\",\"3\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonMessageReceived\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Receives relay message\"}}]]}],[\"$\",\"tr\",\"4\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonMessageSent\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Sends relay message\"}}]]}],[\"$\",\"tr\",\"5\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonIdle\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Agent inactive\"}}]]}],[\"$\",\"tr\",\"6\",{\"children\":[[\"$\",\"td\",\"0\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ccode\u003eonError\u003c/code\u003e\"}}],[\"$\",\"td\",\"1\",{\"style\":{\"padding\":\"10px 16px\",\"borderBottom\":\"1px solid var(--border-subtle)\"},\"dangerouslySetInnerHTML\":{\"__html\":\"Error occurs\"}}]]}]]}]]}]}],[\"$\",\"h3\",\"55\",{\"children\":\"Trajectories: Preserving Context\"}],[\"$\",\"p\",\"56\",{\"dangerouslySetInnerHTML\":{\"__html\":\"One unexpected unlock has been having agents store \u003cstrong\u003etrajectories\u003c/strong\u003e, a train of thought stored in logical chapters for a completed task. Inspired by \u003ca href=\\\"https://x.com/gergelyorosz/status/2002160432841097239\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003ethis thread\u003c/a\u003e from \u003ca href=\\\"https://x.com/GergelyOrosz\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003e@GergelyOrosz\u003c/a\u003e.\"}}],[\"$\",\"pre\",\"57\",{\"className\":\"code-block\",\"data-lang\":\"json\",\"children\":[\"$\",\"code\",null,{\"children\":\"{\\n \\\"id\\\": \\\"traj_itn5hyej5mi6\\\",\\n \\\"task\\\": { \\\"title\\\": \\\"Fix module resolution issues\\\" },\\n \\\"status\\\": \\\"completed\\\",\\n \\\"chapters\\\": [\\n {\\n \\\"title\\\": \\\"Work\\\",\\n \\\"events\\\": [\\n {\\n \\\"type\\\": \\\"decision\\\",\\n \\\"content\\\": \\\"Thread shadowMode through protocol layers\\\",\\n \\\"raw\\\": { \\\"reasoning\\\": \\\"Devin review found fields were silently dropped...\\\" },\\n \\\"significance\\\": \\\"high\\\"\\n }\\n ]\\n }\\n ],\\n \\\"retrospective\\\": {\\n \\\"summary\\\": \\\"Fixed issue by threading shadow options through all layers\\\",\\n \\\"confidence\\\": 0.9\\n }\\n}\"}]}],[\"$\",\"p\",\"58\",{\"dangerouslySetInnerHTML\":{\"__html\":\"The \u003ca href=\\\"https://github.com/AgentWorkforce/trajectories/\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eAgentWorkforce/trajectories\u003c/a\u003e repo provides a CLI tool that agents can easily understand. It becomes invaluable when an agent needs to revisit a previously-worked feature or investigate a bug. By finding the relevant trajectory, the agent gains instant context. These trajectories are also useful to humans reviewing the codebase.\"}}],[\"$\",\"h3\",\"59\",{\"children\":\"The Human's New Role\"}],[\"$\",\"p\",\"60\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Coordinating with multiple agents and seeing output fly in at rapid speed is exhilarating. Being able to remove myself as the bottleneck is a huge benefit. This necessitates that the \u003cstrong\u003eplanning phase is carefully and meticulously done\u003c/strong\u003e to ensure agents have well-defined tasks with edge cases thought out.\"}}],[\"$\",\"p\",\"61\",{\"dangerouslySetInnerHTML\":{\"__html\":\"It also means the \u003cstrong\u003ereview phase is paramount\u003c/strong\u003e. Having agents self-review and cross-review is an effective strategy.\"}}],[\"$\",\"p\",\"62\",{\"dangerouslySetInnerHTML\":{\"__html\":\"---\"}}],[\"$\",\"h2\",\"63\",{\"children\":\"Try It Yourself\"}],[\"$\",\"p\",\"64\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Want to experiment with multi-agent orchestration? You can \u003ca href=\\\"https://agent-relay.com\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eget started with Agent Relay Cloud\u003c/a\u003e or set it up locally in seconds.\"}}],[\"$\",\"p\",\"65\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Just tell your CLI agent to run:\"}}],[\"$\",\"pre\",\"66\",{\"className\":\"code-block\",\"data-lang\":\"bash\",\"children\":[\"$\",\"code\",null,{\"children\":\"curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md\"}]}],[\"$\",\"p\",\"67\",{\"dangerouslySetInnerHTML\":{\"__html\":\"The agent will read the setup guide and configure everything, then let it cook.\"}}],[\"$\",\"p\",\"68\",{\"dangerouslySetInnerHTML\":{\"__html\":\"Check out the \u003ca href=\\\"https://docs.agent-relay.com\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003edocs\u003c/a\u003e for more details, or hit me on X with any thoughts or questions. I'm all for a discussion: \u003ca href=\\\"https://x.com/khaliqgant\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003e@khaliqgant\u003c/a\u003e\"}}],[\"$\",\"h2\",\"69\",{\"children\":\"References\"}],[\"$\",\"ul\",\"70\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ca href=\\\"https://cursor.com/blog/scaling-agents\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003eCursor: Scaling Agents\u003c/a\u003e – An interesting perspective on how Cursor is thinking about agent scaling and the challenges involved\"}}]}],[\"$\",\"ul\",\"71\",{\"children\":[\"$\",\"li\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"\u003ca href=\\\"https://x.com/pbteja1998/status/2017662163540971756\\\" target=\\\"_blank\\\" rel=\\\"noopener noreferrer\\\"\u003e@pbteja1998 on multi-agent swarms with OpenClaw\u003c/a\u003e – Exciting developments in how people are experimenting with multi-agent orchestration\"}}]}]]}]]}],[\"$\",\"hr\",null,{\"style\":{\"border\":\"none\",\"borderTop\":\"1px solid var(--border-subtle)\",\"margin\":\"48px 0\"}}],[\"$\",\"h2\",null,{\"children\":\"Stay Updated\"}],[\"$\",\"p\",null,{\"children\":[\"Follow us on \",[\"$\",\"a\",null,{\"href\":\"https://twitter.com/agent_relay\",\"target\":\"_blank\",\"rel\":\"noopener noreferrer\",\"children\":\"Twitter\"}],\" for the latest updates and more content.\"]}],[\"$\",\"$L5\",null,{\"src\":\"https://platform.twitter.com/widgets.js\",\"strategy\":\"lazyOnload\"}]]}]}]]}],[\"$\",\"footer\",null,{\"className\":\"footer\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-inner\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-brand\",\"children\":[[\"$\",\"a\",null,{\"href\":\"/\",\"className\":\"footer-logo\",\"children\":[[\"$\",\"svg\",null,{\"width\":24,\"height\":24,\"viewBox\":\"0 0 100 100\",\"fill\":\"none\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"className\":\"\\n transition-all duration-300\\n drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]\\n \\n \",\"aria-label\":\"Agent Relay Logo\",\"role\":\"img\",\"children\":[[\"$\",\"path\",null,{\"d\":\"M30 80 L 50 20 L 70 80\",\"stroke\":\"#00d9ff\",\"strokeWidth\":\"5\",\"strokeLinejoin\":\"round\",\"strokeLinecap\":\"round\",\"fill\":\"none\"}],[\"$\",\"line\",null,{\"x1\":\"40\",\"y1\":\"50\",\"x2\":\"60\",\"y2\":\"50\",\"stroke\":\"#00d9ff\",\"strokeWidth\":\"5\",\"strokeLinecap\":\"round\"}],[\"$\",\"path\",null,{\"d\":\"M50 20 L 50 80\",\"stroke\":\"#00ffc8\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"opacity\":\"0.7\"}],[\"$\",\"path\",null,{\"d\":\"M50 20 C 80 20 80 50 50 50 L 80 80\",\"stroke\":\"#00ffc8\",\"strokeWidth\":\"2.5\",\"strokeLinecap\":\"round\",\"strokeLinejoin\":\"round\",\"fill\":\"none\",\"opacity\":\"0.7\"}]]}],[\"$\",\"span\",null,{\"className\":\"logo-text\",\"children\":\"Agent Relay\"}]]}],[\"$\",\"p\",null,{\"children\":\"Orchestrate AI agents like a symphony.\"}]]}],[\"$\",\"div\",null,{\"className\":\"footer-links\",\"children\":[[\"$\",\"div\",null,{\"className\":\"footer-column\",\"children\":[[\"$\",\"h4\",null,{\"children\":\"Product\"}],[\"$\",\"a\",null,{\"href\":\"/#features\",\"children\":\"Features\"}],[\"$\",\"a\",null,{\"href\":\"/pricing\",\"children\":\"Pricing\"}],[\"$\",\"a\",null,{\"href\":\"https://docs.agent-relay.com/\",\"children\":\"Documentation\"}],[\"$\",\"a\",null,{\"href\":\"/changelog\",\"children\":\"Changelog\"}]]}],[\"$\",\"div\",null,{\"className\":\"footer-column\",\"children\":[[\"$\",\"h4\",null,{\"children\":\"Company\"}],[\"$\",\"a\",null,{\"href\":\"/about\",\"children\":\"About\"}],[\"$\",\"a\",null,{\"href\":\"/blog\",\"children\":\"Blog\"}],[\"$\",\"a\",null,{\"href\":\"/careers\",\"children\":\"Careers\"}],[\"$\",\"a\",null,{\"href\":\"/contact\",\"children\":\"Contact\"}]]}],[\"$\",\"div\",null,{\"className\":\"footer-column\",\"children\":[[\"$\",\"h4\",null,{\"children\":\"Legal\"}],[\"$\",\"a\",null,{\"href\":\"/privacy\",\"children\":\"Privacy\"}],[\"$\",\"a\",null,{\"href\":\"/terms\",\"children\":\"Terms\"}],[\"$\",\"a\",null,{\"href\":\"/security\",\"children\":\"Security\"}]]}]]}]]}],[\"$\",\"div\",null,{\"className\":\"footer-bottom\",\"children\":[[\"$\",\"p\",null,{\"children\":\"© 2026 Agent Relay. All rights reserved.\"}],[\"$\",\"div\",null,{\"className\":\"social-links\",\"children\":[[\"$\",\"a\",null,{\"href\":\"https://github.com/AgentWorkforce/relay\",\"aria-label\":\"GitHub\",\"children\":[\"$\",\"svg\",null,{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z\"}]}]}],[\"$\",\"a\",null,{\"href\":\"https://twitter.com/agent_relay\",\"aria-label\":\"Twitter\",\"children\":[\"$\",\"svg\",null,{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 24 24\",\"fill\":\"currentColor\",\"children\":[\"$\",\"path\",null,{\"d\":\"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z\"}]}]}]]}]]}]]}]]}],[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/629d21db423c78a2.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]]],null],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"blog\",\"children\",\"let-them-cook-multi-agent-orchestration\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[null,[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\",\"blog\",\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"notFoundStyles\":\"$undefined\"}]],null]},[[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ad96af0f7a47b705.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L6\",null,{\"parallelRouterKey\":\"children\",\"segmentPath\":[\"children\"],\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L7\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":\"404\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],\"notFoundStyles\":[]}]}]}]],null],null],\"couldBeIntercepted\":false,\"initialHead\":[null,\"$L8\"],\"globalErrorComponent\":\"$9\",\"missingSlots\":\"$Wa\"}]\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}],[\"$\",\"meta\",\"1\",{\"charSet\":\"utf-8\"}],[\"$\",\"title\",\"2\",{\"children\":\"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration | Agent Relay Blog\"}],[\"$\",\"meta\",\"3\",{\"name\":\"description\",\"content\":\"Multi-agent orchestration is a step change in how tasks get done. After 6 weeks of building with agent swarms, here's what works, what breaks, and why the planning phase becomes everything.\"}],[\"$\",\"meta\",\"4\",{\"property\":\"og:title\",\"content\":\"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration\"}],[\"$\",\"meta\",\"5\",{\"property\":\"og:description\",\"content\":\"What I learned watching AI agents coordinate, communicate, and occasionally fall apart\"}],[\"$\",\"meta\",\"6\",{\"property\":\"og:url\",\"content\":\"https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration\"}],[\"$\",\"meta\",\"7\",{\"property\":\"og:site_name\",\"content\":\"Agent Relay\"}],[\"$\",\"meta\",\"8\",{\"property\":\"og:image\",\"content\":\"https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration.svg\"}],[\"$\",\"meta\",\"9\",{\"property\":\"og:image:width\",\"content\":\"1200\"}],[\"$\",\"meta\",\"10\",{\"property\":\"og:image:height\",\"content\":\"630\"}],[\"$\",\"meta\",\"11\",{\"property\":\"og:image:alt\",\"content\":\"Let Them Cook: Multi-Agent Orchestration - Agent Relay\"}],[\"$\",\"meta\",\"12\",{\"property\":\"og:type\",\"content\":\"article\"}],[\"$\",\"meta\",\"13\",{\"property\":\"article:published_time\",\"content\":\"2026-02-04\"}],[\"$\",\"meta\",\"14\",{\"property\":\"article:author\",\"content\":\"Khaliq Gant\"}],[\"$\",\"meta\",\"15\",{\"name\":\"twitter:card\",\"content\":\"summary_large_image\"}],[\"$\",\"meta\",\"16\",{\"name\":\"twitter:title\",\"content\":\"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration\"}],[\"$\",\"meta\",\"17\",{\"name\":\"twitter:description\",\"content\":\"What I learned watching AI agents coordinate, communicate, and occasionally fall apart\"}],[\"$\",\"meta\",\"18\",{\"name\":\"twitter:image\",\"content\":\"https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration.svg\"}],[\"$\",\"link\",\"19\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.png?9e7a840704165ca6\",\"type\":\"image/png\",\"sizes\":\"256x256\"}]]\n"])</script><script>self.__next_f.push([1,"4:null\n"])</script></body></html>
@@ -0,0 +1,155 @@
1
+ <svg width="1200" height="630" viewBox="0 0 1200 630" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <defs>
3
+ <radialGradient id="glow1" cx="30%" cy="40%" r="60%">
4
+ <stop offset="0%" stop-color="#1a1a2e"/>
5
+ <stop offset="100%" stop-color="#0a0a0f"/>
6
+ </radialGradient>
7
+ <radialGradient id="glow2" cx="70%" cy="60%" r="50%">
8
+ <stop offset="0%" stop-color="#16213e"/>
9
+ <stop offset="100%" stop-color="transparent"/>
10
+ </radialGradient>
11
+ <linearGradient id="potGradient" x1="0%" y1="0%" x2="0%" y2="100%">
12
+ <stop offset="0%" stop-color="#4a4a5a"/>
13
+ <stop offset="100%" stop-color="#2a2a3a"/>
14
+ </linearGradient>
15
+ <linearGradient id="steamGradient" x1="0%" y1="100%" x2="0%" y2="0%">
16
+ <stop offset="0%" stop-color="#00d9ff" stop-opacity="0.6"/>
17
+ <stop offset="100%" stop-color="#00d9ff" stop-opacity="0"/>
18
+ </linearGradient>
19
+ </defs>
20
+
21
+ <!-- Background -->
22
+ <rect width="1200" height="630" fill="#0a0a0f"/>
23
+ <rect width="1200" height="630" fill="url(#glow1)"/>
24
+ <rect width="1200" height="630" fill="url(#glow2)"/>
25
+
26
+ <!-- Grid pattern for tech feel -->
27
+ <g opacity="0.05">
28
+ <line x1="0" y1="100" x2="1200" y2="100" stroke="white" stroke-width="1"/>
29
+ <line x1="0" y1="200" x2="1200" y2="200" stroke="white" stroke-width="1"/>
30
+ <line x1="0" y1="300" x2="1200" y2="300" stroke="white" stroke-width="1"/>
31
+ <line x1="0" y1="400" x2="1200" y2="400" stroke="white" stroke-width="1"/>
32
+ <line x1="0" y1="500" x2="1200" y2="500" stroke="white" stroke-width="1"/>
33
+ <line x1="200" y1="0" x2="200" y2="630" stroke="white" stroke-width="1"/>
34
+ <line x1="400" y1="0" x2="400" y2="630" stroke="white" stroke-width="1"/>
35
+ <line x1="600" y1="0" x2="600" y2="630" stroke="white" stroke-width="1"/>
36
+ <line x1="800" y1="0" x2="800" y2="630" stroke="white" stroke-width="1"/>
37
+ <line x1="1000" y1="0" x2="1000" y2="630" stroke="white" stroke-width="1"/>
38
+ </g>
39
+
40
+ <!-- Large cooking pot in center -->
41
+ <g transform="translate(600, 380)">
42
+ <!-- Pot body -->
43
+ <ellipse cx="0" cy="60" rx="180" ry="30" fill="#1a1a2a"/>
44
+ <path d="M-180 0 L-180 60 Q-180 90 0 90 Q180 90 180 60 L180 0 Q180 30 0 30 Q-180 30 -180 0" fill="url(#potGradient)" stroke="#5a5a6a" stroke-width="2"/>
45
+ <ellipse cx="0" cy="0" rx="180" ry="30" fill="#3a3a4a" stroke="#5a5a6a" stroke-width="2"/>
46
+ <!-- Pot rim highlight -->
47
+ <ellipse cx="0" cy="0" rx="160" ry="22" fill="none" stroke="#6a6a7a" stroke-width="1"/>
48
+ <!-- Handles -->
49
+ <rect x="-210" y="-10" width="30" height="20" rx="5" fill="#4a4a5a" stroke="#6a6a7a" stroke-width="1"/>
50
+ <rect x="180" y="-10" width="30" height="20" rx="5" fill="#4a4a5a" stroke="#6a6a7a" stroke-width="1"/>
51
+ </g>
52
+
53
+ <!-- Steam/code rising from pot -->
54
+ <g transform="translate(600, 300)" opacity="0.8">
55
+ <!-- Steam wisps with code -->
56
+ <text x="-80" y="-20" font-family="monospace" font-size="14" fill="#00d9ff" opacity="0.7">spawn()</text>
57
+ <text x="20" y="-60" font-family="monospace" font-size="12" fill="#00ffc8" opacity="0.6">relay.send()</text>
58
+ <text x="-60" y="-100" font-family="monospace" font-size="13" fill="#00d9ff" opacity="0.5">async</text>
59
+ <text x="40" y="-130" font-family="monospace" font-size="11" fill="#00ffc8" opacity="0.4">await</text>
60
+ <text x="-30" y="-160" font-family="monospace" font-size="10" fill="#00d9ff" opacity="0.3">{...}</text>
61
+ </g>
62
+
63
+ <!-- Agent 1 - Lead (with chef hat, left) -->
64
+ <g transform="translate(250, 320)">
65
+ <!-- Body/terminal -->
66
+ <rect x="-50" y="0" width="100" height="70" rx="8" fill="#1a1a2a" stroke="#00d9ff" stroke-width="2"/>
67
+ <text x="0" y="25" text-anchor="middle" font-family="monospace" font-size="11" fill="#00d9ff">Lead</text>
68
+ <text x="0" y="45" text-anchor="middle" font-family="monospace" font-size="9" fill="#00ffc8">Claude</text>
69
+ <!-- Chef hat -->
70
+ <ellipse cx="0" cy="-15" rx="35" ry="10" fill="white"/>
71
+ <rect x="-30" y="-55" width="60" height="40" rx="5" fill="white"/>
72
+ <ellipse cx="0" cy="-55" rx="30" ry="12" fill="white"/>
73
+ <!-- Face indicator -->
74
+ <circle cx="-12" cy="-30" r="4" fill="#333"/>
75
+ <circle cx="12" cy="-30" r="4" fill="#333"/>
76
+ <path d="M-8 -20 Q0 -12 8 -20" stroke="#333" stroke-width="2" fill="none"/>
77
+ <!-- Spoon -->
78
+ <line x1="55" y1="-20" x2="90" y2="30" stroke="#888" stroke-width="4" stroke-linecap="round"/>
79
+ <ellipse cx="95" cy="38" rx="12" ry="8" fill="#888"/>
80
+ </g>
81
+
82
+ <!-- Agent 2 - Backend (with chef hat, stirring) -->
83
+ <g transform="translate(480, 280)">
84
+ <!-- Body/terminal -->
85
+ <rect x="-45" y="0" width="90" height="60" rx="8" fill="#1a1a2a" stroke="#00ffc8" stroke-width="2"/>
86
+ <text x="0" y="22" text-anchor="middle" font-family="monospace" font-size="10" fill="#00ffc8">Backend</text>
87
+ <text x="0" y="40" text-anchor="middle" font-family="monospace" font-size="9" fill="#ff9f43">Codex</text>
88
+ <!-- Chef hat -->
89
+ <ellipse cx="0" cy="-12" rx="30" ry="8" fill="white"/>
90
+ <rect x="-25" y="-45" width="50" height="33" rx="5" fill="white"/>
91
+ <ellipse cx="0" cy="-45" rx="25" ry="10" fill="white"/>
92
+ <!-- Face -->
93
+ <circle cx="-10" cy="-25" r="3" fill="#333"/>
94
+ <circle cx="10" cy="-25" r="3" fill="#333"/>
95
+ <line x1="-6" y1="-15" x2="6" y2="-15" stroke="#333" stroke-width="2" stroke-linecap="round"/>
96
+ <!-- Ladle going into pot -->
97
+ <line x1="45" y1="20" x2="100" y2="80" stroke="#666" stroke-width="5" stroke-linecap="round"/>
98
+ </g>
99
+
100
+ <!-- Agent 3 - Reviewer (with chef hat, tasting, right) -->
101
+ <g transform="translate(720, 280)">
102
+ <!-- Body/terminal -->
103
+ <rect x="-45" y="0" width="90" height="60" rx="8" fill="#1a1a2a" stroke="#ff6b6b" stroke-width="2"/>
104
+ <text x="0" y="22" text-anchor="middle" font-family="monospace" font-size="10" fill="#ff6b6b">Reviewer</text>
105
+ <text x="0" y="40" text-anchor="middle" font-family="monospace" font-size="9" fill="#00d9ff">Claude</text>
106
+ <!-- Chef hat -->
107
+ <ellipse cx="0" cy="-12" rx="30" ry="8" fill="white"/>
108
+ <rect x="-25" y="-45" width="50" height="33" rx="5" fill="white"/>
109
+ <ellipse cx="0" cy="-45" rx="25" ry="10" fill="white"/>
110
+ <!-- Face - tasting expression -->
111
+ <circle cx="-10" cy="-25" r="3" fill="#333"/>
112
+ <circle cx="10" cy="-25" r="3" fill="#333"/>
113
+ <ellipse cx="0" cy="-14" rx="5" ry="4" fill="#333"/>
114
+ <!-- Tasting spoon -->
115
+ <line x1="-50" y1="-10" x2="-70" y2="10" stroke="#888" stroke-width="3" stroke-linecap="round"/>
116
+ <ellipse cx="-75" cy="15" rx="8" ry="5" fill="#888"/>
117
+ </g>
118
+
119
+ <!-- Agent 4 - Test Writer (with chef hat, far right) -->
120
+ <g transform="translate(950, 320)">
121
+ <!-- Body/terminal -->
122
+ <rect x="-50" y="0" width="100" height="70" rx="8" fill="#1a1a2a" stroke="#a855f7" stroke-width="2"/>
123
+ <text x="0" y="25" text-anchor="middle" font-family="monospace" font-size="10" fill="#a855f7">TestWriter</text>
124
+ <text x="0" y="45" text-anchor="middle" font-family="monospace" font-size="9" fill="#00ffc8">Cursor</text>
125
+ <!-- Chef hat -->
126
+ <ellipse cx="0" cy="-15" rx="35" ry="10" fill="white"/>
127
+ <rect x="-30" y="-55" width="60" height="40" rx="5" fill="white"/>
128
+ <ellipse cx="0" cy="-55" rx="30" ry="12" fill="white"/>
129
+ <!-- Face - focused -->
130
+ <circle cx="-12" cy="-30" r="4" fill="#333"/>
131
+ <circle cx="12" cy="-30" r="4" fill="#333"/>
132
+ <line x1="-8" y1="-18" x2="8" y2="-18" stroke="#333" stroke-width="2" stroke-linecap="round"/>
133
+ <!-- Clipboard/checklist -->
134
+ <rect x="-85" y="-30" width="30" height="40" rx="3" fill="#2a2a3a" stroke="#666"/>
135
+ <line x1="-78" y1="-18" x2="-62" y2="-18" stroke="#0f0" stroke-width="2"/>
136
+ <line x1="-78" y1="-8" x2="-62" y2="-8" stroke="#0f0" stroke-width="2"/>
137
+ <line x1="-78" y1="2" x2="-62" y2="2" stroke="#666" stroke-width="2"/>
138
+ </g>
139
+
140
+ <!-- Communication lines between agents -->
141
+ <g opacity="0.4">
142
+ <line x1="300" y1="340" x2="435" y2="310" stroke="#00d9ff" stroke-width="1" stroke-dasharray="5,5"/>
143
+ <line x1="525" y1="310" x2="675" y2="310" stroke="#00ffc8" stroke-width="1" stroke-dasharray="5,5"/>
144
+ <line x1="765" y1="310" x2="900" y2="340" stroke="#a855f7" stroke-width="1" stroke-dasharray="5,5"/>
145
+ </g>
146
+
147
+ <!-- Logo - AR monogram bottom right -->
148
+ <g transform="translate(1050, 500)">
149
+ <path d="M-12 24 L 0 -8 L 12 24" stroke="#00d9ff" stroke-width="2" stroke-linejoin="round" stroke-linecap="round" fill="none"/>
150
+ <line x1="-6" y1="10" x2="6" y2="10" stroke="#00d9ff" stroke-width="2" stroke-linecap="round"/>
151
+ <path d="M0 -8 L 0 24" stroke="#00ffc8" stroke-width="1.5" stroke-linecap="round" opacity="0.8"/>
152
+ <path d="M0 -8 C 12 -8 12 8 0 8 L 12 24" stroke="#00ffc8" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" fill="none" opacity="0.8"/>
153
+ <text x="22" y="14" font-family="system-ui, -apple-system, sans-serif" font-size="16" font-weight="600" fill="white">Agent Relay</text>
154
+ </g>
155
+ </svg>
@@ -0,0 +1,6 @@
1
+ 2:I[2147,["294","static/chunks/app/blog/let-them-cook-multi-agent-orchestration/page-a58308f43557b908.js"],""]
2
+ 3:I[5092,[],""]
3
+ 4:I[2023,[],""]
4
+ 0:["Zy1iEBTs-RzAM6cw9InUm",[[["",{"children":["blog",{"children":["let-them-cook-multi-agent-orchestration",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",{"children":["blog",{"children":["let-them-cook-multi-agent-orchestration",{"children":["__PAGE__",{},[["$L1",["$","div",null,{"className":"landing-page static-page","children":[["$","div",null,{"className":"landing-bg","children":[["$","div",null,{"className":"grid-bg","children":[["$","div",null,{"className":"grid-lines"}],["$","div",null,{"className":"grid-glow"}]]}],["$","div",null,{"className":"glow-orbs","children":[["$","div",null,{"className":"orb orb-1"}],["$","div",null,{"className":"orb orb-2"}],["$","div",null,{"className":"orb orb-3"}]]}]]}],["$","nav",null,{"className":"nav scrolled","children":["$","div",null,{"className":"nav-inner","children":[["$","a",null,{"href":"/","className":"nav-logo","children":[["$","svg",null,{"width":28,"height":28,"viewBox":"0 0 100 100","fill":"none","xmlns":"http://www.w3.org/2000/svg","className":"\n transition-all duration-300\n drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]\n \n ","aria-label":"Agent Relay Logo","role":"img","children":[["$","path",null,{"d":"M30 80 L 50 20 L 70 80","stroke":"#00d9ff","strokeWidth":"5","strokeLinejoin":"round","strokeLinecap":"round","fill":"none"}],["$","line",null,{"x1":"40","y1":"50","x2":"60","y2":"50","stroke":"#00d9ff","strokeWidth":"5","strokeLinecap":"round"}],["$","path",null,{"d":"M50 20 L 50 80","stroke":"#00ffc8","strokeWidth":"2.5","strokeLinecap":"round","opacity":"0.7"}],["$","path",null,{"d":"M50 20 C 80 20 80 50 50 50 L 80 80","stroke":"#00ffc8","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","fill":"none","opacity":"0.7"}]]}],["$","span",null,{"className":"logo-text","children":"Agent Relay"}]]}],["$","div",null,{"className":"nav-links","children":[["$","a",null,{"href":"/#demo","children":"Demo"}],["$","a",null,{"href":"/#features","children":"Features"}],["$","a",null,{"href":"/pricing","children":"Pricing"}],["$","a",null,{"href":"https://docs.agent-relay.com/","className":"nav-docs","children":"Docs"}]]}],["$","div",null,{"className":"nav-actions","children":[["$","a",null,{"href":"/login","className":"btn-ghost","children":"Sign In"}],["$","a",null,{"href":"/signup","className":"btn-primary","children":"Get Started"}]]}]]}]}],["$","main",null,{"children":[["$","section",null,{"className":"static-hero","children":["$","div",null,{"className":"static-hero-content","children":[["$","h1",null,{"children":["$","a",null,{"href":"/blog","style":{"color":"inherit","textDecoration":"none"},"children":"Blog"}]}],["$","p",null,{"className":"static-subtitle","children":"News, tutorials, and insights from the Agent Relay team."}],"$undefined"]}]}],["$","section",null,{"className":"static-content","children":["$","div",null,{"className":"content-container","children":[["$","article",null,{"className":"blog-post","children":[["$","img",null,{"src":"/blog/let-them-cook-multi-agent-orchestration.svg","alt":"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration","style":{"width":"100%","height":"auto","borderRadius":"12px","marginBottom":"32px"}}],["$","div",null,{"className":"blog-post-header","children":[["$","div",null,{"className":"blog-meta","children":[["$","span",null,{"className":"blog-category","children":"Engineering"}],["$","span",null,{"children":"February 4, 2026"}],["$","span",null,{"className":"blog-author","children":["by ",["$","a",null,{"href":"https://x.com/khaliqgant","target":"_blank","rel":"noopener noreferrer","children":"Khaliq Gant"}]]}]]}],["$","h2",null,{"className":"blog-post-title","children":"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration"}],["$","p",null,{"className":"blog-post-subtitle","children":"What I learned watching AI agents coordinate, communicate, and occasionally fall apart"}]]}],["$","div",null,{"className":"blog-post-content","children":[["$","p","0",{"dangerouslySetInnerHTML":{"__html":"I've been building <a href=\"https://github.com/AgentWorkforce/relay\" target=\"_blank\" rel=\"noopener noreferrer\">Agent Relay</a> using Agent Relay. Agents coordinating to build the tool that lets them coordinate. It sounds recursive because it is. I took some time to jot down some thoughts about multi-agent orchestration from the past few weeks where I've spoken to agents more than I've spoken to my wife 😳."}}],["$","p","1",{"dangerouslySetInnerHTML":{"__html":"For the past six weeks, I've been deep in this world. Agent Relay is an open-source communication layer allowing any CLI tool (Claude, Cursor, OpenCode, Gemini) to communicate efficiently and seamlessly. And it's rumored that Claude Code is coming out with first-party support for agent swarms:"}}],["$","div","2",{"className":"tweet-embed","style":{"margin":"24px 0","display":"flex","justifyContent":"center"},"children":["$","blockquote",null,{"className":"twitter-tweet","data-theme":"dark","children":["$","a",null,{"href":"https://twitter.com/nummanali/status/2014698883507462387","children":"View tweet"}]}]}],["$","p","3",{"dangerouslySetInnerHTML":{"__html":"Am I worried about this? If I'm being completely honest, yes, a little bit. But my main feeling is that it's great to push multi-agent orchestration into the forefront of developer minds so the true power can be experienced and more best practices form around it."}}],["$","h2","4",{"children":"Key Takeaways"}],["$","ul","5",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>2-5 worker agents per Lead</strong> is the sweet spot"}}]}],["$","ul","6",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>Claude for coordination, Codex for deep work</strong> (match the CLI to the role)"}}]}],["$","ul","7",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>Planning is everything</strong> (agents cut corners on vague specs)"}}]}],["$","ul","8",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>Shadow agents and reviewers</strong> catch lazy work"}}]}],["$","ul","9",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>Store trajectories</strong> so future agents have context"}}]}],["$","p","10",{"dangerouslySetInnerHTML":{"__html":"---"}}],["$","h2","11",{"children":"Part 1: The Promise"}],["$","p","12",{"dangerouslySetInnerHTML":{"__html":"Multi-agent orchestration is a step change in how tasks get done. It puts agents front and center while the human takes a step back and just lets them cook. That doesn't mean the human will be completely removed. There are still bumps in the road to truly autonomous agent work, and the planning phase becomes one of the most crucial steps."}}],["$","h3","13",{"children":"What Multi-Agent Unlocks"}],["$","p","14",{"dangerouslySetInnerHTML":{"__html":"Having agents who can communicate with each other and coordinate on tasks is a huge unlock. Assigning <a href=\"https://github.com/AgentWorkforce/relay/tree/main/.claude/agents\" target=\"_blank\" rel=\"noopener noreferrer\">agent profiles</a> similar to how human teams would organize has been a paradigm I have found success with. For instance:"}}],["$","ul","15",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>Lead</strong> – coordinates the team and breaks down tasks"}}]}],["$","ul","16",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>Backend</strong> – implements server-side logic"}}]}],["$","ul","17",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>BackendReviewer</strong> – reviews backend code for quality"}}]}],["$","ul","18",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>FrontendReviewer</strong> – reviews frontend code for quality"}}]}],["$","ul","19",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>TypeChecker</strong> – ensures type safety across the codebase"}}]}],["$","ul","20",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>TestWriter</strong> – writes and maintains tests"}}]}],["$","ul","21",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<strong>DocumentationExpert</strong> – handles docs and comments"}}]}],["$","p","22",{"dangerouslySetInnerHTML":{"__html":"Each agent assumes its role, can read the logs of other agents, and can message others to check their work, sanity-check their decisions, and hand off tasks in a coordinated manner."}}],["$","h3","23",{"children":"The Speed Improvement"}],["$","p","24",{"dangerouslySetInnerHTML":{"__html":"The method that has worked well for me is creating a detailed spec upfront and then spawning a Lead agent. I give it the spec and tell it to assemble a team as it sees fit. The Lead then spawns agents accordingly. Because Agent Relay is CLI-agnostic, I make sure to mix Codex, Claude, OpenCode, Gemini, and Droid agents, assigning different models based on the role. A fast model like Haiku or Conductor for Lead roles, and for deeper technical tasks, Opus or GPT-5 Codex high."}}],["$","p","25",{"dangerouslySetInnerHTML":{"__html":"Using this workflow, I've seen that not only does code quality increase, but the speed at which agents can pump out complex features is at least a <strong>4-5X improvement</strong>."}}],["$","p","26",{"dangerouslySetInnerHTML":{"__html":"I have been using Agent Relay to build itself on the cloud environment at <a href=\"https://agent-relay.com\" target=\"_blank\" rel=\"noopener noreferrer\">agent-relay.com</a> and the pace of delivery has been mind-blowing."}}],["$","p","27",{"dangerouslySetInnerHTML":{"__html":"It hasn't been all good though..."}}],["$","p","28",{"dangerouslySetInnerHTML":{"__html":"---"}}],["$","h2","29",{"children":"Part 2: The Problems"}],["$","h3","30",{"children":"Agents Are Sometimes Lazy"}],["$","p","31",{"dangerouslySetInnerHTML":{"__html":"I've had instances where an agent swarm takes on a complicated feature and then the Lead excitedly declares everything done. On one build, the Lead proudly reported \"All 12 endpoints implemented!\" When I tested it, only 8 actually returned data. The rest were stubbed out with TODOs. This happened occasionally with single-agent sessions, but imagine it compounding across 5, 6, or 10 agents..."}}],["$","h3","32",{"children":"Agents Get Overwhelmed and Die"}],["$","p","33",{"dangerouslySetInnerHTML":{"__html":"Having a Lead agent creates a single point of failure. If the swarm is large and chatty, the Lead receives a flood of messages from other agents plus queries from the human asking about status or redirecting work. This can overwhelm the Lead, causing it to enter an endless loop and eventually die or become completely unresponsive."}}],["$","p","34",{"dangerouslySetInnerHTML":{"__html":"---"}}],["$","h2","35",{"children":"Part 3: The Playbook"}],["$","p","36",{"dangerouslySetInnerHTML":{"__html":"Here's what I've learned about making multi-agent orchestration actually work."}}],["$","h3","37",{"children":"Team Structure"}],["$","p","38",{"dangerouslySetInnerHTML":{"__html":"Team structure is critical. There's a magic ratio of Lead-to-worker agents that I haven't exactly figured out yet (it varies depending on roles) but I've had success with <strong>2-5 worker agents per Lead</strong>. A single Lead managing 10 agents usually becomes problematic."}}],["$","h3","39",{"children":"Communication Patterns by CLI"}],["$","p","40",{"dangerouslySetInnerHTML":{"__html":"Not all CLI agents communicate the same way, and taking this into account is beneficial when working with swarms."}}],["$","p","41",{"dangerouslySetInnerHTML":{"__html":"<strong>Codex</strong> is great at heads-down work but doesn't communicate well. Once it's working, it's hard to interrupt. I've had Leads waiting 15+ minutes for a response, assuming the agent died, when Codex was just deep in implementation."}}],["$","p","42",{"dangerouslySetInnerHTML":{"__html":"<strong>Claude</strong> communicates excellently and can be interrupted mid-task without issue. It naturally provides status updates and asks clarifying questions."}}],["$","p","43",{"dangerouslySetInnerHTML":{"__html":"<strong>Cursor</strong> (particularly Composer) is very fast and communicates well, making it good for rapid iteration."}}],["$","p","44",{"dangerouslySetInnerHTML":{"__html":"<strong>My staffing rule of thumb:</strong> Put Claude agents in Lead and Reviewer roles where communication is key. Put Codex agents on isolated implementation tasks where heads-down focus is more valuable than status updates. Use Cursor when you need speed and tight feedback loops."}}],["$","p","45",{"dangerouslySetInnerHTML":{"__html":"Agent Relay allows users to define a <code>teams.json</code> (<a href=\"https://docs.agent-relay.com/reference/configuration#project-configuration-files\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a>) that auto-spawns agents on start, so these staffing decisions can be codified and stay consistent across sessions:"}}],["$","pre","46",{"className":"code-block","data-lang":"json","children":["$","code",null,{"children":"{\n \"team\": \"my-team\",\n \"autoSpawn\": true,\n \"agents\": [\n {\n \"name\": \"Coordinator\",\n \"cli\": \"claude\",\n \"role\": \"coordinator\",\n \"task\": \"Coordinate the team...\"\n },\n {\n \"name\": \"Developer\",\n \"cli\": \"codex\",\n \"task\": \"Implement features...\"\n }\n ]\n}"}]}],["$","h3","47",{"children":"Catching Lazy Work"}],["$","p","48",{"dangerouslySetInnerHTML":{"__html":"Agent Relay has a notion of a <a href=\"https://docs.agent-relay.com/features/shadows#shadow-agents\" target=\"_blank\" rel=\"noopener noreferrer\"><strong>shadow agent</strong></a> that helps quite a bit with this problem. Reviewer agents also typically catch shoddy work."}}],["$","figure","49",{"className":"blog-image","style":{"margin":"32px 0"},"children":[["$","img",null,{"src":"/blog/agent-review-workflow.png","alt":"Agent Relay dashboard showing Developer reporting completion to Coordinator, who then routes the work to ReviewerA for review","style":{"width":"100%","borderRadius":"8px"}}],["$","figcaption",null,{"style":{"textAlign":"center","color":"var(--text-secondary)","marginTop":"12px","fontSize":"14px","fontStyle":"italic"},"children":"Agent Relay dashboard showing Developer reporting completion to Coordinator, who then routes the work to ReviewerA for review"}]]}],["$","p","50",{"dangerouslySetInnerHTML":{"__html":"Additionally, layering in one of the many AI code review tools has been effective at catching minor issues."}}],["$","h3","51",{"children":"Continuity and Hooks"}],["$","p","52",{"dangerouslySetInnerHTML":{"__html":"Agent Relay has a <a href=\"https://docs.agent-relay.com/guides/session-continuity#session-continuity\" target=\"_blank\" rel=\"noopener noreferrer\"><code>continuity</code></a> concept, largely borrowed from the <a href=\"https://github.com/parcadei/Continuous-Claude-v3\" target=\"_blank\" rel=\"noopener noreferrer\">Continuous Claude</a> package by <a href=\"https://x.com/parcadei\" target=\"_blank\" rel=\"noopener noreferrer\">@parcadei</a>. This enables ephemeral agents that save their context periodically, get released, then spawn again and continue seamlessly by reading their saved state."}}],["$","p","53",{"dangerouslySetInnerHTML":{"__html":"If you want more granular control or access to agent lifecycle events, Agent Relay has an extensive <a href=\"https://docs.agent-relay.com/guides/hooks\" target=\"_blank\" rel=\"noopener noreferrer\">hooks system</a> with 7 different events:"}}],["$","div","54",{"style":{"overflowX":"auto","margin":"24px 0"},"children":["$","table",null,{"style":{"width":"100%","borderCollapse":"collapse","fontSize":"15px"},"children":[["$","thead",null,{"children":["$","tr",null,{"children":[["$","th","0",{"style":{"padding":"12px 16px","textAlign":"left","borderBottom":"2px solid var(--border-subtle)","fontWeight":600},"dangerouslySetInnerHTML":{"__html":"Hook"}}],["$","th","1",{"style":{"padding":"12px 16px","textAlign":"left","borderBottom":"2px solid var(--border-subtle)","fontWeight":600},"dangerouslySetInnerHTML":{"__html":"Description"}}]]}]}],["$","tbody",null,{"children":[["$","tr","0",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onSessionStart</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Agent starts"}}]]}],["$","tr","1",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onSessionEnd</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Agent stops"}}]]}],["$","tr","2",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onOutput</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Agent produces output"}}]]}],["$","tr","3",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onMessageReceived</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Receives relay message"}}]]}],["$","tr","4",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onMessageSent</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Sends relay message"}}]]}],["$","tr","5",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onIdle</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Agent inactive"}}]]}],["$","tr","6",{"children":[["$","td","0",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"<code>onError</code>"}}],["$","td","1",{"style":{"padding":"10px 16px","borderBottom":"1px solid var(--border-subtle)"},"dangerouslySetInnerHTML":{"__html":"Error occurs"}}]]}]]}]]}]}],["$","h3","55",{"children":"Trajectories: Preserving Context"}],["$","p","56",{"dangerouslySetInnerHTML":{"__html":"One unexpected unlock has been having agents store <strong>trajectories</strong>, a train of thought stored in logical chapters for a completed task. Inspired by <a href=\"https://x.com/gergelyorosz/status/2002160432841097239\" target=\"_blank\" rel=\"noopener noreferrer\">this thread</a> from <a href=\"https://x.com/GergelyOrosz\" target=\"_blank\" rel=\"noopener noreferrer\">@GergelyOrosz</a>."}}],["$","pre","57",{"className":"code-block","data-lang":"json","children":["$","code",null,{"children":"{\n \"id\": \"traj_itn5hyej5mi6\",\n \"task\": { \"title\": \"Fix module resolution issues\" },\n \"status\": \"completed\",\n \"chapters\": [\n {\n \"title\": \"Work\",\n \"events\": [\n {\n \"type\": \"decision\",\n \"content\": \"Thread shadowMode through protocol layers\",\n \"raw\": { \"reasoning\": \"Devin review found fields were silently dropped...\" },\n \"significance\": \"high\"\n }\n ]\n }\n ],\n \"retrospective\": {\n \"summary\": \"Fixed issue by threading shadow options through all layers\",\n \"confidence\": 0.9\n }\n}"}]}],["$","p","58",{"dangerouslySetInnerHTML":{"__html":"The <a href=\"https://github.com/AgentWorkforce/trajectories/\" target=\"_blank\" rel=\"noopener noreferrer\">AgentWorkforce/trajectories</a> repo provides a CLI tool that agents can easily understand. It becomes invaluable when an agent needs to revisit a previously-worked feature or investigate a bug. By finding the relevant trajectory, the agent gains instant context. These trajectories are also useful to humans reviewing the codebase."}}],["$","h3","59",{"children":"The Human's New Role"}],["$","p","60",{"dangerouslySetInnerHTML":{"__html":"Coordinating with multiple agents and seeing output fly in at rapid speed is exhilarating. Being able to remove myself as the bottleneck is a huge benefit. This necessitates that the <strong>planning phase is carefully and meticulously done</strong> to ensure agents have well-defined tasks with edge cases thought out."}}],["$","p","61",{"dangerouslySetInnerHTML":{"__html":"It also means the <strong>review phase is paramount</strong>. Having agents self-review and cross-review is an effective strategy."}}],["$","p","62",{"dangerouslySetInnerHTML":{"__html":"---"}}],["$","h2","63",{"children":"Try It Yourself"}],["$","p","64",{"dangerouslySetInnerHTML":{"__html":"Want to experiment with multi-agent orchestration? You can <a href=\"https://agent-relay.com\" target=\"_blank\" rel=\"noopener noreferrer\">get started with Agent Relay Cloud</a> or set it up locally in seconds."}}],["$","p","65",{"dangerouslySetInnerHTML":{"__html":"Just tell your CLI agent to run:"}}],["$","pre","66",{"className":"code-block","data-lang":"bash","children":["$","code",null,{"children":"curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md"}]}],["$","p","67",{"dangerouslySetInnerHTML":{"__html":"The agent will read the setup guide and configure everything, then let it cook."}}],["$","p","68",{"dangerouslySetInnerHTML":{"__html":"Check out the <a href=\"https://docs.agent-relay.com\" target=\"_blank\" rel=\"noopener noreferrer\">docs</a> for more details, or hit me on X with any thoughts or questions. I'm all for a discussion: <a href=\"https://x.com/khaliqgant\" target=\"_blank\" rel=\"noopener noreferrer\">@khaliqgant</a>"}}],["$","h2","69",{"children":"References"}],["$","ul","70",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<a href=\"https://cursor.com/blog/scaling-agents\" target=\"_blank\" rel=\"noopener noreferrer\">Cursor: Scaling Agents</a> – An interesting perspective on how Cursor is thinking about agent scaling and the challenges involved"}}]}],["$","ul","71",{"children":["$","li",null,{"dangerouslySetInnerHTML":{"__html":"<a href=\"https://x.com/pbteja1998/status/2017662163540971756\" target=\"_blank\" rel=\"noopener noreferrer\">@pbteja1998 on multi-agent swarms with OpenClaw</a> – Exciting developments in how people are experimenting with multi-agent orchestration"}}]}]]}]]}],["$","hr",null,{"style":{"border":"none","borderTop":"1px solid var(--border-subtle)","margin":"48px 0"}}],["$","h2",null,{"children":"Stay Updated"}],["$","p",null,{"children":["Follow us on ",["$","a",null,{"href":"https://twitter.com/agent_relay","target":"_blank","rel":"noopener noreferrer","children":"Twitter"}]," for the latest updates and more content."]}],["$","$L2",null,{"src":"https://platform.twitter.com/widgets.js","strategy":"lazyOnload"}]]}]}]]}],["$","footer",null,{"className":"footer","children":[["$","div",null,{"className":"footer-inner","children":[["$","div",null,{"className":"footer-brand","children":[["$","a",null,{"href":"/","className":"footer-logo","children":[["$","svg",null,{"width":24,"height":24,"viewBox":"0 0 100 100","fill":"none","xmlns":"http://www.w3.org/2000/svg","className":"\n transition-all duration-300\n drop-shadow-[0_0_8px_rgba(0,217,255,0.3)]\n \n ","aria-label":"Agent Relay Logo","role":"img","children":[["$","path",null,{"d":"M30 80 L 50 20 L 70 80","stroke":"#00d9ff","strokeWidth":"5","strokeLinejoin":"round","strokeLinecap":"round","fill":"none"}],["$","line",null,{"x1":"40","y1":"50","x2":"60","y2":"50","stroke":"#00d9ff","strokeWidth":"5","strokeLinecap":"round"}],["$","path",null,{"d":"M50 20 L 50 80","stroke":"#00ffc8","strokeWidth":"2.5","strokeLinecap":"round","opacity":"0.7"}],["$","path",null,{"d":"M50 20 C 80 20 80 50 50 50 L 80 80","stroke":"#00ffc8","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","fill":"none","opacity":"0.7"}]]}],["$","span",null,{"className":"logo-text","children":"Agent Relay"}]]}],["$","p",null,{"children":"Orchestrate AI agents like a symphony."}]]}],["$","div",null,{"className":"footer-links","children":[["$","div",null,{"className":"footer-column","children":[["$","h4",null,{"children":"Product"}],["$","a",null,{"href":"/#features","children":"Features"}],["$","a",null,{"href":"/pricing","children":"Pricing"}],["$","a",null,{"href":"https://docs.agent-relay.com/","children":"Documentation"}],["$","a",null,{"href":"/changelog","children":"Changelog"}]]}],["$","div",null,{"className":"footer-column","children":[["$","h4",null,{"children":"Company"}],["$","a",null,{"href":"/about","children":"About"}],["$","a",null,{"href":"/blog","children":"Blog"}],["$","a",null,{"href":"/careers","children":"Careers"}],["$","a",null,{"href":"/contact","children":"Contact"}]]}],["$","div",null,{"className":"footer-column","children":[["$","h4",null,{"children":"Legal"}],["$","a",null,{"href":"/privacy","children":"Privacy"}],["$","a",null,{"href":"/terms","children":"Terms"}],["$","a",null,{"href":"/security","children":"Security"}]]}]]}]]}],["$","div",null,{"className":"footer-bottom","children":[["$","p",null,{"children":"© 2026 Agent Relay. All rights reserved."}],["$","div",null,{"className":"social-links","children":[["$","a",null,{"href":"https://github.com/AgentWorkforce/relay","aria-label":"GitHub","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"currentColor","children":["$","path",null,{"d":"M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z"}]}]}],["$","a",null,{"href":"https://twitter.com/agent_relay","aria-label":"Twitter","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"currentColor","children":["$","path",null,{"d":"M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"}]}]}]]}]]}]]}]]}],[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/629d21db423c78a2.css","precedence":"next","crossOrigin":"$undefined"}]]],null],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","blog","children","let-them-cook-multi-agent-orchestration","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[null,["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","blog","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined"}]],null]},[[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/ad96af0f7a47b705.css","precedence":"next","crossOrigin":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[]}]}]}]],null],null],["$L5",null]]]]
5
+ 5:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration | Agent Relay Blog"}],["$","meta","3",{"name":"description","content":"Multi-agent orchestration is a step change in how tasks get done. After 6 weeks of building with agent swarms, here's what works, what breaks, and why the planning phase becomes everything."}],["$","meta","4",{"property":"og:title","content":"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration"}],["$","meta","5",{"property":"og:description","content":"What I learned watching AI agents coordinate, communicate, and occasionally fall apart"}],["$","meta","6",{"property":"og:url","content":"https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration"}],["$","meta","7",{"property":"og:site_name","content":"Agent Relay"}],["$","meta","8",{"property":"og:image","content":"https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration.svg"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Let Them Cook: Multi-Agent Orchestration - Agent Relay"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2026-02-04"}],["$","meta","14",{"property":"article:author","content":"Khaliq Gant"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration"}],["$","meta","17",{"name":"twitter:description","content":"What I learned watching AI agents coordinate, communicate, and occasionally fall apart"}],["$","meta","18",{"name":"twitter:image","content":"https://agent-relay.com/blog/let-them-cook-multi-agent-orchestration.svg"}],["$","link","19",{"rel":"apple-touch-icon","href":"/apple-icon.png?9e7a840704165ca6","type":"image/png","sizes":"256x256"}]]
6
+ 1:null