OD '26
All Chapters

PART III: SYSTEMS & TEAMS · SECTION 12

Multi-Agent Design Teams

Orchestrating parallel agents for a single design goal

Reading time

18 min

Chapter

12

Multi-Agent Design Teams

Orchestrating parallel agents for a single design goal

Splitting a design goal across role-specialized agents produces more variations faster, but only pays off when the coordination cost is lower than the parallelism gain. This chapter shows you how to think about agents as a team: an orchestrator assigns roles, each agent works in parallel inside the same Open Design project, and you merge the outputs at review. It also tells you when to ignore all of that and go back to one agent.

12.1 Why Run Agents in Parallel

A single agent iterates one artifact at a time. It generates, you review, it revises. That loop works perfectly for a single polished output. But there are tasks where you don't want one good answer---you want ten options fast: hero treatments, copy variants, motion pacing alternatives, color-scheme explorations. That's the moment agents as a team become worth the overhead.

Open Design's daemon is a Node 24 Express server with SSE streaming (covered in Chapter 02). It accepts concurrent requests over separate SSE channels and stores each artifact independently in the .od/projects/<id>/ layout. As of September 2026, the daemon does not enforce a concurrency ceiling at the application layer---it relies on the underlying Node event loop and your provider's rate limits. That means you can connect multiple agent CLIs to the same project simultaneously.

The practical benefit: layout exploration that would take three sequential loops in a solo session---generate, review, repeat---can run in one round when three agents fan out in parallel. The coordination cost is real: you write a clear brief for each role, wait for the slower agent to finish, and then do a merge pass. That cost is low when you have seven variations to produce. It's high when you have one.

There's also a quality argument for the variation case specifically. When you run one agent through three hero options sequentially, each option is influenced by the previous one---the agent anchors on what it just made. When three agents each produce one option independently, you get genuine divergence. That divergence is the product; it's why you parallelized in the first place.

Use the parallel pattern when the task is inherently parallel---variation sets, A/B treatments, multi-section drafts---and use a single agent for single outputs. The decision point is roughly: if you'd review all outputs at once anyway, fan out.

Orchestrator
Assigns goal + role brief to each agent
Layout
HTML prototype
Variations
HTML fragments ×3
Copy
Markdown doc
Review + Merge
Compare artifacts, pick or combine outputs
Figure 12.1 — Multi-agent topology: the orchestrator fans work to three role agents (Layout, Variations, Copy) running in parallel; all outputs converge at a single review and merge step. Schematic illustration (not a screenshot).
Orchestrator

Assigns goal + role brief to each agent

Role Agents

Layout, Variations, Copy — run in parallel

Review + Merge

Compare artifacts, pick or combine outputs

Figure 12.2 — The fan-out/fan-in loop. The orchestrator distributes the goal; role agents work concurrently; the review step pulls outputs together into one decision.

12.2 Assigning Roles

Before you open a terminal, define the roles. A role has three parts: a name, a responsibility boundary, and an artifact target. The boundaries matter because agents don't coordinate with each other---they only read the brief you gave them. If two roles overlap, you'll get two artifacts solving the same problem and a harder merge.

Here's the role framework I use for visual design goals. It maps to the artifact types Open Design generates natively (web prototypes, motion graphics, copy layers), so each role produces something the preview can render independently.

Design Agent Roles — as of September 2026
Role Responsibility Artifact target Suggested agent
Orchestrator Writes the goal brief, assigns roles, reviews and merges outputs None (human or lead agent) Claude Code or human
Layout Page structure, component hierarchy, grid, spacing Single-page HTML prototype Claude Code (capable proprietary)
Variations Three to five alternative hero or section treatments Multiple single-component HTML fragments OpenCode (MIT, cost-effective)
Copy Headline, subheading, CTA, and microcopy options Markdown copy document or HTML text overlay Cursor (fast setup, strong language model)
Motion HyperFrames animation of key transitions or a hero sequence HyperFrames HTML artifact (renders to MP4) Claude Code (HyperFrames prompt complexity)

The Orchestrator role doesn't have to be an agent. In most runs I play orchestrator myself: I write the goal brief, paste role-specific sub-briefs into each agent CLI, and do the review pass manually. Automating the orchestrator step is possible---you could use Claude Code as an agent-of-agents, delegating sub-briefs programmatically via MCP---but it adds a layer of indirection that usually slows down small teams more than it helps. The value of a human orchestrator is judgment at merge time: knowing that Variation-B fits better than Variation-A for reasons no brief could specify.

12.3 Routing Roles to Agents

Chapter 11 covers the full agent comparison. The routing logic for multi-agent design work follows one principle: use capable proprietary agents for work that requires the most context-holding and the highest quality ceiling; use cheap or open agents for work that needs volume. This isn't a permanent hierarchy---agent capabilities and pricing churn monthly, and the table below will age. It reflects the best routing I've found as of September 2026.

Role-to-Agent Routing — as of September 2026
Role Recommended agent Rationale Cost tier
Layout (hero work) Claude Code (Anthropic Pro/Max) Complex layout requires deep context and multi-step reasoning about design hierarchy $20–$200/month
Variations (exploration) OpenCode v1.17.3 (MIT) Volume-first; acceptable if individual variation quality is lower; self-hosted models keep cost near zero Free (self-hosted)
Copy Cursor Pro Low setup overhead; strong language model access via Anthropic; copy work rarely needs multi-file context $20/month
Motion (HyperFrames) Claude Code HyperFrames HTML animation prompts are complex; use the same capable agent as Layout unless budget is tight $20–$200/month
My Take

Multi-agent design teams deliver exceptional value for variation-heavy exploration. They excel when producing extensive hero concepts for side-by-side evaluation. While coordination overhead outweighs benefits for a single isolated deliverable, that friction recedes during inherently parallel tasks. Collaborative agent setups justify their coordination investment when you genuinely plan to compare all variations in parallel. When a workflow requires manual stitching between fragmented outputs, return to a single focused agent.

12.4 Running the Team

The walkthrough below runs the Layout, Variations, and Copy roles in parallel against one design goal: a landing page for a local-first design tool. All three agents connect to the same Open Design project via MCP (Model Context Protocol), which was covered in Chapter 10. Each agent generates into a separate artifact within the project.

1

Create the project. Open a new Open Design project from the UI or CLI. Note the project ID from the URL or the .od/projects/ directory. All three agents will target this project ID.

$ od project new "Landing Page - Local-First Tool"
# Output: project created at .od/projects/lp-local-first-001/
2

Write the orchestrator brief. Before opening any agent CLI, write a shared goal brief that all role agents will receive, plus individual role briefs that constrain each agent to their boundary. Paste-ready prompts below.

# Shared goal brief (paste into every role agent first)
Goal: a landing page for a local-first design tool.
Brand: use Open Design's own DESIGN.md (load from project).
Constraints: single-page HTML, no external dependencies,
  self-contained artifact, dark theme.

# Layout agent brief
Role: Layout.
Your job: page structure and hero section only.
Deliver: one single-page HTML prototype with
  structural sections (hero, features, CTA, footer)
  and placeholder content. No copy, no motion.

# Variations agent brief
Role: Variations.
Your job: three alternative hero section treatments.
Deliver: three separate HTML fragments, each a
  standalone hero section. Label them Variation-A,
  Variation-B, Variation-C.

# Copy agent brief
Role: Copy.
Your job: headline, subheading, CTA, and feature
  copy options.
Deliver: a Markdown document with three sets of
  headline + subheading + CTA. Label them Copy-1,
  Copy-2, Copy-3.
3

Connect agents and stagger the starts. Open three separate terminal sessions, each with a different agent CLI connected to Open Design via od mcp install <agent>. Start the Layout agent first, wait five to ten seconds, then start Variations, then Copy. This stagger prevents all three from hitting the model provider simultaneously and saturating the shared rate limit.

# Terminal 1: Layout agent (Claude Code)
$ od mcp install claude-code
# Paste shared goal brief + layout brief, submit

# Terminal 2: Variations agent (OpenCode) — start 5-10s later
$ od mcp install opencode
# Paste shared goal brief + variations brief, submit

# Terminal 3: Copy agent (Cursor) — start 5-10s later
$ od mcp install cursor
# Paste shared goal brief + copy brief, submit
4

Monitor the SSE streams. Each agent's generation streams into a separate artifact in the Open Design preview. Watch the project artifact list in the UI: you should see three artifacts populating in near-parallel. The Layout artifact will likely finish last because it's the most complex; the Copy artifact (Markdown) will finish first.

Open Design workspace showing a fictional parallel generation run with three artifact writers and SSE progress events
Figure 12.3 — Active parallel generation during streaming execution. The prompt asks for three directions, the assistant turn lists the active artifact file, and the preview shows SSE write_file events with per-direction progress while the run is still streaming. Staged demo capture (fictional project) from Open Design v0.11.0, June 2026 --- retained as a historical illustration of the SSE stream view.
5

Wait for all three agents to finish. Don't start the merge pass while any agent is still generating. A partial Layout artifact plus the final Copy document produces a confusing review. Give each agent a clear window to complete, then move to the merge step.

As of September 2026, multiple agents sharing the same Open Design daemon also share the same BYOK proxy and the same provider rate-limit quota. If all three agents send model-inference requests at the same moment, they compete for the same API quota. The result is cascading 429 errors and partial artifacts. Stagger starts by five to ten seconds per agent, and if you're using the same provider for all roles, consider spreading roles across different providers via the BYOK configuration in Chapter 10.

12.5 Merging and Reviewing

The merge step operates as an editorial design review because Open Design lacks a built-in artifact merge tool as of September 2026. You open each artifact in the sandboxed preview, decide which structural choices from Layout to keep, which hero treatment from Variations fits best, and which copy set from Copy to apply, then instruct one agent (typically the Layout agent, which maintains the structural artifact) to integrate the selected copy and hero treatment. The merge executes as a prompt instructing an agent rather than an automated file operation.

Effective merge flow:

# Round 2 prompt to Layout agent
Keep the current page structure.
Replace the hero section with Variation-B
  (the split layout with the terminal screenshot).
Apply Copy-2 (headline: "Design on your machine").
Export the merged artifact as a self-contained HTML file.

Ineffective merge flow:

# Asking a fresh agent to "merge" three artifacts
Here are three HTML files. Combine them into
  one landing page.
[paste Variation-A, Variation-B, Variation-C, Layout, Copy-1...]
# Result: agent produces a fourth artifact that
# misses the point of all three

The effective merge uses the Layout agent as the owner of the final artifact and treats the other outputs as references it incorporates via a clear revision prompt. The ineffective merge hands the merge problem to a new agent with too much context and no clear decision.

Multi-Agent Troubleshooting
Symptom Cause Fix
One or more agents return a 429 error mid-generation Concurrent requests exceeded provider rate limit; all agents share the BYOK proxy quota Stagger agent starts by 5–10 seconds; or route roles to different providers in BYOK config (see Chapter 10)
Artifact preview is blank after generation completes SSE stream completed but the artifact parser hit a malformed output; or the sandboxed iframe failed to load the artifact Reload the artifact in preview; if blank persists, ask the agent to regenerate with a simplified prompt; check browser console for sandbox errors
Two agents write to the same artifact, producing corrupted output Role briefs overlapped; both agents targeted the same artifact name or slot Ensure role briefs give each agent a distinct artifact name; re-run the affected agent with a corrected brief
SQLite lock error or daemon crash under concurrent load Multiple agents writing to .od/app.sqlite simultaneously; better-sqlite3 uses synchronous writes that can conflict Reduce concurrency to two agents at a time; stagger starts; restart the daemon after a crash and re-run from the last stable artifact

12.6 Team Workspace: One Shared Studio

Everything in this chapter so far has been one person briefing several agents. v0.18.0 (released August 5, 2026) added the other axis: several people sharing one studio. Team Workspace is a shared home that sits next to your personal workspace in the same desktop app. You invite colleagues through a seat-aware invite flow --- each seat carries a role --- and the whole team works under one shared Open Design Cloud account.

A project you share into the team workspace becomes a live read-only mirror for your teammates. Their app auto-pulls as you work: presence avatars show who is inside the project, transfer progress is visible while artifacts sync, and comments flow both ways --- including from members who only have read-only access. Design systems, plugins, and skills can be shared to the team as well, so the house style travels with the workspace instead of living in one maintainer's home directory.

Billing follows the workspace. Balances, top-ups, and per-run charges are attributed to whichever workspace is active, and the plan nameplate in the app shows which pocket you're spending from. As of August 13, 2026, the team seat fee is $5 and Team Pro runs about $105 per seat per month. Chapter 14 works through the full cost model.

Team Workspace Capabilities (v0.18.0+, as of September 2026)
Capability What it does Why a design team cares
Shared projects Projects shared to the workspace appear as live read-only mirrors that auto-pull as the owner works Reviewers see current work without exports, screenshots, or "latest version" messages
Presence Avatars show who is inside a project; transfer progress is visible during sync You know a teammate is mid-review before you regenerate the artifact they're reading
Comments Comments flow both ways, including from read-only viewers Feedback lands on the artifact itself instead of in a separate chat thread
Shared toolkit Design systems, plugins, and skills can be shared to the team The house brand contract and recipes reach every member's agents without manual copying
Workspace billing Charges and balances attribute to the active workspace; the nameplate shows the active plan Finance can separate personal experimentation from team spend
Workspace-scoped MCP (0.19.0) MCP project operations attach to the signed-in workspace Coding agents can drive team projects without anyone pasting project IDs across machine boundaries
Budget caps (0.21.1) Opt-in cumulative spending caps, enforced with background catch-up Budget caps keep unexpected fan-out costs manageable within standard project accounting
Warm opens (0.21.1) Team project opens are served from a warm cache Reviewers land in current state instead of watching a sync bar

Operating the workspace: scope, caps, and warm opens

Three later releases turned Team Workspace from a sharing surface into something you can operate. First, scope. Since 0.19.0, MCP project operations attach to the signed-in workspace. That is a bigger deal for multi-agent teams than it sounds: your coding agents reach Open Design through the same MCP server whether they are working on personal projects or team ones, and what changed in 0.19.0 is that those operations now resolve against the workspace you are signed into. An agent briefed to update a team project finds it without anyone pasting project IDs across machine boundaries. The fan-out pattern from earlier in this chapter survives contact with the team tier --- the orchestrator brief just needs to name workspace-scoped projects.

Second, spend. 0.21.1 added opt-in cumulative budget caps for team workspaces. A cap is a ceiling on cumulative workspace spend, enforced with background catch-up: runs that were mid-flight when the cap tripped reconcile after the fact rather than being amputated mid-generation. For a team running the kind of parallel variation sweep this chapter describes, the cap is the difference between a runaway fan-out being an incident and being a line item. It is opt-in, so turn it on deliberately. The default posture is still the workspace-billed wallet from 0.18.0, where the plan nameplate in the app shows which pocket each run draws from --- personal balance or team balance --- before you spend it.

Third, latency and cleanup. 0.21.1 serves team project opens from a warm cache, so a reviewer clicking into a shared mirror lands on the current state instead of watching transfer progress. And run cancellation now cleans the agent's process tree --- cancel a run and the agent behind it is actually gone. That matters most in exactly the situation teams create: several agents running against shared projects, someone hits stop before a review, and nobody wants an orphaned process quietly writing artifacts after the meeting has moved on. Between warm opens and honest cancellation, the "reviewers watch work land live" promise from 0.18.0 finally behaves the way the demo implied.

The features above landed across three releases: 0.18.0 (the workspace itself, shared mirrors, workspace billing), 0.19.0 (workspace-scoped MCP operations), and 0.21.1 (budget caps, warm opens, process-tree cleanup). The v0.18.0 release notes at github.com/nexu-io/open-design remain the canonical description of the invite flow and seat roles.

The honest caveat: the first week was rough. A presence heartbeat bug produced a 502 storm against the sync service, and project grids loaded slowly. Both were fixed in 0.18.1 (August 6, 2026); 0.19.x goes further by bounding sync fan-out and batching background pulls. Treat the collaboration layer as young --- pilot with one team first.

Where does this leave the chapter's mental model? Agents as a team is orchestration --- one person directing multiple agents toward one goal. Team Workspace is the shared reality those agents write into, where multiple humans review and reuse what the agents produce. Different axes, same .od project: your fan-out generates, your teammates watch it land.

My Take

Shared design systems are where Team Workspace pays for itself. The mirrors and comments are conveniences; the shared toolkit is the structural win. A house DESIGN.md shared to the team stops being a file you hand off and hope people use --- it becomes a live artifact every member's agents read on the next run. I've watched house styles drift within weeks when distribution was manual. If your org has any brand-governance pain at all, this is the reason to look at the team tier.

12.7 When Not to Use a Team

Multi-agent design isn't always the right call. The coordination cost is real: writing per-role briefs, managing multiple terminal sessions, staggering starts, and doing a deliberate merge pass. That overhead is worth it when you're exploring a wide design space. It isn't worth it in these cases:

  • Single-artifact outputs. If the deliverable is one polished landing page, one reviewed deck, or one branded email, a single capable agent iterated through the four-beat loop will outperform a three-agent fan-out on quality and time.
  • Tight feedback loops. If you're iterating every five minutes on a detail, switching between three CLI sessions kills the flow. Stay in one agent.
  • Unclear role boundaries. If you can't write clean, non-overlapping role briefs in under ten minutes, the task isn't structured enough to parallelize. Clarify the goal first.
  • Provider-limited environments. If your BYOK setup is rate-limited or you're on a single low-quota API key, the contention overhead makes multi-agent slower than sequential.
My Take

I treat agents as a team primarily during exploration phases before locking a direction. Once the design path is set, I return to a single agent to drive execution to completion. The multi-agent workflow functions effectively when each agent handles a distinct role simultaneously. Assigning multiple agents to identical redundant tasks creates lottery-style churn rather than collaborative leverage.

The test is simple: could you review all the outputs side by side in one sitting and pick a winner in under thirty minutes? If yes, parallelism earns its overhead. If the outputs require reconciliation, context-sharing, or sequential refinement before any of them are reviewable, you've added coordination for negative gain. Go back to one agent, define the goal more tightly, and run the generate-preview-iterate-export loop from Chapter 03.

As of September 2026, multi-agent design orchestration in Open Design functions primarily as an operational practice rather than a packaged product feature. While the platform does not include an orchestration UI, agent scheduler, merge tool, or artifact diff viewer, it provides a daemon supporting concurrent generation, a project model where multiple artifacts coexist inside a single .od/projects/<id>/ directory, and a hosted Team Workspace (introduced in 0.18.0) where reviewers share a unified studio. The orchestration layer---briefing agents, staggering runs, and evaluating outcomes---remains under your direct procedural control.

Next: Chapter 13 takes the patterns from this chapter---fan-out, role assignment, merge review---and shows them running inside four complete end-to-end workflows: a stakeholder review package, a legacy app brand refresh, a Figma-to-component-library migration, and a motion and image campaign. Each case names what went wrong and how it was fixed, so you can take the arc directly into your own work.

Next Chapter

Case Studies

Four real workflows from prompt to shipped artifact

Continue Reading

©2026 Mehran Mozaffari. Free for personal/noncommercial use (CC BY-NC-ND 4.0); commercial license required for business use.