Skip to content

Add three-way demo and update README#928

Open
willwashburn wants to merge 1 commit into
mainfrom
readme-updates
Open

Add three-way demo and update README#928
willwashburn wants to merge 1 commit into
mainfrom
readme-updates

Conversation

@willwashburn
Copy link
Copy Markdown
Member

Update Readme. Maybe

Add demo assets and refactor README: include a three-way-debate GIF/MP4 and VHS tape script under scripts/demos, update the readme-banner image, remove the fixed banner height, and insert the demo preview. Rework introductory copy and headings, clarify install/getting-started steps and SDK usage, and reorganize development/references for clarity. The new demo files (three-way-debate.gif, three-way-debate.mp4, three-way-debate.tape) provide a reproducible recording and playback setup for a three-agent debate demo.
@willwashburn willwashburn requested a review from khaliqgant as a code owner May 20, 2026 05:32
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 20, 2026

Review Change Stack

📝 Walkthrough

Walkthrough

The PR updates the main README with restructured documentation and messaging, and introduces a new VHS demo script that automates recording of a three-agent debate workflow orchestrated via tmux and agent-relay.

Changes

README documentation update

Layer / File(s) Summary
README intro, agents, and development sections
README.md
Replaced opening sections with condensed Claude orchestration introduction; updated "What you can build" bullets; inserted new "More:" links block; streamlined "Supported agents and runtimes" and "Development" section phrasing with consolidated command snippet and "References:" label.

Three-way debate demo script

Layer / File(s) Summary
VHS output and playback configuration
scripts/demos/three-way-debate.tape
VHS tape header declares GIF/MP4 output targets, shell selection, layout dimensions, padding, and playback/typing speed settings.
Agent-relay pre-flight setup
scripts/demos/three-way-debate.tape
Hidden setup kills any prior session, brings agent-relay up with logging, and waits for readiness before proceeding.
Multi-agent debate recording and cleanup
scripts/demos/three-way-debate.tape
Creates tmux 3-pane layout, launches reviewer and adversarial agents with role-specific prompts, attaches VHS to the planner pane, starts the planner with a kickoff task, records the debate for a fixed duration, then cleans up tmux session and agent-relay.

🎯 2 (Simple) | ⏱️ ~10 minutes

🐰 A readme refreshed, a demo takes flight,
Three agents debate from morning to night,
Planner, reviewer, critique in thrall,
Through tmux they chat on the general call!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description 'Update Readme. Maybe' is vague and incomplete. It does not follow the required template structure and lacks necessary details about the changes and testing. Provide a complete description following the template with: a clear summary of changes, a test plan with testing status, and any relevant screenshots or demo previews.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title 'Add three-way demo and update README' accurately describes the main changes: adding a new three-way-debate demo script and updating README documentation.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch readme-updates

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
scripts/demos/three-way-debate.tape (1)

43-43: ⚡ Quick win

Replace fixed sleeps with readiness gates to reduce demo flakiness.

Line 43 and Line 66 depend on timing assumptions; slower machines or auth/network jitter can still race startup. Prefer waiting on explicit readiness signals (relay ready + agents polling) before continuing.

Also applies to: 66-66

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/demos/three-way-debate.tape` at line 43, Replace the two fixed "Sleep
5s" steps with explicit readiness gates: remove the "Sleep 5s" lines and instead
wait for the relay to signal readiness (e.g., a "relay ready" probe or
health-endpoint check) and poll each agent until they report ready/connected
(implement a small loop that retries a status command with a short backoff and
timeout). Ensure both occurrences of "Sleep 5s" are changed to these readiness
checks so the demo proceeds only after relay_ready and all agents_ready
conditions are met.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@README.md`:
- Around line 39-41: Add a language tag to the fenced code block containing "use
the orchestrating-agent-relay skill to spawn a claude and codex agent and
[YOUR_TASK]" to satisfy markdownlint MD040; change the opening fence from ``` to
```text so the block becomes a labeled text code block.

In `@scripts/demos/three-way-debate.tape`:
- Line 39: Replace the hardcoded tmux session name "debate" with a generated
per-run variable (e.g., DEBATE_SESSION) and use that variable in every place the
script references the session (replace occurrences of "debate" in commands like
tmux kill-session -t debate and any tmux new-session/attach calls), generating
the value once at script start (use a safe unique suffix like $$ or a
timestamp/mktemp-style id) and persisting it for teardown; also ensure teardown
checks that the session exists before killing (tmux has-session -t
"$DEBATE_SESSION") so you don't accidentally kill an unrelated user session and
update any related agent-relay calls to reference the same variable.

---

Nitpick comments:
In `@scripts/demos/three-way-debate.tape`:
- Line 43: Replace the two fixed "Sleep 5s" steps with explicit readiness gates:
remove the "Sleep 5s" lines and instead wait for the relay to signal readiness
(e.g., a "relay ready" probe or health-endpoint check) and poll each agent until
they report ready/connected (implement a small loop that retries a status
command with a short backoff and timeout). Ensure both occurrences of "Sleep 5s"
are changed to these readiness checks so the demo proceeds only after
relay_ready and all agents_ready conditions are met.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: bf567b38-6a2c-481e-8995-9b0818b11790

📥 Commits

Reviewing files that changed from the base of the PR and between 9c1849b and e1022e4.

⛔ Files ignored due to path filters (3)
  • readme-banner.png is excluded by !**/*.png
  • scripts/demos/three-way-debate.gif is excluded by !**/*.gif
  • scripts/demos/three-way-debate.mp4 is excluded by !**/*.mp4
📒 Files selected for processing (2)
  • README.md
  • scripts/demos/three-way-debate.tape

Comment thread README.md
Comment on lines +39 to +41
```
use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK]
```
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a language tag to the fenced block to satisfy markdownlint.

This block triggers MD040 because the fence has no language identifier.

Suggested fix
-   ```
+   ```text
    use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK]
    ```
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
```
use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK]
```
🧰 Tools
🪛 markdownlint-cli2 (0.22.1)

[warning] 39-39: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@README.md` around lines 39 - 41, Add a language tag to the fenced code block
containing "use the orchestrating-agent-relay skill to spawn a claude and codex
agent and [YOUR_TASK]" to satisfy markdownlint MD040; change the opening fence
from ``` to ```text so the block becomes a labeled text code block.

# ---------- Hidden setup ----------
Hide

Type "tmux kill-session -t debate 2>/dev/null; agent-relay down 2>/dev/null; true" Enter
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid using a globally generic tmux session name for destructive operations.

Line 39 and Line 81 tear down debate, while Lines 46-48, 53, 57, 61-62 assume that same static name. This can kill a user’s unrelated tmux session if they already have one named debate.

Suggested hardening diff
+Type "SESSION=relay-three-way-debate-${USER:-user}-$$" Enter
-Type "tmux kill-session -t debate 2>/dev/null; agent-relay down 2>/dev/null; true" Enter
+Type "tmux kill-session -t \"$SESSION\" 2>/dev/null; agent-relay down 2>/dev/null; true" Enter

-Type "tmux new-session -d -s debate -x 240 -y 60" Enter
-Type "tmux split-window -h -p 45 -t debate" Enter
-Type "tmux split-window -v -t debate:0.1" Enter
+Type "tmux new-session -d -s \"$SESSION\" -x 240 -y 60" Enter
+Type "tmux split-window -h -p 45 -t \"$SESSION\"" Enter
+Type "tmux split-window -v -t \"$SESSION\":0.1" Enter

-Type `tmux send-keys -t debate:0.1 "agent-relay new reviewer claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel using mcp__relaycast__message_inbox_check every 20 seconds. When planner and adversarial deadlock, post a synthesis to general via mcp__relaycast__message_post and say REVIEWER ratified.'" Enter` Enter
+Type `tmux send-keys -t "$SESSION":0.1 "agent-relay new reviewer claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel using mcp__relaycast__message_inbox_check every 20 seconds. When planner and adversarial deadlock, post a synthesis to general via mcp__relaycast__message_post and say REVIEWER ratified.'" Enter` Enter

-Type `tmux send-keys -t debate:0.2 "agent-relay new adversarial claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel via mcp__relaycast__message_inbox_check every 15 seconds. When planner posts a plan, find 3 biggest flaws and post critique via mcp__relaycast__message_post. Iterate. Say ADVERSARIAL satisfied when convinced.'" Enter` Enter
+Type `tmux send-keys -t "$SESSION":0.2 "agent-relay new adversarial claude --attach --mode passthrough --ephemeral --model sonnet --task 'Watch the general channel via mcp__relaycast__message_inbox_check every 15 seconds. When planner posts a plan, find 3 biggest flaws and post critique via mcp__relaycast__message_post. Iterate. Say ADVERSARIAL satisfied when convinced.'" Enter` Enter

-Type "tmux select-pane -t debate:0.0" Enter
-Type "tmux attach -t debate" Enter
+Type "tmux select-pane -t \"$SESSION\":0.0" Enter
+Type "tmux attach -t \"$SESSION\"" Enter

-Type "tmux kill-session -t debate; agent-relay down" Enter
+Type "tmux kill-session -t \"$SESSION\"; agent-relay down" Enter

Also applies to: 46-48, 53-53, 57-57, 61-62, 81-81

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/demos/three-way-debate.tape` at line 39, Replace the hardcoded tmux
session name "debate" with a generated per-run variable (e.g., DEBATE_SESSION)
and use that variable in every place the script references the session (replace
occurrences of "debate" in commands like tmux kill-session -t debate and any
tmux new-session/attach calls), generating the value once at script start (use a
safe unique suffix like $$ or a timestamp/mktemp-style id) and persisting it for
teardown; also ensure teardown checks that the session exists before killing
(tmux has-session -t "$DEBATE_SESSION") so you don't accidentally kill an
unrelated user session and update any related agent-relay calls to reference the
same variable.

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.

1 participant