Skip to content

docs: add a multi-agent coordination guide - #631

Open
reemsabawi-mystenlabs wants to merge 2 commits into
devfrom
reemsabawi/bedu-1121-multi-agent-coordination
Open

docs: add a multi-agent coordination guide#631
reemsabawi-mystenlabs wants to merge 2 commits into
devfrom
reemsabawi/bedu-1121-multi-agent-coordination

Conversation

@reemsabawi-mystenlabs

@reemsabawi-mystenlabs reemsabawi-mystenlabs commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Closes BEDU-1121. Eight builder questions asked how several agents share memory, and no page tied the pieces together.

The gap

Delegates and namespaces are each documented well on their own concept page, but nothing says how they combine. That leaves the reader to infer which one is an identity boundary and which is a visibility boundary, and getting it backwards is expensive: any delegate the account authorizes decrypts everything that account owns, across every namespace. So namespaces organize an account's memory, and they cannot separate users. The guide states that outright, in a warning, rather than leaving it to be deduced from two pages.

What the page covers

  • One delegate key per agent. The keys grant identical access, so this is not an access-control boundary. It buys labelling in the dashboard and per-agent revocation.
  • Three sharing patterns, as a table: shared namespace, per-agent namespace, and the common case of a shared namespace plus a private one per agent.
  • Handoff as a write followed by a recall, with the two properties of recall that change how you write for one: it matches by meaning rather than by key, and it returns whole memories, so each fact needs to stand alone.
  • Choosing a boundary, including the case that must not use namespaces: agents serving different users need separate accounts.

Also fixes the concept page it contradicted

A review pass found that fundamentals/concepts/memory-space.md said the opposite of this guide, in the direction that gets people hurt. It called a memory space "the isolated unit of storage" offering "full isolation between users, apps, and deployments", its goal promised namespaces "prevent cross-namespace data leakage", and it closed with "each is fully isolated". A reader arriving there first would conclude namespaces separate users, which is exactly the mistake this guide exists to prevent.

Neither page stated a falsehood; they described different layers. That page's own App ID section already says the vector database scopes queries by owner + namespace while encryption and blob discovery scope by package ID, which is precisely why a delegate reads across namespaces. The isolation language just overstated what that buys you.

Reworded its description, goal, answer, and body to say scoping rather than isolation, and added a warning beside the boundary definition that states the decryption behaviour outright and links here. Fixing it inside this PR rather than filing a follow-up, so the contradiction never ships.

That page also carried twelve pre-existing style gate violations, which surface on push once the file is touched at all: eight em dashes, SEAL for Seal, a future tense, a quoted frontmatter title, and unbolded table headers. Cleared them in a separate commit. They are mechanical and unrelated to the wording change.

Sources

Claim Source
An account has one owner and any number of delegates; a delegate is a keypair the owner authorizes docs/fundamentals/concepts/ownership-and-access.md, "Delegates"
Delegate keys are registered onchain and verified on every request same page, "Access Control Enforcement"
Only the owner and authorized delegates can access the encrypted content same page, "Ownership"
Namespaces group memories within an account, and one user can hold several docs/fundamentals/concepts/memory-space.md, "Namespace"
The vector database scopes queries by owner + namespace, while encryption and blob discovery scope by package ID same page, "App ID" — this is what makes the delegate warning true
MemWal.create fields key, accountId, serverUrl, namespace MemWalConfig in packages/sdk/src/types.ts
recall({ query, limit }) RecallParams and RecallOptions in the same file
rememberAndWait waits for the background job to complete packages/sdk/src/memwal.ts, the method and its doc comment
remember returns once the relayer creates the job, with embedding, encryption, upload, and indexing continuing after docs/sdk/api-reference.md, remember

Prose written fresh. The code samples use only fields and methods verified above.

Verification

Re-run against current dev rather than relying on the original checks, since the branch was 182 commits behind when this pass ran:

  • The branch merges cleanly into dev; this push brings it up to date.
  • Style gate passes on both changed pages.
  • node scripts/check-docs-freshness.mjs passes: docs freshness OK (94 pages, 44 routes, IDs, URLs, versions, limits), which covers the four reference links.
  • Every SDK claim above re-checked against packages/sdk/src at current dev, not against the versions current when the page was drafted.

@jessiemongeon1

jessiemongeon1 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Style Guide Audit

All 2 file(s) pass the style guide audit.

Closes BEDU-1121. Eight builder questions asked how several agents share
memory, and no page tied the pieces together.

Delegates and namespaces are each documented on their own concept page,
but nothing said how they combine, leaving the reader to infer which is
an identity boundary and which is a visibility boundary. Getting that
backwards is expensive: any delegate the account authorizes decrypts
everything that account owns, across every namespace. The guide states
that outright rather than leaving it to be deduced.

Covers one delegate key per agent, three sharing patterns, handoff as a
write followed by a recall, and how to choose a boundary.

Also corrects fundamentals/concepts/memory-space.md, which said the
opposite in the direction that gets people hurt. It called a memory
space "the isolated unit of storage" offering "full isolation between
users, apps, and deployments", promised namespaces "prevent
cross-namespace data leakage", and closed with "each is fully isolated".
Neither page stated a falsehood; they described different layers, and
that page's own App ID section already explained why a delegate reads
across namespaces. The isolation language just overstated what scoping
buys you. Reworded to say scoping, and added a warning beside the
boundary definition that states the decryption behavior and links here.

Cleared the twelve style gate violations already present on that page,
since touching the file surfaces them: eight em dashes, SEAL to Seal, a
future tense, a quoted frontmatter title, and unbolded table headers.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoBWxqLzd9hAxrhoqv3iSv
@reemsabawi-mystenlabs
reemsabawi-mystenlabs force-pushed the reemsabawi/bedu-1121-multi-agent-coordination branch from 6fadc6b to f87c42c Compare August 21, 2026 16:31
Comment thread docs/guides/multi-agent-coordination.md Outdated

Shared plus private suits most multi-agent systems. A research agent writes conclusions to `findings` and keeps its own scratch work in `research-agent`, so a planner agent reading `findings` sees the conclusions without wading through intermediate steps.

```ts

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the source of this code?


A handoff is a write followed by a recall. The first agent writes what the next one needs into a shared namespace, and the next agent recalls it when it starts.

```ts

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what is the source of this code?

Comment thread docs/guides/multi-agent-coordination.md Outdated
Two of the four review comments, the ones that are changes rather than
questions.

Dropped the manual References section. Mintlify generates related links,
so a hand-maintained list is duplication that can go stale. The four
links it held were the page's only outbound links, though, and two of
them a reader of this page actually needs, so those are now inline where
they are relevant: delegates on first mention in the delegate-key
section, and namespaces on first mention in the sharing section. The
other two, agent-runtimes and headless-setup, were adjacent reading
rather than things this page depends on, and the generated links cover
them.

Rewrote the opening. "Two decisions shape everything else" followed by a
bare numbered list read as a stilted preamble to its own body; it is now
one sentence that names both decisions.

The remaining two comments ask where the code samples come from, which
is a question rather than a change, and is answered on the PR.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WoBWxqLzd9hAxrhoqv3iSv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants