docs(examples): add multi-agent notepad demo#991
Conversation
d832b13 to
e4f02a0
Compare
1fbe666 to
e8c9d19
Compare
Signed-off-by: Alexander Watson <zredlined@gmail.com>
e8c9d19 to
e0b997d
Compare
|
This is a useful demo shape. One small thing I would consider adding to the notepad contract is a bit more state metadata per note, even if the backing store stays plain markdown. For example: That would keep the example simple while showing the boundary between durable notes and live coordination state. |
@carltonawong Good feedback. Our focus here was to keep it brutally simple, and to build a more detailed reference example with different personas and collaboration between agents. Will plan to add the state metadata concepts in there. Thanks |
|
Thanks, that makes sense. Keeping the first demo brutally simple is the right call. The reference example feels like the better place to show |
|
For the record: |
|
Thanks for the pointer. That proposal is a useful adjacent reference. The part I’d still want any branch/markdown coordination pattern to make explicit is what state is durable evidence vs current authority: last verified result, abort/crash reason, and what the receiving agent has to recheck before acting. |
|
@carltonawong Your follow-up listed three specifics under "durable evidence vs current authority": last verified result, abort/crash reason, and what the receiving agent has to recheck before acting. Those map to the lifecycle / signed-results / abort / crash-recovery primitives specified in NVIDIA/NeMo-Agent-Toolkit#1793. If you consider that proposal "adjacent" rather than the precursor, which public, citeable proposal does specify them in the form you'd view as precursor? |
|
I don’t think #1793 is the precursor to this suggestion. This PR is a markdown/GitHub notepad demo, and my comment was about lightweight note-level metadata so synthesis agents don’t confuse stale scratch context with current authority. #1793 proposes a Redis-backed orchestration/runtime layer with lifecycle, abort, pub/sub, signed-results, and crash-recovery primitives. Those are adjacent concerns, but not the same proposal. |
|
@carltonawong NVIDIA/NeMo-Agent-Toolkit#1793 issue body, verbatim: PR #991 README, verbatim: Both: N agents writing markdown to scoped git locations, single synthesizer/architect reading them, no inter-agent communication. The runtime concerns are conceded as in #1793. The markdown coordination layer is also in #1793 — quoted above. Which technical distinction between (ANNOUNCEMENT.md/REPLY.md over per-team branches) and (agent-N.md/summary.md over scoped paths) makes them adjacent rather than the same primitive? |
|
@h-network I think this has drifted a bit beyond what I was trying to comment on. My original note was just a small observation about the notepad demo in this PR — specifically around adding lightweight metadata so a synthesis agent can distinguish stale vs current notes. I wasn’t trying to propose or compare full coordination models like #1793. Appreciate the discussion though — helpful context. |
Summary
Adds a runnable example that demonstrates a multi-agent shared notepad: isolated Codex agents run in separate OpenShell sandboxes, write markdown notes to a scoped GitHub path, and a synthesis agent reads those notes to produce a final summary.
The demo uses Codex as the agent runtime and GitHub as the durable notes backend, but the user-facing concept is a shared notepad for sandboxed agent coordination rather than a general-purpose agent memory system.
Related Issue
No issue yet. This PR captures the working demo for review.
Changes
examples/multi-agent-notepad/demo.shto launch parallel worker sandboxes and a synthesis sandbox.runs/<run-id>/**.Testing
mise run pre-commitpasses locally; attempted after installing missing local tools, but the Rust testsandbox_create_keeps_sandbox_with_forwardingfailed because port8080is already in use by the local gateway/Docker processbash -n examples/multi-agent-notepad/demo.shbash -npolicy.template.yamlwith Ruby YAMLgit diff --check -- examples/multi-agent-notepadmarkdownlint-cli2over the new README and prompt templates, after isolating unrelated untracked local docsmise run pre-commitpartial pass before the local port conflict: license check, markdownlint, Mermaid lint, Python format/lint/typecheck/tests, Helm lint, Rust format/check all completed successfullyDEMO_AGENT_COUNT=2against disposable private repozredlined/openshell-codex-memory-demo-20260427-102752agent-1.md,agent-2.md, andsummary.mdexist through the GitHub Contents APIChecklist