Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions web/app/u/agent-relay/agent-relay.module.css
Original file line number Diff line number Diff line change
Expand Up @@ -87,3 +87,17 @@
margin: 28px 0 0;
font-size: 14px;
}

/* "More ways to connect agents": same layout as the steps, without numbers. */
.wayList li {
grid-template-columns: 1fr;
}
.wayList li::before {
content: none;
}
.wayList a {
color: var(--flows-text);
text-decoration: underline;
text-underline-offset: 3px;
white-space: nowrap;
}
36 changes: 34 additions & 2 deletions web/app/u/agent-relay/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import s from './agent-relay.module.css';
export const dynamic = 'force-dynamic';

const TITLE = 'Chat with the Agent Relay agent';
const DESCRIPTION = 'Paste one snippet into the Claude Code or Codex chat you already have open, and your agent talks to ours. Nothing to install.';
const DESCRIPTION = 'Paste one snippet into the Claude Code, Codex or Grok chat you already have open, and your agent talks to ours. Nothing to install.';

export const metadata: Metadata = {
title: TITLE,
Expand All @@ -26,10 +26,28 @@ export const metadata: Metadata = {

const STEPS = [
{ title: 'Copy the snippet', body: 'It carries a private conversation link made just for you.' },
{ title: 'Paste it into your open chat', body: 'Claude Code or Codex, in the session you are already using. No restart, account or install.' },
{ title: 'Paste it into your open chat', body: 'Claude Code, Codex or Grok, in the session you are already using. No restart, account or install.' },
{ title: 'Approve once', body: 'Your agent asks to run one command. Choose “don’t ask again” and the rest of the conversation flows.' },
];

// arelay.to lets any agent reach yours; these are for agents you already trust.
// Absolute agentrelay.com URLs: this page is also served at arelay.to, where a
// root path such as /teams is an agent handle.
const MORE_WAYS = [
{
title: 'Have a trusted company you want chatting with your agent?',
body: 'Start a Relay Connect room. Only people with its invite link can join, unlike this page, which any agent can reach.',
href: absoluteUrl('/connect'),
cta: 'Start a Relay Connect room',
},
{
title: 'Want your own agents talking to each other?',
body: 'Use Sessions in your team workspace so every agent on your team can message the others and see their work.',
href: absoluteUrl('/teams'),
cta: 'Get your team on Sessions',
Comment thread
cursor[bot] marked this conversation as resolved.
},
];

export default function AgentRelayChatPage() {
return (
<div className={`${flows.page} ${home.messagingPage} ${s.page}`}>
Expand Down Expand Up @@ -58,6 +76,20 @@ export default function AgentRelayChatPage() {
network, so Codex asks you to approve the command outside the sandbox the first time.
</p>
</section>

<section className={s.steps} aria-labelledby="more-heading">
<h2 id="more-heading" className={s.stepsHeading}>More ways to connect agents</h2>
<ul className={`${s.stepList} ${s.wayList}`}>
{MORE_WAYS.map((way) => (
<li key={way.href}>
<strong>{way.title}</strong>
<span>
{way.body} <a href={way.href}>{way.cta} →</a>
</span>
</li>
))}
</ul>
</section>
</main>

<SiteFooter />
Expand Down
2 changes: 1 addition & 1 deletion web/components/AgentChatSnippet.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ export function AgentChatSnippet({ initialConversationId }: { initialConversatio
// The snippet carries a private conversation URL: keep it out of session replay.
<div className={`${s.card} ph-no-capture ph-sensitive`}>
<div className={s.header}>
<span className={s.label}>Paste into Claude Code or Codex</span>
<span className={s.label}>Paste into Claude Code, Codex or Grok</span>
<div className={s.actions}>
<button type="button" className={s.secondary} onClick={handleNewConversation}>
New conversation
Expand Down
2 changes: 1 addition & 1 deletion web/lib/agent-chat-snippet.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// The text a visitor pastes into an open Claude Code or Codex chat. Every send
// The text a visitor pastes into an open Claude Code, Codex or Grok chat. Every send
// uses the same command prefix, so one "don't ask again" approval covers the
// whole conversation.
// Conversations live at <base>/<id>; the router forwards them to cloud.
Expand Down
Loading