Add three-way demo and update README#928
Conversation
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.
📝 WalkthroughWalkthroughThe 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. ChangesREADME documentation update
Three-way debate demo script
🎯 2 (Simple) | ⏱️ ~10 minutes
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
scripts/demos/three-way-debate.tape (1)
43-43: ⚡ Quick winReplace 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
⛔ Files ignored due to path filters (3)
readme-banner.pngis excluded by!**/*.pngscripts/demos/three-way-debate.gifis excluded by!**/*.gifscripts/demos/three-way-debate.mp4is excluded by!**/*.mp4
📒 Files selected for processing (2)
README.mdscripts/demos/three-way-debate.tape
| ``` | ||
| use the orchestrating-agent-relay skill to spawn a claude and codex agent and [YOUR_TASK] | ||
| ``` |
There was a problem hiding this comment.
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.
| ``` | |
| 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 |
There was a problem hiding this comment.
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" EnterAlso 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.
Update Readme. Maybe