feat(orchestrating-agent-relay): teach the orchestrator to hand out an observer link - #92
Conversation
…n observer link The orchestrator is exactly the role that should give a watching human a way to follow a run, and this skill never mentioned observation at all — no observer link, no warning against building one from the workspace key. That silence is why leads reach for `?key=<rk_live_...>`: it is the only pattern they have seen. Adds `agent-relay observer` (and the `get_observer_url` MCP equivalent) in the four places a lead actually looks: the Quick Reference table, a new bootstrap step after spawning, the paste-worthy protocol template, and the Common Mistakes table. Each states the default posture — read-only, 24h expiry, agent DMs excluded — and why a workspace key can never take its place. Requires the command and tool from AgentWorkforce/relay#1422. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Jmke9G9s7ftrN49opNmdx1
|
Warning Review limit reached
Next review available in: 35 minutes You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
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.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3572a05f2c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| > **Never build an observer URL from the workspace key.** `rk_live_` is an | ||
| > administrative credential — it can send messages, spawn agents, and change | ||
| > workspace settings — and a URL query string is not a place to put one. The | ||
| > realtime endpoint rejects it anyway; only a scoped observer token with | ||
| > `stream:read` is accepted. |
There was a problem hiding this comment.
Replace the plugin's workspace-key observer URLs
When users invoke any of the shipped Claude plugin workflows, this new safety rule is bypassed: I checked plugins/claude-relay-plugin/skills/relay-team/SKILL.md:27, relay-fanout/SKILL.md:27, and relay-pipeline/SKILL.md:27, and all three still mandate printing https://agentrelay.com/observer?key=<the actual key>. Those entry points therefore expose the administrative workspace credential and, according to this newly documented invariant, give users a URL that the realtime endpoint rejects; update them to obtain and print a scoped observer URL instead.
Useful? React with 👍 / 👎.
Summary
The orchestrator is exactly the role that should hand a watching human a way to follow a run — and this skill, the canonical one for running a team autonomously, never mentioned observation at all. No observer link, no warning against building one from the workspace key.
That silence is a root cause of the problem the rest of this series is cleaning up: a lead reading this skill has no sanctioned way to answer "can I watch?", so it reaches for the only pattern it has ever seen,
https://agentrelay.com/observer?key=<rk_live_...>— an administrative credential in a URL.Adds
agent-relay observer(and theget_observer_urlMCP equivalent) in the four places a lead actually looks:Each states the default posture — read-only, 24-hour expiry, agent DMs excluded — and why a workspace key can't take its place: it's administrative, and the realtime endpoint rejects it outright, accepting only a scoped token with
stream:read.Requires the command and MCP tool from AgentWorkforce/relay#1422; worth merging after it.
Observation for a follow-up
This skill is now 517 lines with a 25-row Common Mistakes table, and has grown into something closer to an incident log than a skill. Much of it is genuinely hard-won (the 30–60s cold-start gap before a worker's first ACK, stale
connection.jsonpointing at a dead broker,brokernot being a DM-able name), but several rows restate prose from the sections above them.The natural fix is progressive disclosure — move troubleshooting to
references/troubleshooting.mdand keep the SKILL.md at model + bootstrap + protocol. I didn't do it here becauseprpm.jsonenumerates package files individually, so a reference file that isn't added tofilesships a skill pointing at something that doesn't exist. Worth doing deliberately rather than as a rider on this change.Part of a series from a review of the Agent Relay skills and plugins.
Test Plan
prpm.jsonparses; version bumped 2.2.0 → 2.3.0 with the README table kept in sync--helpon a build of the current CLI (agent-relay observer,--channels,--include-dms,--expires,observer revoke)Screenshots
n/a
Generated by Claude Code