docs(orchestration): add multi-agent orchestration pages#84
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
I'm starting a first review of this pull request. You can view the conversation on Warp. I completed the review and no human review was requested for this pull request. Comment Powered by Oz |
There was a problem hiding this comment.
Overview
This PR adds new orchestration concept and how-to documentation plus cross-links from existing agent platform pages.
Concerns
- The CLI fan-out example captures a parent run ID but never uses it when launching children, so the example does not actually create an orchestration hierarchy.
- The fleet cancellation example publishes a parent-run CLI filter that the PR description identifies as unverified; this should be confirmed or replaced with the supported API/CLI surface before launch.
Verdict
Found: 0 critical, 2 important, 0 suggestions
Request changes
Comment /oz-review on this pull request to retrigger a review (up to 3 times on the same pull request).
Powered by Oz
- Replace broken CLI fan-out example (no `--parent-run-id` flag on
`oz agent run-cloud`) with a curl-based scripted fan-out that uses the
public `POST /agent/runs` endpoint with `parent_run_id`. Add a note
pointing script-driven callers at the API.
- Replace the fleet-cancellation example: use `oz run list --ancestor-run`
(supported) instead of the nonexistent `--parent-run-id` flag, and
curl the public `POST /agent/runs/{runId}/cancel` endpoint instead of
the nonexistent `oz run cancel` CLI command.
- Remove the SSE and `/agent/messages` / `/agent/events` API sections
(still internal-only / dogfood-gated) and reframe lifecycle events
and messaging conceptually.
- Add a new "Retrieving conversations and artifacts" section covering
`GET /agent/runs?ancestor_run_id=`, `GET /agent/runs/{runId}`,
`GET /agent/runs/{runId}/conversation`, and the `artifacts` field on
RunItem for both parent and child runs.
- Fix `parent_run_id` query param to `ancestor_run_id` everywhere.
- Replace "service account" with "agent identity" in deployment-patterns.
- Senior-writer pass: tighten frontmatter descriptions, standardize
em-dash usage in bold-term lists, ALL_CAPS placeholders, drop
ambiguous modal verbs.
Addresses PR #84 review comments r3253425053 and r3253425056.
Co-Authored-By: Oz <oz-agent@warp.dev>
Revision passI addressed every actionable review comment and applied Slack-thread feedback. Summary of changes: Review comments
Slack-thread + internal-only scrub
New: conversations and artifacts in the APIAdded a "Retrieving conversations and artifacts" section to Senior-writer passTightened frontmatter descriptions to single-sentence standalone summaries, standardized em-dash usage in bold-term lists, replaced ambiguous modal verbs ("may," "could"), switched placeholders to ALL_CAPS, and kept the Validation
Open questionsNone blocking. Optional follow-up: when the public |
|
|
||
| The supported event types are: | ||
|
|
||
| * **`run_in_progress`** — the run started executing (or restarted after being paused or blocked). |
There was a problem hiding this comment.
do we need to expose these to the users?
Copy passAddressed the feedback in commit
Validation: |
|
Applied the approved audit fixes (commit 80b7699):
Judgment calls: the desktop management view's only orchestration-aware surface is the child agent status card (local children are excluded from the navigation list via |
rachaelrenk
left a comment
There was a problem hiding this comment.
Copy/style pass on orchestration docs: a few suggested edits for user-facing terminology and local/cloud run distinctions, plus confirmation questions for launch-only API/CLI surfaces.
Apply the suggested edits left on PR #84: - orchestration/index.mdx: 'For how to start' -> 'To learn how to start'; 'a different model or harness' -> 'a different model or agent runtime'; 'Children can also use a different harness...' -> 'Children can also run with a different agent runtime...'; 'The states a child run can reach are:' -> 'The main user-visible states a child run can reach are:'; 'every parent and child is a normal Oz run' -> 'every parent and child is tracked as its own conversation or run'. - orchestration/multi-agent-runs.mdx: 'Every parent and child run is a normal Oz run.' -> 'Every parent and child started through the Oz API is tracked as an Oz run.' - agent-notifications.mdx: split the orchestration intro sentence into two for scannability. - oz-web-app.mdx: 'Each sub-agent row' -> 'Each child agent row' in prose while keeping 'Sub-agents' as the UI tab name. Co-Authored-By: Oz <oz-agent@warp.dev>
rachaelrenk
left a comment
There was a problem hiding this comment.
One small clarity suggestion for the orchestration location heading.
|
|
||
| The parent and child each have an independent **run** with its own lifecycle, transcript, conversation, and credit usage. The management view, web app, and API all surface a parent alongside its children. | ||
|
|
||
| ### Where each side can run |
There was a problem hiding this comment.
This heading could be more explicit about the parent/child relationship.
| ### Where each side can run | |
| ### Where parent and child agents can run |
rachaelrenk
left a comment
There was a problem hiding this comment.
One small wording suggestion for the run state transition intro sentence.
rachaelrenk
left a comment
There was a problem hiding this comment.
One small wording suggestion for the common patterns intro.
rachaelrenk
left a comment
There was a problem hiding this comment.
Follow-up suggestion to make the Common patterns section intro better introduce the H3 pattern list.
|
|
||
| ## Common patterns | ||
|
|
||
| Orchestration primitives are general-purpose. Teams typically compose them into a handful of recurring patterns. |
There was a problem hiding this comment.
Building on the previous wording note: since this H2 introduces the pattern-specific H3s below, this transition can more directly frame the list.
| Orchestration primitives are general-purpose. Teams typically compose them into a handful of recurring patterns. | |
| The following patterns show common ways to structure parent and child agents, depending on whether you need parallel execution, review, dependency ordering, or loose coordination. |
There was a problem hiding this comment.
Applied the suggested wording in b52a764. The Common patterns intro now reads: 'The following patterns show common ways to structure parent and child agents, depending on whether you need parallel execution, review, dependency ordering, or loose coordination.'
rachaelrenk
left a comment
There was a problem hiding this comment.
I reviewed the new multi-agent orchestration docs with a focus on clarity, user-facing terminology, launch accuracy, and consistency with the docs style guide. I left suggested edits and comments to clarify the parent/child model, run state observability, notifications for child agents, and where orchestrated runs appear across Warp, the Oz web app, the CLI, and the API. I also flagged a few launch-surface details for confirmation, including mode: orchestrate and oz run list --ancestor-run.
I pushed a few scoped commits directly to keep well-understood changes moving:
• Normalized bold-term list separators from em dashes to hyphens across the PR.
• Added AEO citation summaries to the new orchestration pages.
• Added direct links to relevant Oz web app pages, including the Runs and Agents pages.
• Made small wording improvements where the docs benefited from more explicit, action-oriented phrasing.
Apply all 9 of @rachaelrenk's suggested edits on PR #85 and run a final senior-copywriter pass for consistency across the three handoff pages. index.mdx - Intro: "your local Warp terminal" -> "a local Warp session" so the intro talks about a session rather than the terminal application. - "Third-party harness coverage" -> "Third-party agent runtime coverage"; same swap in the two bullets underneath. "Harness" is internal vocabulary; "agent runtime" is the user-facing term. - "spiraled into work" -> "grown into work" (less idiomatic). - "Managing Cloud Agents" -> "Managing cloud agents" in Related pages to match the sentence-case nav style used elsewhere. - Consistency polish: "Fork a cloud conversation into your local terminal" -> "into a local Warp session" so the cloud-to-local bullet uses the same terminology as the rewritten intro. local-to-cloud.mdx - Intro: "Hand off a conversation from the Warp terminal" -> "Hand off a local Warp conversation" (same reason as above). - "This direction is the right move when:" -> "Use this handoff direction when:" (less conversational, matches docs voice). - Post-handoff pointer: linked the management view doc -> deep-linked the [Runs page](https://oz.warp.dev/runs) in the Oz web app, which matches the pattern added in PR #84. - "Cloud Agents quickstart" -> "Cloud agents quickstart" (sentence case). cloud-to-cloud.mdx (consistency polish, same patterns Rachael called out in the other two pages) - "This direction is the right move when:" -> "Use this handoff direction when:". - Step 1 of "Sending a follow-up": linked the management view doc -> deep-linked the Runs page in the Oz web app. - Removed a stray duplicate `### Third-party harnesses` heading that was sitting directly above the correct `### Third-party agent runtimes` heading, and inserted a missing blank line before the next `## Inspecting a run that's been handed off` section. - "Managing Cloud Agents" -> "Managing cloud agents" in Related pages. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues. - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken links (2,439 internal links across 321 files). Co-Authored-By: Oz <oz-agent@warp.dev>
The "cross-cutting sidebar PR" that the original PR description referred to doesn't exist — none of the orchestration-launch content is currently registered in `src/sidebar.ts`. PR #84 (multi-agent) doesn't touch the sidebar either; only PR #86 (memory) adds its own entries. Following that pattern: register the three handoff pages here so they actually appear in the docs sidebar when this branch merges. src/sidebar.ts - Added a new "Handoff" collapsible group inside the "Oz Cloud Agents & Orchestration" topic, slotted right after "Viewing cloud agent runs" since that's the closest thematic neighbor (it covers `Continue locally` / `/continue-locally`, the cloud-to-local path). The group contains: - Overview -> agent-platform/cloud-agents/handoff - Local to cloud -> agent-platform/cloud-agents/handoff/local-to-cloud - Cloud to cloud -> agent-platform/cloud-agents/handoff/cloud-to-cloud Mirrors the existing collapsible-group shape used by Triggers, Integrations, and Self-hosting in the same section. src/content/docs/agent-platform/cloud-agents/handoff/cloud-to-cloud.mdx - "(from the conversation details panel or the end-of-run tombstone)" -> "(from the conversation details panel or the artifacts shown after the run)". "Tombstone" is the internal code-level term for the post-run view (`shared_session/conversation_ended_tombstone_view.rs`). Even though it shows up in telemetry-event descriptions in `privacy.mdx`, it's not natural user-facing copy. Switched to a plainer reference to the artifacts surfaced after the run. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues on the files this PR touches. (The pre-existing pricing-faqs.mdx warnings are out of scope.) - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken (2,440 links, 322 files). - `npm run build` fails on an UNRELATED orphan page (`agent-platform/cloud-agents/agents.mdx` is not registered in the sidebar). That page was added earlier on this branch by a different PR and is pre-existing breakage on `hyc/orch/handoff` — my edits don't touch it. Co-Authored-By: Oz <oz-agent@warp.dev>
* docs(handoff): add local↔cloud handoff documentation Add a new handoff section under cloud-agents that documents the three directions of handoff supported by the orchestration launch: - Overview (conceptual) explaining what handoff is, the three directions, and what carries over. - Local→cloud (procedural) for promoting a local Warp Agent conversation to a cloud agent run. - Cloud→local (procedural) for picking up a cloud run inside the Warp terminal via /continue-locally and equivalent UI entrypoints. - Cloud→cloud (procedural) for follow-ups that span multiple executions of the same run. Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): scrub internals, drop cloud-to-local, tighten copy Address PR review feedback and Slack-thread direction. - Drop cloud-to-local.mdx; existing fork-to-local docs in viewing-cloud-agent-runs.mdx already cover the capability. Overview now references that page for cloud-to-local. - Scope the snapshot rehydration mechanism in the overview to local-to-cloud and cloud-to-cloud only; cloud-to-local does not apply workspace patches. - Replace the inaccurate `git diff --binary HEAD` capture description in local-to-cloud with a high-level summary that covers tracked and untracked changes without committing to a specific git command. - Soften the local-to-cloud entry point: do not document a specific keyboard shortcut, add a note that the affordance may evolve during the Oz launch rollout. - Strip internal-only details from user-facing copy: GCS paths, manifest filenames, `git apply` mechanics, internal routing names (appended/injected/requeued), API endpoint paths, and rehydration checklist references. - Senior-writer pass: tighten descriptions to 50-160 chars, reduce marketing fluff, normalize cross-references. Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): second editor pass to drop residual internal jargon - Replace 'execution' with 'session' across cloud-to-cloud.mdx so the user-facing unit of work stays 'the run', not the internal model. - Drop 'rehydrate'/'rehydration' in favor of 'restore'/'carry over'; fold the standalone 'Rehydration behavior' section into 'What carries over' in the overview. - Drop the 'server-side' qualifier on 'fork' throughout; users don't care where the fork happens. - Collapse the cloud-to-cloud 'How follow-ups route' state-machine into a single user-facing description; remove the two routing-paths items from troubleshooting since they describe normal behavior, not problems. - Collapse local-to-cloud's 'Verifying the handoff' debugging walkthrough into one sentence pointing readers to the management view. - Cut meta self-descriptions: 'The handoff entry point is integrated into the cloud agent launch flow...' and 'Cloud-to-cloud handoff is automatic...'. - Drop the rollout caveat note on local-to-cloud. - Reduce 'sandbox' references where they leak infrastructure. Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): trim overview description to fit 50-160 char range Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): address audit findings - cloud-to-cloud.mdx: soften per-session timeline claim to API-only (UI render not present) - cloud-to-cloud.mdx: gloss 'ambient agent task' inline for clarity - local-to-cloud.mdx: switch primary credits link to credits page; fix link text casing for access page Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): address Safia's review feedback - index.mdx: drop launch-anchored framing; reframe Directions list as evergreen capability statement; add third-party-harness coverage subsection (cloud<->cloud works on 3P with Continue+input prompt; local->cloud is Warp Agent only). - local-to-cloud.mdx: replace /cloud-agent entry-point claim with the '&' shortcut and the '/handoff' slash command; add note that the model can't be changed during handoff. - cloud-to-cloud.mdx: consolidate duplicate scheduled/integration bullets; add 'same Git branch' detail to workspace-state carryover; add :::caution that handoff requires a prior-execution snapshot; note that local->cloud-originated runs can only be continued by the creating user; scope send-follow-up to the Warp app and drop the Oz-web-app/integration follow-up sections; add third-party harness Continue-button flow; soften per-execution timeline claim (transcript is the source of truth, not the API). Co-Authored-By: Oz <oz-agent@warp.dev> * Update src/content/docs/agent-platform/cloud-agents/handoff/cloud-to-cloud.mdx Co-authored-by: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com> * docs(handoff): apply Rachael's review suggestions and final copy polish Apply all 9 of @rachaelrenk's suggested edits on PR #85 and run a final senior-copywriter pass for consistency across the three handoff pages. index.mdx - Intro: "your local Warp terminal" -> "a local Warp session" so the intro talks about a session rather than the terminal application. - "Third-party harness coverage" -> "Third-party agent runtime coverage"; same swap in the two bullets underneath. "Harness" is internal vocabulary; "agent runtime" is the user-facing term. - "spiraled into work" -> "grown into work" (less idiomatic). - "Managing Cloud Agents" -> "Managing cloud agents" in Related pages to match the sentence-case nav style used elsewhere. - Consistency polish: "Fork a cloud conversation into your local terminal" -> "into a local Warp session" so the cloud-to-local bullet uses the same terminology as the rewritten intro. local-to-cloud.mdx - Intro: "Hand off a conversation from the Warp terminal" -> "Hand off a local Warp conversation" (same reason as above). - "This direction is the right move when:" -> "Use this handoff direction when:" (less conversational, matches docs voice). - Post-handoff pointer: linked the management view doc -> deep-linked the [Runs page](https://oz.warp.dev/runs) in the Oz web app, which matches the pattern added in PR #84. - "Cloud Agents quickstart" -> "Cloud agents quickstart" (sentence case). cloud-to-cloud.mdx (consistency polish, same patterns Rachael called out in the other two pages) - "This direction is the right move when:" -> "Use this handoff direction when:". - Step 1 of "Sending a follow-up": linked the management view doc -> deep-linked the Runs page in the Oz web app. - Removed a stray duplicate `### Third-party harnesses` heading that was sitting directly above the correct `### Third-party agent runtimes` heading, and inserted a missing blank line before the next `## Inspecting a run that's been handed off` section. - "Managing Cloud Agents" -> "Managing cloud agents" in Related pages. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues. - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken links (2,439 internal links across 321 files). Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): second copy polish pass on handoff pages A senior-copywriter follow-up on commit b45a4e8. Focuses on terminology consistency, list parallelism, active voice, and a few style-guide nits caught on the second read. index.mdx - Frontmatter description: "Move an agent conversation between your terminal and the cloud" -> "Move agent work between a local Warp session and the cloud" so the description matches the body intro (which Rachael's review moved to "local Warp session" terminology). - "Directions of handoff" Local-to-cloud bullet: "more compute, longer-running work, or to fan out variants in parallel" -> "more compute, longer-running work, or parallel variants of the same task". Now all three list items are parallel noun phrases. - "Workspace state" bullet: "The cloud-to-local direction does not currently apply" -> "doesn't currently apply" (contractions are encouraged in the style guide for an approachable tone). local-to-cloud.mdx - "Use this handoff direction when:" list: first bullet started with "The task is going to run for a long time..." while the other three start with "You want...". Rewrote it to "You have a long-running task and don't want to keep your laptop awake." so all four bullets open the same way. - Step 1: "trigger handoff with the `&` shortcut or the `/handoff` slash command" -> "press `&` or run the `/handoff` slash command". Direct verbs match the style guide pattern for keyboard / slash commands. - Step 2: "Pick the environment whose..." -> "Pick the one whose..." (avoids repeating "environment" right after the bold header). "create one first and add" -> "create one and add" ("first" was doing no work). - Post-steps prose: "After submission, the cloud agent applies your workspace snapshot" -> "After you submit, the cloud agent...". Active voice; readers don't talk about "submission." - Troubleshooting (uncommitted changes): "Without it, the conversation can't be forked" -> "Otherwise, the conversation can't be forked". "Without it" had a fuzzy antecedent; "Otherwise" reads cleanly off the preceding sentence. cloud-to-cloud.mdx - "Use this handoff direction when:" list: first bullet "A cloud agent finished and you want to send a follow-up after the session has ended." -> "You want to send a follow-up to a cloud agent after its session has ended." Now parallel with the second bullet ("You want to continue an ambient agent run..."). - Cleaned up three lingering uses of "execution" that the earlier internals scrub missed. All three were re-introduced when applying Safia's audit-fix feedback in e4bdd4b. Replaced with "session": - "the new execution runs on the same Git branch as the prior session" -> "the new session continues on the same Git branch" (avoids both the internal term and the "new ... prior" cycle). - ":::caution Cloud-to-cloud handoff relies on a snapshot from the prior execution" -> "...the prior session". - "Click into the run to see the full transcript: each execution appears in order, and you can scan the transcript to see where one execution ended and the next began. Per-execution timestamps aren't currently exposed in the API..." -> all three "execution"s -> "session" / "Per-session". - "What carries over" trailing sentence: "...proceeds with what it could before continuing to your follow-up." -> "...rather than starting over silently." Now parallel with the same sentence on the other two handoff pages. - "Sending a follow-up" lead-in: dropped the orphan third sentence ("Send-follow-up support is available in the Warp app.") and folded it into the first: "you send a follow-up from the Warp app, and the run continues." - Step 2: "Type the next message into the conversation's input" -> "Enter the next message in the conversation's input" ("Enter" is the style guide's verb for text fields). - Troubleshooting (old runs): "Start a new cloud agent run with the prompt you want and reference the prior run in the prompt if needed." -> "Start a new cloud agent run with the prompt you want, referencing the prior run if needed." (drops the "prompt" repetition). Final grep over the handoff folder for "execution", "harness", "spiraled", "right move", "Cloud Agents", "Warp terminal" -> zero hits. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues. - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken links (2,439 internal links across 321 files). Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): address two missed Rachael comments on cloud-to-cloud I missed two of @rachaelrenk's review comments on the cloud-to-cloud page in earlier passes because they weren't returned by the first `gh pr view` query. Applying them now. cloud-to-cloud.mdx - "ambient agent run" -> "background cloud agent run". Rachael flagged "ambient agent run" as abstract/internal-feeling; "background cloud agent run" keeps the example concrete and matches the user-facing framing on the surrounding pages. Per her suggested edit verbatim. - Removed `blocked` from the example list of terminal states. The API treats BLOCKED as terminal for cancellation purposes, but the spec describes it as "awaiting user input or approval" — so it isn't a natural place to send a follow-up via cloud-to-cloud handoff (responding to the prompt on the original run is the right path). Added a sentence to the prereq calling that out explicitly so readers don't try to hand off a blocked run. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues. - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken (2,439 internal links, 321 files). Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): audit polish for cloud-to-cloud prereqs Two small consistency fixes caught on a third audit round: - L29 "An ended cloud agent run" prereq: "Blocked runs ... aren't continued through cloud-to-cloud handoff" -> "...can't be continued via cloud-to-cloud handoff". Makes the carve-out parallel with the very next sentence ("Very old runs ... can't be continued via handoff"), and reads more directly than "aren't continued through". - L30 "A snapshot from the prior session" prereq: "the run still continues -- it just starts without restored workspace state" -> "the run still continues, just without restored workspace state". The em dash + "it just starts" was colloquial and a bit redundant ("continues" and "starts" describe the same event); the comma-led adjective phrase is cleaner. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues. - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken (2,439 internal links, 321 files). Co-Authored-By: Oz <oz-agent@warp.dev> * docs(handoff): add Handoff sidebar group + drop tombstone wording The "cross-cutting sidebar PR" that the original PR description referred to doesn't exist — none of the orchestration-launch content is currently registered in `src/sidebar.ts`. PR #84 (multi-agent) doesn't touch the sidebar either; only PR #86 (memory) adds its own entries. Following that pattern: register the three handoff pages here so they actually appear in the docs sidebar when this branch merges. src/sidebar.ts - Added a new "Handoff" collapsible group inside the "Oz Cloud Agents & Orchestration" topic, slotted right after "Viewing cloud agent runs" since that's the closest thematic neighbor (it covers `Continue locally` / `/continue-locally`, the cloud-to-local path). The group contains: - Overview -> agent-platform/cloud-agents/handoff - Local to cloud -> agent-platform/cloud-agents/handoff/local-to-cloud - Cloud to cloud -> agent-platform/cloud-agents/handoff/cloud-to-cloud Mirrors the existing collapsible-group shape used by Triggers, Integrations, and Self-hosting in the same section. src/content/docs/agent-platform/cloud-agents/handoff/cloud-to-cloud.mdx - "(from the conversation details panel or the end-of-run tombstone)" -> "(from the conversation details panel or the artifacts shown after the run)". "Tombstone" is the internal code-level term for the post-run view (`shared_session/conversation_ended_tombstone_view.rs`). Even though it shows up in telemetry-event descriptions in `privacy.mdx`, it's not natural user-facing copy. Switched to a plainer reference to the artifacts surfaced after the run. Validation - python3 .agents/skills/style_lint/style_lint.py --changed -> 0 issues on the files this PR touches. (The pre-existing pricing-faqs.mdx warnings are out of scope.) - python3 .agents/skills/check_for_broken_links/check_links.py --internal-only -> 0 broken (2,440 links, 322 files). - `npm run build` fails on an UNRELATED orphan page (`agent-platform/cloud-agents/agents.mdx` is not registered in the sidebar). That page was added earlier on this branch by a different PR and is pre-existing breakage on `hyc/orch/handoff` — my edits don't touch it. Co-Authored-By: Oz <oz-agent@warp.dev> --------- Co-authored-by: Oz <oz-agent@warp.dev> Co-authored-by: Rachael Rose Renk <91027132+rachaelrenk@users.noreply.github.com>
|
|
||
| ## Notifications in orchestrated runs | ||
|
|
||
| In a [multi-agent orchestration](/agent-platform/cloud-agents/orchestration/), each child agent is its own conversation. Notifications fire on the child whose state changes — they aren't aggregated on the parent. |
There was a problem hiding this comment.
We don't fire notifications for children at all actually right now
There was a problem hiding this comment.
Good catch — rewrote agent-notifications.mdx accordingly in b52a764. The new "Notifications in orchestrated runs" section now says in-app notifications fire on the parent's conversation only (child conversations are excluded from the toast stream and the notification mailbox via should_exclude_from_navigation()), and points readers at the orchestration pill bar and the Sub-agents tab for live per-child state. Dropped the earlier 'each child fires its own notification' framing.
| An orchestrated workflow always has one **parent agent** and one or more **child agents**. | ||
|
|
||
| * **Parent agent** - the agent that decides what work needs to be done, spawns child agents, and (optionally) merges their results. Any Oz agent can become a parent the first time it spawns a child. | ||
| * **Child agent** - an Oz agent spawned by a parent with its own prompt, environment, and (optionally) a different model or agent runtime. A child can spawn its own children, so orchestrations are arbitrarily deep. |
There was a problem hiding this comment.
Children can't spawn their own children, so it's only one level deep
There was a problem hiding this comment.
Fixed in b52a764. The 'A child can spawn its own children, so orchestrations are arbitrarily deep' sentence is gone. The Child agent bullet now reads: 'A child runs its own work and reports back; it does not spawn its own children.' A follow-up paragraph also says explicitly that orchestrations today are exactly one level deep — a parent and its direct children — and that the Warp app, the Oz web app, and the Oz API all render that single level.
|
|
||
| * **Local → local** - a [Warp Agent](/agent-platform/local-agents/overview/) conversation in the desktop app spawns child Warp Agent conversations on the same machine. Useful for trying orchestration patterns without spinning up cloud infrastructure. | ||
| * **Local → cloud** - a local parent spawns one or more cloud children that run in [environments](/agent-platform/cloud-agents/environments/) on Warp-hosted or self-hosted infrastructure. The parent keeps working while children execute in parallel. | ||
| * **Cloud → cloud** - a cloud parent spawns cloud children. This is the canonical pattern for review swarms, large fan-outs, and any orchestration triggered from Slack, Linear, a schedule, or the API. |
There was a problem hiding this comment.
One wrinkle here is we also support cloud -> cloud where the child is local to the cloud orchestrator. Basically, if a cloud agent starts a local child as opposed to starting a cloud child.
There was a problem hiding this comment.
Added in b52a764. The 'Where parent and child agents can run' section now lists four combinations: Local → local, Local → cloud, Cloud → cloud, and a new Cloud → cloud-local that describes a cloud orchestrator spawning a child that runs inside the parent's own cloud environment rather than getting its own environment. The bullet calls out the cases where this is useful (shared filesystem, long-running process, shell session, or when per-child environments would be wasteful).
|
|
||
| ## Approval mode | ||
|
|
||
| When an agent runs in `orchestrate` mode (set by the `/orchestrate` slash command or the API's `mode: orchestrate` field), the agent **proposes** an orchestration plan and waits for approval before spawning any children. Use this to review the breakdown — number of children, prompts, environments, parallelism — before any children start. Once you approve, the parent starts spawning children. |
There was a problem hiding this comment.
The distinction between /orchestrate and /plan isn't quite right. /orchestrate instructs the agent to apply orchestration to a task. /plan will plan a complex task and if appropriate propose orchestration as part of the plan because the agent will always consider orchestration while planning. Both require user approval to execute.
There was a problem hiding this comment.
Rewrote the Approval mode section in b52a764. New phrasing: both /orchestrate and /plan enter a flow where the agent proposes an approach and waits for user approval before launching children. /orchestrate explicitly asks the agent to apply orchestration. /plan always considers orchestration as part of planning and proposes it when the work would benefit; when it does, the plan card surfaces an inline orchestration config block (model, harness, environment, host, parallelism, auth pickers) above the plan content, and the user approves the plan + config together. Mapped to mode: orchestrate and mode: plan on the API side.
|
|
||
| ## Starting an orchestrated run from Warp | ||
|
|
||
| In the Warp desktop app, open the agent input and type `/orchestrate` followed by your task. The parent agent enters `orchestrate` mode and proposes a plan before spawning children. |
There was a problem hiding this comment.
We should probably also mention that the agent will propose orchestration as part of its planning flow. There is an orchestration config card that appears above the plan view when this occurs and the plan will contain a section describing the approach it intends.
There was a problem hiding this comment.
Added a new 'Letting the agent propose orchestration during /plan' subsection in multi-agent-runs.mdx (in b52a764). It explains that during /plan the agent considers orchestration and proposes it when the work would benefit, that an inline orchestration config block appears above the plan content with the run-wide pickers (model, harness, environment, host, parallelism, auth), and that the user adjusts the config and then approves the plan to start spawning children. Cross-linked from the Approval mode section in the concept page.
| * Each child's prompt and environment. | ||
| * What it expects each child to return. | ||
|
|
||
| Approve the plan to start spawning children. The parent's transcript renders each child as it spawns, and a child agent status card above the agent input shows each child's current state. Click a card to jump to that child's conversation. |
There was a problem hiding this comment.
This seems to document the old UI - the orchestration pill bar is the new UI - orchestrated children appear as pills at the top of the parent agent's view. Clicking on the pills switches the view to the child's view.
There was a problem hiding this comment.
Replaced the legacy 'child agent status card above the agent input' framing with the orchestration pill bar across the affected pages in b52a764:
orchestration/multi-agent-runs.mdx— the section that describes what happens after approving an orchestration now says: 'an orchestration pill bar appears above the agent view header showing the parent on the left and one pill per child. Each pill displays the child's name and a live status badge. Click a child pill to switch the pane to that child's conversation in place; click the parent pill — or the breadcrumb that replaces the pill bar while you're viewing a child — to return.'orchestration/index.mdx— the 'Track run state transitions' bullet and the Observability bullet both reference the pill bar instead of the legacy status card.managing-cloud-agents.mdx— the new 'Orchestrated runs (parent and child)' section uses the pill bar wording for local children in the Warp app, and the Sub-agents tab wording for cloud children in the web app.
Grounding: pill bar product spec is warp-internal/specs/QUALITY-567/PRODUCT.md; the legacy child-agent status card is explicitly disabled when FeatureFlag::OrchestrationPillBar is on (app/src/ai/blocklist/block/status_bar.rs:1239-1248, 1312-1320).
…ch state Refreshes PR #84 with a single commit that: * Adds two new orchestration pages (concept + how-to) describing the launched multi-agent orchestration model. * Updates four existing pages (agent-notifications, deployment-patterns, managing-cloud-agents, oz-web-app) with orchestration cross-references that describe surfaces accurately. Matthew's review (cephalonaut): * Child agents do not spawn their own children today; orchestrations are one level deep. * Documents the four execution combinations including cloud -> cloud-local. * Rewrites /orchestrate vs /plan: both flows require user approval before children launch, and the agent considers orchestration during /plan and surfaces an inline orchestration config block on the plan card. * Replaces 'child agent status card above the agent input' with the orchestration pill bar that ships in the agent view pane header. * Rewrites 'Notifications in orchestrated runs' to reflect that in-app notifications fire on the parent's conversation only (child conversations are excluded from the toast stream and the notification mailbox). Rachael's review (rachaelrenk): * Tightens the Common patterns intro to directly frame the H3 list. Co-Authored-By: Oz <oz-agent@warp.dev>
4852f14 to
b52a764
Compare
Refresh: address Matthew's review, rebase on mainForce-pushed
Validation
Co-Authored-By: Oz oz-agent@warp.dev |
…ess-agnostic, cross-location) Expands the 'Messaging between agents' section in the orchestration concept page to capture the architectural story behind agent-to-agent coordination, in response to a public X user asking how Warp handles state drift across parallel execution. The section now covers: * Durable, server-backed message bus with one inbox per agent (addressed by agent ID), grounded in warp-server/specs/QUALITY-519/TECH.md and the ai_run_event_log Postgres table. * Direct answer to the state-drift question: each run owns its own state; agents exchange explicit messages rather than reading each other's transcripts; messages and run state transitions share a global sequence so the parent never observes 'SUCCEEDED' before the message that produced the result. * Harness-agnostic claim: the mailbox is the same whether the recipient runs the default Warp Agent, Claude Code, Codex, or another runtime; a parent on one harness can message a child on another in either direction. * Cross-location claim: agent ID is the only address; local <-> cloud messaging works across all four execution combinations including the cloud -> cloud-local case. * Resumability: an idle child (terminal-state run) wakes up under the same agent ID when the parent sends a new message. * Cross-link to lifecycle events: same infrastructure delivers the six state-transition event types in parallel with messages, so the parent doesn't have to poll. Also adds a one-sentence pointer in the API section of the how-to page so callers landing on the REST docs find their way to the messaging concept. The public messaging endpoints (/agent/messages, /agent/events) are still x-internal in the OpenAPI spec; the docs describe the mechanism conceptually without exposing the wire format. Co-Authored-By: Oz <oz-agent@warp.dev>
Added: messaging-architecture coverage in the orchestration concept pageFollow-up commit Motivation: a public X reply asked how Warp handles state drift across parallel execution. The thin existing paragraph didn't capture the architecture. The expanded section now says:
Also added one cross-reference sentence in Not added: API details for Validation
Co-Authored-By: Oz oz-agent@warp.dev |
) Cleanup after the orchestration-launch + multi-agent merges: * warp-hosting.mdx - drop 'Oz' prefix from description and body; remove 'easily' per style guide. * enterprise/analytics-api.mdx:139 - '(Oz cloud agents)' -> '(cloud agents)'. * reference/cli/artifacts.mdx:4 - 'produced by an Oz agent run' -> 'by an agent run'. * privacy.mdx telemetry table (4x) - 'ambient agent' -> 'cloud agent' in event descriptions. The literal event names in the left column (AmbientAgent.*, CLI.Execute.Agent.RunAmbient) stay as-is since they're emitted by product code. * warp-for-product-managers.mdx - '5 AI agent workflows…' -> '5 agent workflows…' (drop redundant 'AI' prefix). * cloud-agents/overview.mdx - add Multi-agent orchestration bullet to the Learn more list (was missing after PR #84 landed). Validation: 0 broken links / 2577 internal, lint clears all 11 previously-flagged OZ-TERM warnings, 332 pages build clean. Co-authored-by: Oz <oz-agent@warp.dev>
Summary
Adds documentation for multi-agent orchestration (Codename Maestro): a new concept page describing the parent/child model and supported patterns, and a how-to page covering every way to start an orchestrated run (slash command, Oz CLI, Oz web app, REST API). Cross-references are wired into the deployment-patterns, managing-cloud-agents, oz-web-app, and agent-notifications pages so an existing reader can find the new content from the surfaces they already use.
Pages
New:
src/content/docs/agent-platform/cloud-agents/orchestration/index.mdx— concepts: parent/child model, local/cloud combinations, lifecycle event types, messaging API, common patterns (supervisor/worker, fan-out, critic, review swarm, DAG, swarm), approval (orchestrate) mode, observability.src/content/docs/agent-platform/cloud-agents/orchestration/multi-agent-runs.mdx— how-to:/orchestrateslash command,oz agent run-cloud(agent-driven and script-driven), Oz web app entry points,POST /agent/runswithmode: orchestrateorparent_run_id, SSE + batch poll for lifecycle events,POST /agent/messages, fleet cancellation.Edited:
src/content/docs/agent-platform/cloud-agents/deployment-patterns.mdx— replaced the inline 'fan-out parallel work (sharding)' recipe with a link to the new orchestration pages.src/content/docs/agent-platform/cloud-agents/managing-cloud-agents.mdx— added an 'Orchestrated runs (parent and child)' section describing how the hierarchy is rendered in the management view.src/content/docs/agent-platform/cloud-agents/oz-web-app.mdx— added an 'Orchestrated runs' section covering where to start an orchestration, the live detail pane, and the post-execute roll-up.src/content/docs/agent-platform/capabilities/agent-notifications.mdx— added a 'Notifications in orchestrated runs' section describing child lifecycle events, child messages, and blocked-child propagation.Research grounding
/orchestrateslash command behavior:app/src/search/slash_command_menu/static_commands/commands.rs(gated byFeatureFlag::Orchestration, inPREVIEW_FLAGS).warp-server/logic/agent_lifecycle.go(run_in_progress,run_succeeded,run_failed,run_errored,run_blocked,run_cancelled).warp-server/router/handlers/public_api/agent_messaging.go(messages, events, SSE stream).parent_run_idfield onRunAgentRequest/RunItemfromwarp-server/public_api/openapi.yaml.warp-internal/app/src/ai/blocklist/action_model/execute/start_agent.rs,warp-internal/app/src/ai/agent/conversation.rs::orchestration_agent_id().orchestratevsplan):warp-server/public_api/openapi.yaml.Open questions / needs PM confirmation
/orchestrate. It currently ships inPREVIEW_FLAGS(Preview/Friends-of-Warp), not inRELEASE_FLAGS. The new run-how-to page notes this with a:::notecallout; please confirm the GA cutover plan so I can drop the note if it's already public at launch.agent/events/streamis registered only on the RTC server tier and behindOrchestrationV2InfrastructureEnabled. I described it as supported with a 'real-time fan-out tier' caveat. Please confirm whether external API users get this endpoint at launch or whether we should call it 'preview only' for now.oz run list --parent-run-idflag. The cancellation example uses this flag; the Oz CLI surface for filtering by parent run is implicit from the API but I did not verify a public CLI flag exists. Please confirm the exact CLI surface before launch.src/assets/agent-platform/orchestration/.Out of scope (per gating plan)
src/sidebar.ts(reserved for the cross-cutting sidebar PR).vercel.json(reserved for the cross-cutting redirects PR).Artifacts
Co-Authored-By: Oz oz-agent@warp.dev