@agent-relay/dashboard 2.0.81 → 2.0.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/out/404.html +1 -1
- package/out/_next/static/chunks/{118-4c8241b0218335de.js → 118-ae2b650136a5a5fc.js} +1 -1
- package/out/_next/static/chunks/407-0c82986cf79c8ecb.js +1 -0
- package/out/_next/static/chunks/app/app/[[...slug]]/{page-1e81c047cff17212.js → page-f7eca1b66fb4249b.js} +1 -1
- package/out/_next/static/chunks/app/{page-6892fe2dd07fb48b.js → page-0ee604f7070d14c0.js} +1 -1
- package/out/_next/static/css/8968d98ed4c4d33f.css +1 -0
- package/out/about.html +2 -2
- package/out/about.txt +1 -1
- package/out/app/onboarding.html +1 -1
- package/out/app/onboarding.txt +1 -1
- package/out/app.html +1 -1
- package/out/app.txt +2 -2
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.html +2 -2
- package/out/blog/go-to-bed-wake-up-to-a-finished-product.txt +1 -1
- package/out/blog/let-them-cook-multi-agent-orchestration.html +2 -2
- package/out/blog/let-them-cook-multi-agent-orchestration.txt +2 -2
- package/out/blog.html +2 -2
- package/out/blog.txt +1 -1
- package/out/careers.html +2 -2
- package/out/careers.txt +1 -1
- package/out/changelog.html +2 -2
- package/out/changelog.txt +1 -1
- package/out/cloud/link.html +1 -1
- package/out/cloud/link.txt +2 -2
- package/out/complete-profile.html +2 -2
- package/out/complete-profile.txt +1 -1
- package/out/connect-repos.html +1 -1
- package/out/connect-repos.txt +1 -1
- package/out/contact.html +2 -2
- package/out/contact.txt +1 -1
- package/out/docs.html +2 -2
- package/out/docs.txt +1 -1
- package/out/history.html +1 -1
- package/out/history.txt +2 -2
- package/out/index.html +1 -1
- package/out/index.txt +2 -2
- package/out/login.html +2 -2
- package/out/login.txt +1 -1
- package/out/metrics.html +1 -1
- package/out/metrics.txt +2 -2
- package/out/pricing.html +2 -2
- package/out/pricing.txt +1 -1
- package/out/privacy.html +2 -2
- package/out/privacy.txt +1 -1
- package/out/providers/setup/claude.html +1 -1
- package/out/providers/setup/claude.txt +1 -1
- package/out/providers/setup/codex.html +1 -1
- package/out/providers/setup/codex.txt +1 -1
- package/out/providers/setup/cursor.html +1 -1
- package/out/providers/setup/cursor.txt +1 -1
- package/out/providers.html +1 -1
- package/out/providers.txt +1 -1
- package/out/security.html +2 -2
- package/out/security.txt +1 -1
- package/out/signup.html +2 -2
- package/out/signup.txt +1 -1
- package/out/terms.html +2 -2
- package/out/terms.txt +1 -1
- package/package.json +7 -1
- package/src/app/about/page.tsx +7 -0
- package/src/app/app/[[...slug]]/DashboardPageClient.tsx +853 -0
- package/src/app/app/[[...slug]]/page.tsx +23 -0
- package/src/app/app/onboarding/page.tsx +394 -0
- package/src/app/apple-icon.png +0 -0
- package/src/app/blog/go-to-bed-wake-up-to-a-finished-product/page.tsx +88 -0
- package/src/app/blog/let-them-cook-multi-agent-orchestration/page.tsx +93 -0
- package/src/app/blog/page.tsx +15 -0
- package/src/app/careers/page.tsx +7 -0
- package/src/app/changelog/page.tsx +7 -0
- package/src/app/cloud/link/page.tsx +464 -0
- package/src/app/complete-profile/page.tsx +204 -0
- package/src/app/connect-repos/page.tsx +410 -0
- package/src/app/contact/page.tsx +7 -0
- package/src/app/docs/page.tsx +7 -0
- package/src/app/favicon.png +0 -0
- package/src/app/globals.css +200 -0
- package/src/app/history/page.tsx +658 -0
- package/src/app/layout.tsx +25 -0
- package/src/app/login/page.tsx +424 -0
- package/src/app/metrics/page.tsx +781 -0
- package/src/app/page.tsx +59 -0
- package/src/app/pricing/page.tsx +7 -0
- package/src/app/privacy/page.tsx +7 -0
- package/src/app/providers/page.tsx +193 -0
- package/src/app/providers/setup/[provider]/ProviderSetupClient.tsx +197 -0
- package/src/app/providers/setup/[provider]/constants.ts +35 -0
- package/src/app/providers/setup/[provider]/page.tsx +42 -0
- package/src/app/security/page.tsx +7 -0
- package/src/app/signup/page.tsx +533 -0
- package/src/app/terms/page.tsx +7 -0
- package/src/components/ActivityFeed.tsx +216 -0
- package/src/components/AddWorkspaceModal.tsx +170 -0
- package/src/components/AgentCard.test.tsx +134 -0
- package/src/components/AgentCard.tsx +585 -0
- package/src/components/AgentList.test.tsx +147 -0
- package/src/components/AgentList.tsx +419 -0
- package/src/components/AgentLogPreview.tsx +173 -0
- package/src/components/AgentProfilePanel.tsx +569 -0
- package/src/components/App.tsx +3424 -0
- package/src/components/BillingPanel.tsx +922 -0
- package/src/components/BillingResult.tsx +447 -0
- package/src/components/BroadcastComposer.tsx +690 -0
- package/src/components/ChannelAdminPanel.tsx +773 -0
- package/src/components/ChannelBrowser.tsx +385 -0
- package/src/components/ChannelChat.tsx +261 -0
- package/src/components/ChannelSidebar.tsx +399 -0
- package/src/components/CloudSessionProvider.tsx +130 -0
- package/src/components/CommandPalette.tsx +815 -0
- package/src/components/ConfirmationDialog.tsx +133 -0
- package/src/components/ConversationHistory.tsx +518 -0
- package/src/components/CoordinatorPanel.tsx +956 -0
- package/src/components/DecisionQueue.tsx +717 -0
- package/src/components/DirectMessageView.tsx +164 -0
- package/src/components/FileAutocomplete.tsx +368 -0
- package/src/components/FleetOverview.tsx +278 -0
- package/src/components/LogViewer.tsx +310 -0
- package/src/components/LogViewerPanel.tsx +482 -0
- package/src/components/Logo.tsx +284 -0
- package/src/components/MentionAutocomplete.tsx +384 -0
- package/src/components/MessageComposer.tsx +473 -0
- package/src/components/MessageList.tsx +725 -0
- package/src/components/MessageSenderName.tsx +91 -0
- package/src/components/MessageStatusIndicator.tsx +142 -0
- package/src/components/NewConversationModal.tsx +400 -0
- package/src/components/NotificationToast.tsx +488 -0
- package/src/components/OnlineUsersIndicator.tsx +164 -0
- package/src/components/Pagination.tsx +124 -0
- package/src/components/PricingPlans.tsx +386 -0
- package/src/components/ProjectList.tsx +711 -0
- package/src/components/ProviderAuthFlow.tsx +343 -0
- package/src/components/ProviderConnectionList.tsx +375 -0
- package/src/components/ProvisioningProgress.tsx +730 -0
- package/src/components/ReactionChips.tsx +70 -0
- package/src/components/ReactionPicker.tsx +121 -0
- package/src/components/RepoAccessPanel.tsx +787 -0
- package/src/components/RepositoriesPanel.tsx +901 -0
- package/src/components/ServerCard.tsx +202 -0
- package/src/components/SessionExpiredModal.tsx +128 -0
- package/src/components/SpawnModal.test.tsx +190 -0
- package/src/components/SpawnModal.tsx +1001 -0
- package/src/components/TaskAssignmentUI.tsx +375 -0
- package/src/components/TerminalProviderSetup.tsx +517 -0
- package/src/components/ThemeProvider.tsx +159 -0
- package/src/components/ThinkingIndicator.tsx +231 -0
- package/src/components/ThreadList.tsx +198 -0
- package/src/components/ThreadPanel.tsx +405 -0
- package/src/components/TrajectoryViewer.tsx +698 -0
- package/src/components/TypingIndicator.tsx +69 -0
- package/src/components/UsageBanner.tsx +231 -0
- package/src/components/UserProfilePanel.tsx +233 -0
- package/src/components/WorkspaceContext.tsx +95 -0
- package/src/components/WorkspaceSelector.tsx +234 -0
- package/src/components/WorkspaceStatusIndicator.tsx +396 -0
- package/src/components/XTermInteractive.tsx +516 -0
- package/src/components/XTermLogViewer.tsx +719 -0
- package/src/components/channels/ChannelDialogs.tsx +1411 -0
- package/src/components/channels/ChannelHeader.tsx +317 -0
- package/src/components/channels/ChannelMessageList.tsx +463 -0
- package/src/components/channels/ChannelViewV1.tsx +146 -0
- package/src/components/channels/MessageInput.tsx +302 -0
- package/src/components/channels/SearchInput.tsx +172 -0
- package/src/components/channels/SearchResults.tsx +336 -0
- package/src/components/channels/api.test.ts +1527 -0
- package/src/components/channels/api.ts +703 -0
- package/src/components/channels/index.ts +76 -0
- package/src/components/channels/mockApi.ts +344 -0
- package/src/components/channels/types.ts +566 -0
- package/src/components/hooks/index.ts +58 -0
- package/src/components/hooks/useAgentLogs.ts +504 -0
- package/src/components/hooks/useAgents.ts +127 -0
- package/src/components/hooks/useBroadcastDedup.test.ts +371 -0
- package/src/components/hooks/useBroadcastDedup.ts +86 -0
- package/src/components/hooks/useChannelAdmin.ts +329 -0
- package/src/components/hooks/useChannelBrowser.ts +239 -0
- package/src/components/hooks/useChannelCommands.ts +138 -0
- package/src/components/hooks/useChannels.ts +367 -0
- package/src/components/hooks/useDebounce.ts +29 -0
- package/src/components/hooks/useDirectMessage.test.ts +952 -0
- package/src/components/hooks/useDirectMessage.ts +141 -0
- package/src/components/hooks/useMessages.ts +310 -0
- package/src/components/hooks/useOrchestrator.test.ts +165 -0
- package/src/components/hooks/useOrchestrator.ts +424 -0
- package/src/components/hooks/usePinnedAgents.test.ts +356 -0
- package/src/components/hooks/usePinnedAgents.ts +140 -0
- package/src/components/hooks/usePresence.test.ts +245 -0
- package/src/components/hooks/usePresence.ts +377 -0
- package/src/components/hooks/useRecentRepos.ts +130 -0
- package/src/components/hooks/useSession.ts +209 -0
- package/src/components/hooks/useThread.ts +138 -0
- package/src/components/hooks/useTrajectory.ts +265 -0
- package/src/components/hooks/useWebSocket.ts +290 -0
- package/src/components/hooks/useWorkspaceMembers.ts +132 -0
- package/src/components/hooks/useWorkspaceRepos.ts +73 -0
- package/src/components/hooks/useWorkspaceStatus.ts +237 -0
- package/src/components/index.ts +81 -0
- package/src/components/layout/Header.tsx +311 -0
- package/src/components/layout/RepoContextHeader.tsx +361 -0
- package/src/components/layout/Sidebar.archive.test.tsx +126 -0
- package/src/components/layout/Sidebar.test.tsx +691 -0
- package/src/components/layout/Sidebar.tsx +900 -0
- package/src/components/layout/index.ts +7 -0
- package/src/components/settings/BillingSettingsPanel.tsx +564 -0
- package/src/components/settings/SettingsPage.tsx +683 -0
- package/src/components/settings/TeamSettingsPanel.tsx +560 -0
- package/src/components/settings/WorkspaceSettingsPanel.tsx +1368 -0
- package/src/components/settings/index.ts +11 -0
- package/src/components/settings/types.ts +79 -0
- package/src/components/utils/messageFormatting.test.tsx +331 -0
- package/src/components/utils/messageFormatting.tsx +597 -0
- package/src/index.ts +63 -0
- package/src/landing/AboutPage.tsx +77 -0
- package/src/landing/BlogContent.tsx +187 -0
- package/src/landing/BlogPage.tsx +47 -0
- package/src/landing/CareersPage.tsx +53 -0
- package/src/landing/ChangelogPage.tsx +33 -0
- package/src/landing/ContactPage.tsx +41 -0
- package/src/landing/DocsPage.tsx +43 -0
- package/src/landing/LandingPage.tsx +702 -0
- package/src/landing/PricingPage.tsx +549 -0
- package/src/landing/PrivacyPage.tsx +117 -0
- package/src/landing/SecurityPage.tsx +42 -0
- package/src/landing/StaticPage.tsx +165 -0
- package/src/landing/TermsPage.tsx +125 -0
- package/src/landing/blogData.ts +312 -0
- package/src/landing/index.ts +18 -0
- package/src/landing/styles.css +3673 -0
- package/src/lib/agent-merge.test.ts +43 -0
- package/src/lib/agent-merge.ts +35 -0
- package/src/lib/api.ts +1294 -0
- package/src/lib/cloudApi.ts +893 -0
- package/src/lib/colors.test.ts +175 -0
- package/src/lib/colors.ts +218 -0
- package/src/lib/config.ts +109 -0
- package/src/lib/hierarchy.ts +242 -0
- package/src/lib/stuckDetection.ts +142 -0
- package/src/lib/useUrlRouting.ts +190 -0
- package/src/types/index.ts +317 -0
- package/src/types/threading.ts +7 -0
- package/out/_next/static/chunks/285-dc644487a8d6500d.js +0 -1
- package/out/_next/static/css/4c58d9cf493aa626.css +0 -1
- /package/out/_next/static/{dYlczDQI12PIQ3tqq3N4Y → IxfA6RZu4trcsEMYlkQra}/_buildManifest.js +0 -0
- /package/out/_next/static/{dYlczDQI12PIQ3tqq3N4Y → IxfA6RZu4trcsEMYlkQra}/_ssgManifest.js +0 -0
- /package/out/_next/static/chunks/{528-d375bc8b46912d2c.js → 528-f5f676996d613c25.js} +0 -0
- /package/out/_next/static/chunks/app/blog/let-them-cook-multi-agent-orchestration/{page-a58308f43557b908.js → page-b194f207fbd91862.js} +0 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Relay Cloud - Security Page
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { StaticPage } from './StaticPage';
|
|
7
|
+
|
|
8
|
+
export function SecurityPage() {
|
|
9
|
+
return (
|
|
10
|
+
<StaticPage
|
|
11
|
+
title="Security"
|
|
12
|
+
subtitle="How we protect your code and data."
|
|
13
|
+
>
|
|
14
|
+
<h2>Data Handling</h2>
|
|
15
|
+
<ul>
|
|
16
|
+
<li>Your source code is processed in isolated, ephemeral containers</li>
|
|
17
|
+
<li>Repository access tokens are scoped to minimum required permissions</li>
|
|
18
|
+
<li>All data is encrypted in transit using TLS</li>
|
|
19
|
+
<li>Credentials are encrypted at rest</li>
|
|
20
|
+
</ul>
|
|
21
|
+
|
|
22
|
+
<h2>Authentication</h2>
|
|
23
|
+
<ul>
|
|
24
|
+
<li>OAuth 2.0 authentication via GitHub</li>
|
|
25
|
+
<li>Session management with automatic timeout</li>
|
|
26
|
+
</ul>
|
|
27
|
+
|
|
28
|
+
<h2>AI Providers</h2>
|
|
29
|
+
<p>
|
|
30
|
+
We integrate with AI providers who maintain their own security standards. We recommend reviewing each provider's data handling policies.
|
|
31
|
+
</p>
|
|
32
|
+
|
|
33
|
+
<h2>Contact</h2>
|
|
34
|
+
<p>
|
|
35
|
+
For security questions or to report vulnerabilities, contact us at{' '}
|
|
36
|
+
<a href="mailto:security@agent-relay.com">security@agent-relay.com</a>.
|
|
37
|
+
</p>
|
|
38
|
+
</StaticPage>
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
export default SecurityPage;
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Relay Cloud - Static Page Layout
|
|
3
|
+
*
|
|
4
|
+
* Shared layout component for static content pages (About, Privacy, Terms, etc.)
|
|
5
|
+
* Provides consistent navigation, footer, and content styling.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import React from 'react';
|
|
9
|
+
import './styles.css';
|
|
10
|
+
import { LogoIcon } from '../components/Logo';
|
|
11
|
+
|
|
12
|
+
interface StaticPageProps {
|
|
13
|
+
title: string;
|
|
14
|
+
titleLink?: string;
|
|
15
|
+
subtitle?: string;
|
|
16
|
+
children: React.ReactNode;
|
|
17
|
+
lastUpdated?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export function StaticPage({ title, titleLink, subtitle, children, lastUpdated }: StaticPageProps) {
|
|
21
|
+
return (
|
|
22
|
+
<div className="landing-page static-page">
|
|
23
|
+
<div className="landing-bg">
|
|
24
|
+
<GridBackground />
|
|
25
|
+
<GlowOrbs />
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
<StaticNavigation />
|
|
29
|
+
|
|
30
|
+
<main>
|
|
31
|
+
<section className="static-hero">
|
|
32
|
+
<div className="static-hero-content">
|
|
33
|
+
<h1>{titleLink ? <a href={titleLink} style={{ color: 'inherit', textDecoration: 'none' }}>{title}</a> : title}</h1>
|
|
34
|
+
{subtitle && <p className="static-subtitle">{subtitle}</p>}
|
|
35
|
+
{lastUpdated && <p className="static-updated">Last updated: {lastUpdated}</p>}
|
|
36
|
+
</div>
|
|
37
|
+
</section>
|
|
38
|
+
|
|
39
|
+
<section className="static-content">
|
|
40
|
+
<div className="content-container">
|
|
41
|
+
{children}
|
|
42
|
+
</div>
|
|
43
|
+
</section>
|
|
44
|
+
</main>
|
|
45
|
+
|
|
46
|
+
<StaticFooter />
|
|
47
|
+
</div>
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function StaticNavigation() {
|
|
52
|
+
return (
|
|
53
|
+
<nav className="nav scrolled">
|
|
54
|
+
<div className="nav-inner">
|
|
55
|
+
<a href="/" className="nav-logo">
|
|
56
|
+
<LogoIcon size={28} withGlow={true} />
|
|
57
|
+
<span className="logo-text">Agent Relay</span>
|
|
58
|
+
</a>
|
|
59
|
+
|
|
60
|
+
<div className="nav-links">
|
|
61
|
+
<a href="/#demo">Demo</a>
|
|
62
|
+
<a href="/#features">Features</a>
|
|
63
|
+
<a href="/pricing">Pricing</a>
|
|
64
|
+
<a href="https://docs.agent-relay.com/" className="nav-docs">Docs</a>
|
|
65
|
+
</div>
|
|
66
|
+
|
|
67
|
+
<div className="nav-actions">
|
|
68
|
+
<a href="/login" className="btn-ghost">Sign In</a>
|
|
69
|
+
<a href="/signup" className="btn-primary">Get Started</a>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</nav>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
function StaticFooter() {
|
|
77
|
+
return (
|
|
78
|
+
<footer className="footer">
|
|
79
|
+
<div className="footer-inner">
|
|
80
|
+
<div className="footer-brand">
|
|
81
|
+
<a href="/" className="footer-logo">
|
|
82
|
+
<LogoIcon size={24} withGlow={true} />
|
|
83
|
+
<span className="logo-text">Agent Relay</span>
|
|
84
|
+
</a>
|
|
85
|
+
<p>Orchestrate AI agents like a symphony.</p>
|
|
86
|
+
</div>
|
|
87
|
+
|
|
88
|
+
<div className="footer-links">
|
|
89
|
+
<div className="footer-column">
|
|
90
|
+
<h4>Product</h4>
|
|
91
|
+
<a href="/#features">Features</a>
|
|
92
|
+
<a href="/pricing">Pricing</a>
|
|
93
|
+
<a href="https://docs.agent-relay.com/">Documentation</a>
|
|
94
|
+
<a href="/changelog">Changelog</a>
|
|
95
|
+
</div>
|
|
96
|
+
<div className="footer-column">
|
|
97
|
+
<h4>Company</h4>
|
|
98
|
+
<a href="/about">About</a>
|
|
99
|
+
<a href="/blog">Blog</a>
|
|
100
|
+
<a href="/careers">Careers</a>
|
|
101
|
+
<a href="/contact">Contact</a>
|
|
102
|
+
</div>
|
|
103
|
+
<div className="footer-column">
|
|
104
|
+
<h4>Legal</h4>
|
|
105
|
+
<a href="/privacy">Privacy</a>
|
|
106
|
+
<a href="/terms">Terms</a>
|
|
107
|
+
<a href="/security">Security</a>
|
|
108
|
+
</div>
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
<div className="footer-bottom">
|
|
113
|
+
<p>© 2026 Agent Relay. All rights reserved.</p>
|
|
114
|
+
<div className="social-links">
|
|
115
|
+
<a href="https://github.com/AgentWorkforce/relay" aria-label="GitHub">
|
|
116
|
+
<GitHubIcon />
|
|
117
|
+
</a>
|
|
118
|
+
<a href="https://twitter.com/agent_relay" aria-label="Twitter">
|
|
119
|
+
<TwitterIcon />
|
|
120
|
+
</a>
|
|
121
|
+
</div>
|
|
122
|
+
</div>
|
|
123
|
+
</footer>
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Background components
|
|
128
|
+
function GridBackground() {
|
|
129
|
+
return (
|
|
130
|
+
<div className="grid-bg">
|
|
131
|
+
<div className="grid-lines" />
|
|
132
|
+
<div className="grid-glow" />
|
|
133
|
+
</div>
|
|
134
|
+
);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
function GlowOrbs() {
|
|
138
|
+
return (
|
|
139
|
+
<div className="glow-orbs">
|
|
140
|
+
<div className="orb orb-1" />
|
|
141
|
+
<div className="orb orb-2" />
|
|
142
|
+
<div className="orb orb-3" />
|
|
143
|
+
</div>
|
|
144
|
+
);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// Icons
|
|
148
|
+
function GitHubIcon() {
|
|
149
|
+
return (
|
|
150
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
|
|
151
|
+
<path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" />
|
|
152
|
+
</svg>
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function TwitterIcon() {
|
|
157
|
+
return (
|
|
158
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor">
|
|
159
|
+
<path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
|
160
|
+
</svg>
|
|
161
|
+
);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
export default StaticPage;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Relay Cloud - Terms of Service Page
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { StaticPage } from './StaticPage';
|
|
7
|
+
|
|
8
|
+
export function TermsPage() {
|
|
9
|
+
return (
|
|
10
|
+
<StaticPage
|
|
11
|
+
title="Terms of Service"
|
|
12
|
+
subtitle="The rules of the road for using Agent Relay."
|
|
13
|
+
lastUpdated="January 15, 2026"
|
|
14
|
+
>
|
|
15
|
+
<h2>Agreement to Terms</h2>
|
|
16
|
+
<p>
|
|
17
|
+
By accessing or using Agent Relay ("Service"), you agree to be bound by these Terms of Service ("Terms"). If you do not agree, please do not use our Service.
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
<h2>Description of Service</h2>
|
|
21
|
+
<p>
|
|
22
|
+
Agent Relay is an AI agent orchestration platform that enables developers to deploy, coordinate, and monitor multiple AI agents working together on software development tasks. Our Service includes web-based dashboards, APIs, and integrations with AI providers and code repositories.
|
|
23
|
+
</p>
|
|
24
|
+
|
|
25
|
+
<h2>Account Registration</h2>
|
|
26
|
+
<p>To use certain features of the Service, you must register for an account. You agree to:</p>
|
|
27
|
+
<ul>
|
|
28
|
+
<li>Provide accurate, current, and complete information</li>
|
|
29
|
+
<li>Maintain and update your information as needed</li>
|
|
30
|
+
<li>Keep your password secure and confidential</li>
|
|
31
|
+
<li>Accept responsibility for all activities under your account</li>
|
|
32
|
+
<li>Notify us immediately of any unauthorized use</li>
|
|
33
|
+
</ul>
|
|
34
|
+
|
|
35
|
+
<h2>Acceptable Use</h2>
|
|
36
|
+
<p>You agree not to use the Service to:</p>
|
|
37
|
+
<ul>
|
|
38
|
+
<li>Violate any applicable laws or regulations</li>
|
|
39
|
+
<li>Generate malicious code, malware, or security exploits</li>
|
|
40
|
+
<li>Harass, abuse, or harm others</li>
|
|
41
|
+
<li>Infringe on intellectual property rights</li>
|
|
42
|
+
<li>Attempt to gain unauthorized access to our systems</li>
|
|
43
|
+
<li>Interfere with or disrupt the Service</li>
|
|
44
|
+
<li>Reverse engineer or decompile the Service</li>
|
|
45
|
+
<li>Use automated means to access the Service without permission</li>
|
|
46
|
+
<li>Circumvent usage limits or billing controls</li>
|
|
47
|
+
</ul>
|
|
48
|
+
|
|
49
|
+
<h2>AI Provider Terms</h2>
|
|
50
|
+
<p>
|
|
51
|
+
Our Service integrates with third-party AI providers (Anthropic, OpenAI, Google). By using these integrations, you also agree to comply with their respective terms of service and usage policies. You are responsible for ensuring your use complies with all applicable AI provider terms.
|
|
52
|
+
</p>
|
|
53
|
+
|
|
54
|
+
<h2>Intellectual Property</h2>
|
|
55
|
+
<h3>Your Content</h3>
|
|
56
|
+
<p>
|
|
57
|
+
You retain ownership of all code, data, and content you provide to the Service ("Your Content"). By using the Service, you grant us a limited license to process Your Content solely to provide the Service.
|
|
58
|
+
</p>
|
|
59
|
+
|
|
60
|
+
<h3>Our Property</h3>
|
|
61
|
+
<p>
|
|
62
|
+
The Service, including its design, features, and documentation, is owned by Agent Relay and protected by intellectual property laws. You may not copy, modify, or distribute our intellectual property without permission.
|
|
63
|
+
</p>
|
|
64
|
+
|
|
65
|
+
<h2>Payment Terms</h2>
|
|
66
|
+
<p>
|
|
67
|
+
Paid plans are billed in advance on a monthly or annual basis. All fees are non-refundable except as required by law or as explicitly stated otherwise. We may change pricing with 30 days' notice.
|
|
68
|
+
</p>
|
|
69
|
+
<ul>
|
|
70
|
+
<li>Free tier usage is subject to specified limits</li>
|
|
71
|
+
<li>Exceeding plan limits may result in service throttling or additional charges</li>
|
|
72
|
+
<li>Failed payments may result in service suspension</li>
|
|
73
|
+
</ul>
|
|
74
|
+
|
|
75
|
+
<h2>Service Availability</h2>
|
|
76
|
+
<p>
|
|
77
|
+
We strive to maintain 99.9% uptime but do not guarantee uninterrupted access. We may perform maintenance or updates that temporarily affect availability. We are not liable for any damages resulting from service interruptions.
|
|
78
|
+
</p>
|
|
79
|
+
|
|
80
|
+
<h2>Limitation of Liability</h2>
|
|
81
|
+
<p>
|
|
82
|
+
TO THE MAXIMUM EXTENT PERMITTED BY LAW, AGENT RELAY SHALL NOT BE LIABLE FOR ANY INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, OR PUNITIVE DAMAGES, OR ANY LOSS OF PROFITS OR REVENUES, WHETHER INCURRED DIRECTLY OR INDIRECTLY, OR ANY LOSS OF DATA, USE, GOODWILL, OR OTHER INTANGIBLE LOSSES.
|
|
83
|
+
</p>
|
|
84
|
+
<p>
|
|
85
|
+
OUR TOTAL LIABILITY FOR ANY CLAIMS ARISING FROM THESE TERMS OR THE SERVICE SHALL NOT EXCEED THE AMOUNT YOU PAID US IN THE TWELVE (12) MONTHS PRECEDING THE CLAIM.
|
|
86
|
+
</p>
|
|
87
|
+
|
|
88
|
+
<h2>Disclaimer of Warranties</h2>
|
|
89
|
+
<p>
|
|
90
|
+
THE SERVICE IS PROVIDED "AS IS" AND "AS AVAILABLE" WITHOUT WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED. WE DISCLAIM ALL WARRANTIES INCLUDING MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
|
|
91
|
+
</p>
|
|
92
|
+
<p>
|
|
93
|
+
AI-generated outputs may contain errors. You are responsible for reviewing and validating all code and content produced by agents before use in production.
|
|
94
|
+
</p>
|
|
95
|
+
|
|
96
|
+
<h2>Indemnification</h2>
|
|
97
|
+
<p>
|
|
98
|
+
You agree to indemnify and hold harmless Agent Relay from any claims, damages, or expenses arising from your use of the Service, your violation of these Terms, or your violation of any rights of a third party.
|
|
99
|
+
</p>
|
|
100
|
+
|
|
101
|
+
<h2>Termination</h2>
|
|
102
|
+
<p>
|
|
103
|
+
You may terminate your account at any time through your account settings. We may suspend or terminate your access for violation of these Terms or for any other reason with notice. Upon termination, your right to use the Service ceases immediately.
|
|
104
|
+
</p>
|
|
105
|
+
|
|
106
|
+
<h2>Governing Law</h2>
|
|
107
|
+
<p>
|
|
108
|
+
These Terms are governed by the laws of the State of Delaware, without regard to conflict of law principles. Any disputes shall be resolved in the courts of Delaware.
|
|
109
|
+
</p>
|
|
110
|
+
|
|
111
|
+
<h2>Changes to Terms</h2>
|
|
112
|
+
<p>
|
|
113
|
+
We may modify these Terms at any time. Material changes will be notified via email or through the Service. Continued use after changes constitutes acceptance of the new Terms.
|
|
114
|
+
</p>
|
|
115
|
+
|
|
116
|
+
<h2>Contact</h2>
|
|
117
|
+
<p>
|
|
118
|
+
Questions about these Terms? Contact us at{' '}
|
|
119
|
+
<a href="mailto:legal@agent-relay.com">legal@agent-relay.com</a>.
|
|
120
|
+
</p>
|
|
121
|
+
</StaticPage>
|
|
122
|
+
);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export default TermsPage;
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Relay Cloud - Blog Post Data
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export interface BlogPost {
|
|
6
|
+
id: string;
|
|
7
|
+
title: string;
|
|
8
|
+
subtitle: string;
|
|
9
|
+
date: string;
|
|
10
|
+
author: string;
|
|
11
|
+
category: string;
|
|
12
|
+
excerpt: string;
|
|
13
|
+
content: string;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export const blogPosts: BlogPost[] = [
|
|
17
|
+
{
|
|
18
|
+
id: 'let-them-cook-multi-agent-orchestration',
|
|
19
|
+
title: 'Let Them Cook: Lessons from 6 Weeks of Multi-Agent Orchestration',
|
|
20
|
+
subtitle: 'What I learned watching AI agents coordinate, communicate, and occasionally fall apart',
|
|
21
|
+
date: 'February 4, 2026',
|
|
22
|
+
author: 'Khaliq Gant',
|
|
23
|
+
category: 'Engineering',
|
|
24
|
+
excerpt: 'Multi-agent orchestration is a step change in how tasks get done. After 6 weeks of building with agent swarms, here\'s what works, what breaks, and why the planning phase becomes everything.',
|
|
25
|
+
content: `
|
|
26
|
+
I've been building [Agent Relay](https://github.com/AgentWorkforce/relay) using Agent Relay. Agents coordinating to build the tool that lets them coordinate. It sounds recursive because it is. I took some time to jot down some thoughts about multi-agent orchestration from the past few weeks where I've spoken to agents more than I've spoken to my wife 😳.
|
|
27
|
+
|
|
28
|
+
For the past six weeks, I've been deep in this world. Agent Relay is an open-source communication layer allowing any CLI tool (Claude, Cursor, OpenCode, Gemini) to communicate efficiently and seamlessly. And it's rumored that Claude Code is coming out with first-party support for agent swarms:
|
|
29
|
+
|
|
30
|
+
{{tweet:https://twitter.com/nummanali/status/2014698883507462387}}
|
|
31
|
+
|
|
32
|
+
Am I worried about this? If I'm being completely honest, yes, a little bit. But my main feeling is that it's great to push multi-agent orchestration into the forefront of developer minds so the true power can be experienced and more best practices form around it.
|
|
33
|
+
|
|
34
|
+
## Key Takeaways
|
|
35
|
+
|
|
36
|
+
- **2-5 worker agents per Lead** is the sweet spot
|
|
37
|
+
- **Claude for coordination, Codex for deep work** (match the CLI to the role)
|
|
38
|
+
- **Planning is everything** (agents cut corners on vague specs)
|
|
39
|
+
- **Shadow agents and reviewers** catch lazy work
|
|
40
|
+
- **Store trajectories** so future agents have context
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
## Part 1: The Promise
|
|
44
|
+
|
|
45
|
+
Multi-agent orchestration is a step change in how tasks get done. It puts agents front and center while the human takes a step back and just lets them cook. That doesn't mean the human will be completely removed. There are still bumps in the road to truly autonomous agent work, and the planning phase becomes one of the most crucial steps.
|
|
46
|
+
|
|
47
|
+
### What Multi-Agent Unlocks
|
|
48
|
+
|
|
49
|
+
Having agents who can communicate with each other and coordinate on tasks is a huge unlock. Assigning [agent profiles](https://github.com/AgentWorkforce/relay/tree/main/.claude/agents) similar to how human teams would organize has been a paradigm I have found success with. For instance:
|
|
50
|
+
|
|
51
|
+
- **Lead** – coordinates the team and breaks down tasks
|
|
52
|
+
- **Backend** – implements server-side logic
|
|
53
|
+
- **BackendReviewer** – reviews backend code for quality
|
|
54
|
+
- **FrontendReviewer** – reviews frontend code for quality
|
|
55
|
+
- **TypeChecker** – ensures type safety across the codebase
|
|
56
|
+
- **TestWriter** – writes and maintains tests
|
|
57
|
+
- **DocumentationExpert** – handles docs and comments
|
|
58
|
+
|
|
59
|
+
Each agent assumes its role, can read the logs of other agents, and can message others to check their work, sanity-check their decisions, and hand off tasks in a coordinated manner.
|
|
60
|
+
|
|
61
|
+
### The Speed Improvement
|
|
62
|
+
|
|
63
|
+
The method that has worked well for me is creating a detailed spec upfront and then spawning a Lead agent. I give it the spec and tell it to assemble a team as it sees fit. The Lead then spawns agents accordingly. Because Agent Relay is CLI-agnostic, I make sure to mix Codex, Claude, OpenCode, Gemini, and Droid agents, assigning different models based on the role. A fast model like Haiku or Conductor for Lead roles, and for deeper technical tasks, Opus or GPT-5 Codex high.
|
|
64
|
+
|
|
65
|
+
Using this workflow, I've seen that not only does code quality increase, but the speed at which agents can pump out complex features is at least a **4-5X improvement**.
|
|
66
|
+
|
|
67
|
+
I have been using Agent Relay to build itself on the cloud environment at [agent-relay.com](https://agent-relay.com) and the pace of delivery has been mind-blowing.
|
|
68
|
+
|
|
69
|
+
It hasn't been all good though...
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
## Part 2: The Problems
|
|
73
|
+
|
|
74
|
+
### Agents Are Sometimes Lazy
|
|
75
|
+
|
|
76
|
+
I've had instances where an agent swarm takes on a complicated feature and then the Lead excitedly declares everything done. On one build, the Lead proudly reported "All 12 endpoints implemented!" When I tested it, only 8 actually returned data. The rest were stubbed out with TODOs. This happened occasionally with single-agent sessions, but imagine it compounding across 5, 6, or 10 agents...
|
|
77
|
+
|
|
78
|
+
### Agents Get Overwhelmed and Die
|
|
79
|
+
|
|
80
|
+
Having a Lead agent creates a single point of failure. If the swarm is large and chatty, the Lead receives a flood of messages from other agents plus queries from the human asking about status or redirecting work. This can overwhelm the Lead, causing it to enter an endless loop and eventually die or become completely unresponsive.
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
## Part 3: The Playbook
|
|
84
|
+
|
|
85
|
+
Here's what I've learned about making multi-agent orchestration actually work.
|
|
86
|
+
|
|
87
|
+
### Team Structure
|
|
88
|
+
|
|
89
|
+
Team structure is critical. There's a magic ratio of Lead-to-worker agents that I haven't exactly figured out yet (it varies depending on roles) but I've had success with **2-5 worker agents per Lead**. A single Lead managing 10 agents usually becomes problematic.
|
|
90
|
+
|
|
91
|
+
### Communication Patterns by CLI
|
|
92
|
+
|
|
93
|
+
Not all CLI agents communicate the same way, and taking this into account is beneficial when working with swarms.
|
|
94
|
+
|
|
95
|
+
**Codex** is great at heads-down work but doesn't communicate well. Once it's working, it's hard to interrupt. I've had Leads waiting 15+ minutes for a response, assuming the agent died, when Codex was just deep in implementation.
|
|
96
|
+
|
|
97
|
+
**Claude** communicates excellently and can be interrupted mid-task without issue. It naturally provides status updates and asks clarifying questions.
|
|
98
|
+
|
|
99
|
+
**Cursor** (particularly Composer) is very fast and communicates well, making it good for rapid iteration.
|
|
100
|
+
|
|
101
|
+
**My staffing rule of thumb:** Put Claude agents in Lead and Reviewer roles where communication is key. Put Codex agents on isolated implementation tasks where heads-down focus is more valuable than status updates. Use Cursor when you need speed and tight feedback loops.
|
|
102
|
+
|
|
103
|
+
Agent Relay allows users to define a \`teams.json\` ([docs](https://docs.agent-relay.com/reference/configuration#project-configuration-files)) that auto-spawns agents on start, so these staffing decisions can be codified and stay consistent across sessions:
|
|
104
|
+
|
|
105
|
+
\`\`\`json
|
|
106
|
+
{
|
|
107
|
+
"team": "my-team",
|
|
108
|
+
"autoSpawn": true,
|
|
109
|
+
"agents": [
|
|
110
|
+
{
|
|
111
|
+
"name": "Coordinator",
|
|
112
|
+
"cli": "claude",
|
|
113
|
+
"role": "coordinator",
|
|
114
|
+
"task": "Coordinate the team..."
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "Developer",
|
|
118
|
+
"cli": "codex",
|
|
119
|
+
"task": "Implement features..."
|
|
120
|
+
}
|
|
121
|
+
]
|
|
122
|
+
}
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
### Catching Lazy Work
|
|
126
|
+
|
|
127
|
+
Agent Relay has a notion of a [**shadow agent**](https://docs.agent-relay.com/features/shadows#shadow-agents) that helps quite a bit with this problem. Reviewer agents also typically catch shoddy work.
|
|
128
|
+
|
|
129
|
+

|
|
130
|
+
|
|
131
|
+
Additionally, layering in one of the many AI code review tools has been effective at catching minor issues.
|
|
132
|
+
|
|
133
|
+
### Continuity and Hooks
|
|
134
|
+
|
|
135
|
+
Agent Relay has a [\`continuity\`](https://docs.agent-relay.com/guides/session-continuity#session-continuity) concept, largely borrowed from the [Continuous Claude](https://github.com/parcadei/Continuous-Claude-v3) package by [@parcadei](https://x.com/parcadei). This enables ephemeral agents that save their context periodically, get released, then spawn again and continue seamlessly by reading their saved state.
|
|
136
|
+
|
|
137
|
+
If you want more granular control or access to agent lifecycle events, Agent Relay has an extensive [hooks system](https://docs.agent-relay.com/guides/hooks) with 7 different events:
|
|
138
|
+
|
|
139
|
+
| Hook | Description |
|
|
140
|
+
|------|-------------|
|
|
141
|
+
| \`onSessionStart\` | Agent starts |
|
|
142
|
+
| \`onSessionEnd\` | Agent stops |
|
|
143
|
+
| \`onOutput\` | Agent produces output |
|
|
144
|
+
| \`onMessageReceived\` | Receives relay message |
|
|
145
|
+
| \`onMessageSent\` | Sends relay message |
|
|
146
|
+
| \`onIdle\` | Agent inactive |
|
|
147
|
+
| \`onError\` | Error occurs |
|
|
148
|
+
|
|
149
|
+
### Trajectories: Preserving Context
|
|
150
|
+
|
|
151
|
+
One unexpected unlock has been having agents store **trajectories**, a train of thought stored in logical chapters for a completed task. Inspired by [this thread](https://x.com/gergelyorosz/status/2002160432841097239) from [@GergelyOrosz](https://x.com/GergelyOrosz).
|
|
152
|
+
|
|
153
|
+
\`\`\`json
|
|
154
|
+
{
|
|
155
|
+
"id": "traj_itn5hyej5mi6",
|
|
156
|
+
"task": { "title": "Fix module resolution issues" },
|
|
157
|
+
"status": "completed",
|
|
158
|
+
"chapters": [
|
|
159
|
+
{
|
|
160
|
+
"title": "Work",
|
|
161
|
+
"events": [
|
|
162
|
+
{
|
|
163
|
+
"type": "decision",
|
|
164
|
+
"content": "Thread shadowMode through protocol layers",
|
|
165
|
+
"raw": { "reasoning": "Devin review found fields were silently dropped..." },
|
|
166
|
+
"significance": "high"
|
|
167
|
+
}
|
|
168
|
+
]
|
|
169
|
+
}
|
|
170
|
+
],
|
|
171
|
+
"retrospective": {
|
|
172
|
+
"summary": "Fixed issue by threading shadow options through all layers",
|
|
173
|
+
"confidence": 0.9
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
\`\`\`
|
|
177
|
+
|
|
178
|
+
The [AgentWorkforce/trajectories](https://github.com/AgentWorkforce/trajectories/) repo provides a CLI tool that agents can easily understand. It becomes invaluable when an agent needs to revisit a previously-worked feature or investigate a bug. By finding the relevant trajectory, the agent gains instant context. These trajectories are also useful to humans reviewing the codebase.
|
|
179
|
+
|
|
180
|
+
### The Human's New Role
|
|
181
|
+
|
|
182
|
+
Coordinating with multiple agents and seeing output fly in at rapid speed is exhilarating. Being able to remove myself as the bottleneck is a huge benefit. This necessitates that the **planning phase is carefully and meticulously done** to ensure agents have well-defined tasks with edge cases thought out.
|
|
183
|
+
|
|
184
|
+
It also means the **review phase is paramount**. Having agents self-review and cross-review is an effective strategy.
|
|
185
|
+
|
|
186
|
+
|
|
187
|
+
## Try It Yourself
|
|
188
|
+
|
|
189
|
+
Want to experiment with multi-agent orchestration? You can [get started with Agent Relay Cloud](https://agent-relay.com) or set it up locally in seconds.
|
|
190
|
+
|
|
191
|
+
Just tell your CLI agent to run:
|
|
192
|
+
|
|
193
|
+
\`\`\`bash
|
|
194
|
+
curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md
|
|
195
|
+
\`\`\`
|
|
196
|
+
|
|
197
|
+
The agent will read the setup guide and configure everything, then let it cook.
|
|
198
|
+
|
|
199
|
+
Check out the [docs](https://docs.agent-relay.com) for more details, or hit me on X with any thoughts or questions. I'm all for a discussion: [@khaliqgant](https://x.com/khaliqgant)
|
|
200
|
+
|
|
201
|
+
## References
|
|
202
|
+
|
|
203
|
+
- [Cursor: Scaling Agents](https://cursor.com/blog/scaling-agents) – An interesting perspective on how Cursor is thinking about agent scaling and the challenges involved
|
|
204
|
+
- [@pbteja1998 on multi-agent swarms with OpenClaw](https://x.com/pbteja1998/status/2017662163540971756) – Exciting developments in how people are experimenting with multi-agent orchestration
|
|
205
|
+
`,
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
id: 'go-to-bed-wake-up-to-a-finished-product',
|
|
209
|
+
title: 'Go to Bed, Wake Up to a Finished Product',
|
|
210
|
+
subtitle: 'How agent-to-agent communication is changing autonomous development',
|
|
211
|
+
date: 'February 1, 2026',
|
|
212
|
+
author: 'Khaliq Gant',
|
|
213
|
+
category: 'Vision',
|
|
214
|
+
excerpt: 'Agent-to-agent communication is weird, fascinating, and potentially revolutionary. Here\'s how we built a system where agents work autonomously while we sleep.',
|
|
215
|
+
content: `
|
|
216
|
+
The clear and obvious takeaway from [OpenClaw](https://openclaw.ai/) (Moltbot) and [Moltbook](https://www.moltbook.com/) is that agent-to-agent communication is first of all weird and fascinating, but the potential this unlocks is also unprecedented and potentially revolutionary.
|
|
217
|
+
|
|
218
|
+
On December 16th, we started a project where we wanted to get two Claude agents to play tic-tac-toe against each other. We first dug into Agent Mail and [made a proof of concept](https://github.com/Dicklesworthstone/mcp_agent_mail/pull/33) there, but quickly realized the limitations of a pull-based methodology. We kept digging and quickly realized the only way to get an agent to autonomously interact with other agents is a push-based method that delivers messages directly to their input. So was born [Agent Relay](https://github.com/AgentWorkforce/relay).
|
|
219
|
+
|
|
220
|
+
## Ok...I'm intrigued, go on...
|
|
221
|
+
|
|
222
|
+
Agent-to-agent communication across any CLI tool (Codex, Claude, Gemini, OpenCode, Droid, etc.) is possible **right now** for any task. This can be done via an easy-to-use SDK or the relay-dashboard where you can see messages across agents, chat, spawn and release agents as needed.
|
|
223
|
+
|
|
224
|
+
At the base level, Agent Relay is a protocol which makes it easy and reliable to stage CLI-agnostic agent-to-agent communication. The tools built on top of that protocol are the [relay-dashboard](https://github.com/AgentWorkforce/relay-dashboard/) and [relay-tui](https://github.com/AgentWorkforce/relay-tui) — but could be relay-slack, relay-discord -- you name it!
|
|
225
|
+
|
|
226
|
+
As we see with Moltbook and what I've seen for the past month: **agents are creative, efficient, sometimes lazy and cut corners, chatty, and but mostly it is clear that they work quite effectively when given roles and clear responsibilities.**
|
|
227
|
+
|
|
228
|
+
I kept finding myself as the clear bottleneck when working on projects, so removing myself and replacing with an agent is a huge accelerator. I found myself spending more time planning and producing detailed specs. I'd hand that to a "Lead" agent, ask them to review it, staff a team accordingly, and just let me know of any blockers.
|
|
229
|
+
|
|
230
|
+
Then I would [go to bed](https://x.com/khaliqgant/status/2008325804741071079) and wake up to a finished product.
|
|
231
|
+
|
|
232
|
+
## Why Not Just Sub-Agents?
|
|
233
|
+
|
|
234
|
+
Using actual agent instances is a more powerful abstraction. Your agents can create sub-agents, giving the agent much more power. When giving a sub-agent a task too big or complex, it'll often hit compaction (context window limits) and just stop—which completely breaks the autonomous workflow we're looking for.
|
|
235
|
+
|
|
236
|
+
## How Do I Use This?
|
|
237
|
+
|
|
238
|
+
There are a few ways to use Relay:
|
|
239
|
+
|
|
240
|
+
### For Developers
|
|
241
|
+
|
|
242
|
+
**1.** Start a relay server and use the dashboard to spawn and chat with agents:
|
|
243
|
+
|
|
244
|
+
\`\`\`bash
|
|
245
|
+
npm install -g agent-relay
|
|
246
|
+
agent-relay up --dashboard
|
|
247
|
+
\`\`\`
|
|
248
|
+
|
|
249
|
+
**2.** Start a \`claude\` | \`codex\` etc session and tell it to install and start agent-relay by following the instructions here:
|
|
250
|
+
|
|
251
|
+
\`\`\`bash
|
|
252
|
+
$ claude
|
|
253
|
+
|
|
254
|
+
╭────────────────────────────────────────╮
|
|
255
|
+
│ ✻ Welcome to Claude Code! │
|
|
256
|
+
│ │
|
|
257
|
+
│ /help for help │
|
|
258
|
+
│ │
|
|
259
|
+
╰────────────────────────────────────────╯
|
|
260
|
+
|
|
261
|
+
> Install and configure agent-relay by following the instructions here:
|
|
262
|
+
curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md
|
|
263
|
+
\`\`\`
|
|
264
|
+
|
|
265
|
+
The agent will read the setup guide and start a relay session, ready to coordinate with other agents.
|
|
266
|
+
|
|
267
|
+
### For Library Developers
|
|
268
|
+
|
|
269
|
+
Use our SDK to enable agent-to-agent communication in your app:
|
|
270
|
+
|
|
271
|
+
\`\`\`bash
|
|
272
|
+
# Install agent relay and start the daemon
|
|
273
|
+
npm install -g agent-relay
|
|
274
|
+
agent-relay up
|
|
275
|
+
|
|
276
|
+
# In your project
|
|
277
|
+
npm install agent-relay
|
|
278
|
+
\`\`\`
|
|
279
|
+
|
|
280
|
+
\`\`\`javascript
|
|
281
|
+
import { RelayClient } from 'agent-relay';
|
|
282
|
+
|
|
283
|
+
const client = new RelayClient({ name: 'MyApp' });
|
|
284
|
+
await client.connect();
|
|
285
|
+
|
|
286
|
+
// Spawn a worker agent
|
|
287
|
+
await client.spawn({
|
|
288
|
+
name: 'Worker',
|
|
289
|
+
cli: 'claude',
|
|
290
|
+
task: 'Wait for instructions'
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
// Send it a message
|
|
294
|
+
await client.send('Worker', 'Hello from my app');
|
|
295
|
+
\`\`\`
|
|
296
|
+
|
|
297
|
+
Check out our [docs](https://docs.agent-relay.com/) for more info.
|
|
298
|
+
|
|
299
|
+
## What's Next
|
|
300
|
+
|
|
301
|
+
We're super excited for what's to come. [Agent Relay Cloud](https://agent-relay.com/) allows you, via GitHub login, to link your repository to your own private workspace server. Using your Claude, Codex, Gemini, or Cursor login, you can spawn agents and have them work 24/7 against your repo using the dashboard.
|
|
302
|
+
|
|
303
|
+
You and your teammates who have access to the repository can interact with agents, giving instructions in different topic-based channels to help organize agent work. You can have agents review pull requests, work on documentation—all with authenticated access to your GitHub repo.
|
|
304
|
+
|
|
305
|
+
This is just the beginning. GitHub is the first context we've unlocked. This will be extended to other integrations like Notion, Slack, Outlook, etc., so agents can operate 24/7 and accelerate your workflows.
|
|
306
|
+
`,
|
|
307
|
+
},
|
|
308
|
+
];
|
|
309
|
+
|
|
310
|
+
export function getBlogPost(id: string): BlogPost | undefined {
|
|
311
|
+
return blogPosts.find(post => post.id === id);
|
|
312
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Relay Cloud - Landing Page Module
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
export { LandingPage, default } from './LandingPage';
|
|
6
|
+
export { PricingPage } from './PricingPage';
|
|
7
|
+
export { StaticPage } from './StaticPage';
|
|
8
|
+
export { PrivacyPage } from './PrivacyPage';
|
|
9
|
+
export { TermsPage } from './TermsPage';
|
|
10
|
+
export { SecurityPage } from './SecurityPage';
|
|
11
|
+
export { AboutPage } from './AboutPage';
|
|
12
|
+
export { ContactPage } from './ContactPage';
|
|
13
|
+
export { DocsPage } from './DocsPage';
|
|
14
|
+
export { ChangelogPage } from './ChangelogPage';
|
|
15
|
+
export { BlogPage } from './BlogPage';
|
|
16
|
+
export { blogPosts, getBlogPost, type BlogPost } from './blogData';
|
|
17
|
+
export { renderBlogContent } from './BlogContent';
|
|
18
|
+
export { CareersPage } from './CareersPage';
|