agent-relay 3.0.1 β†’ 3.1.0

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.
Files changed (142) hide show
  1. package/README.md +37 -244
  2. package/bin/agent-relay-broker-darwin-arm64 +0 -0
  3. package/bin/agent-relay-broker-darwin-x64 +0 -0
  4. package/bin/agent-relay-broker-linux-arm64 +0 -0
  5. package/bin/agent-relay-broker-linux-x64 +0 -0
  6. package/dist/index.cjs +342 -60
  7. package/dist/src/cli/commands/core.d.ts +2 -0
  8. package/dist/src/cli/commands/core.d.ts.map +1 -1
  9. package/dist/src/cli/commands/core.js +9 -2
  10. package/dist/src/cli/commands/core.js.map +1 -1
  11. package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
  12. package/dist/src/cli/lib/broker-lifecycle.js +87 -28
  13. package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
  14. package/package.json +9 -8
  15. package/packages/acp-bridge/README.md +50 -67
  16. package/packages/acp-bridge/package.json +2 -2
  17. package/packages/config/package.json +1 -1
  18. package/packages/hooks/package.json +4 -4
  19. package/packages/memory/package.json +2 -2
  20. package/packages/policy/package.json +2 -2
  21. package/packages/sdk/README.md +169 -64
  22. package/packages/sdk/dist/__tests__/contract-fixtures.test.js +76 -9
  23. package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +1 -1
  24. package/packages/sdk/dist/__tests__/facade.test.js +48 -0
  25. package/packages/sdk/dist/__tests__/facade.test.js.map +1 -1
  26. package/packages/sdk/dist/__tests__/integration.test.js +11 -5
  27. package/packages/sdk/dist/__tests__/integration.test.js.map +1 -1
  28. package/packages/sdk/dist/__tests__/unit.test.js +36 -0
  29. package/packages/sdk/dist/__tests__/unit.test.js.map +1 -1
  30. package/packages/sdk/dist/client.d.ts +36 -3
  31. package/packages/sdk/dist/client.d.ts.map +1 -1
  32. package/packages/sdk/dist/client.js +142 -9
  33. package/packages/sdk/dist/client.js.map +1 -1
  34. package/packages/sdk/dist/protocol.d.ts +7 -1
  35. package/packages/sdk/dist/protocol.d.ts.map +1 -1
  36. package/packages/sdk/dist/relay.d.ts +74 -11
  37. package/packages/sdk/dist/relay.d.ts.map +1 -1
  38. package/packages/sdk/dist/relay.js +175 -27
  39. package/packages/sdk/dist/relay.js.map +1 -1
  40. package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
  41. package/packages/sdk/dist/workflows/runner.js +71 -36
  42. package/packages/sdk/dist/workflows/runner.js.map +1 -1
  43. package/packages/sdk/dist/workflows/types.d.ts +1 -1
  44. package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
  45. package/packages/sdk/package.json +2 -2
  46. package/packages/sdk/src/__tests__/contract-fixtures.test.ts +88 -9
  47. package/packages/sdk/src/__tests__/error-scenarios.test.ts +1 -1
  48. package/packages/sdk/src/__tests__/facade.test.ts +68 -0
  49. package/packages/sdk/src/__tests__/idle-nudge.test.ts +205 -257
  50. package/packages/sdk/src/__tests__/integration.test.ts +11 -5
  51. package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +277 -13
  52. package/packages/sdk/src/__tests__/swarm-coordinator.test.ts +1 -0
  53. package/packages/sdk/src/__tests__/unit.test.ts +44 -0
  54. package/packages/sdk/src/__tests__/workflow-runner.test.ts +67 -7
  55. package/packages/sdk/src/__tests__/workflow-trajectory.test.ts +4 -5
  56. package/packages/sdk/src/client.ts +195 -14
  57. package/packages/sdk/src/examples/workflows/runner-idle-refactor.yaml +306 -0
  58. package/packages/sdk/src/protocol.ts +7 -2
  59. package/packages/sdk/src/relay.ts +271 -38
  60. package/packages/sdk/src/workflows/runner.ts +73 -42
  61. package/packages/sdk/src/workflows/schema.json +1 -1
  62. package/packages/sdk/src/workflows/types.ts +1 -1
  63. package/packages/sdk/vitest.config.ts +1 -0
  64. package/packages/sdk-py/README.md +89 -102
  65. package/packages/sdk-py/agent_relay/__init__.py +16 -19
  66. package/packages/sdk-py/pyproject.toml +6 -2
  67. package/packages/sdk-py/src/agent_relay/__init__.py +35 -1
  68. package/packages/sdk-py/src/agent_relay/client.py +776 -0
  69. package/packages/sdk-py/src/agent_relay/models.py +27 -0
  70. package/packages/sdk-py/src/agent_relay/protocol.py +114 -0
  71. package/packages/sdk-py/src/agent_relay/relay.py +860 -0
  72. package/packages/sdk-py/tests/test_relay_lifecycle_hooks.py +250 -0
  73. package/packages/telemetry/package.json +1 -1
  74. package/packages/trajectory/package.json +2 -2
  75. package/packages/user-directory/package.json +2 -2
  76. package/packages/utils/package.json +2 -2
  77. package/scripts/postinstall.js +35 -162
  78. package/packages/sdk/.trajectories/active/traj_1771875803391_84ca57b2.json +0 -50
  79. package/packages/sdk/.trajectories/active/traj_1771891934534_06504121.json +0 -50
  80. package/packages/sdk/.trajectories/active/traj_1771891957929_211afc4e.json +0 -50
  81. package/packages/sdk/.trajectories/active/traj_1771891982509_38c84638.json +0 -50
  82. package/packages/sdk/.trajectories/completed/traj_1771875803188_cd6d181c.json +0 -80
  83. package/packages/sdk/.trajectories/completed/traj_1771875803204_f2aeb8c8.json +0 -80
  84. package/packages/sdk/.trajectories/completed/traj_1771875803210_d65f3f1a.json +0 -80
  85. package/packages/sdk/.trajectories/completed/traj_1771875803218_e454a25d.json +0 -80
  86. package/packages/sdk/.trajectories/completed/traj_1771875803223_d7a64815.json +0 -80
  87. package/packages/sdk/.trajectories/completed/traj_1771875803227_7e56da5b.json +0 -80
  88. package/packages/sdk/.trajectories/completed/traj_1771875803235_4fbf93b4.json +0 -80
  89. package/packages/sdk/.trajectories/completed/traj_1771875803243_47931c71.json +0 -80
  90. package/packages/sdk/.trajectories/completed/traj_1771875803258_3816f3fe.json +0 -80
  91. package/packages/sdk/.trajectories/completed/traj_1771875803268_8061140e.json +0 -80
  92. package/packages/sdk/.trajectories/completed/traj_1771875803326_ae6f9c78.json +0 -80
  93. package/packages/sdk/.trajectories/completed/traj_1771875808396_cbde0a6c.json +0 -91
  94. package/packages/sdk/.trajectories/completed/traj_1771875812026_aa2442bb.json +0 -91
  95. package/packages/sdk/.trajectories/completed/traj_1771875815431_c2c656c5.json +0 -91
  96. package/packages/sdk/.trajectories/completed/traj_1771875818645_3a4dbf02.json +0 -91
  97. package/packages/sdk/.trajectories/completed/traj_1771891934403_24923c03.json +0 -80
  98. package/packages/sdk/.trajectories/completed/traj_1771891934421_dca16e24.json +0 -80
  99. package/packages/sdk/.trajectories/completed/traj_1771891934430_057706f7.json +0 -80
  100. package/packages/sdk/.trajectories/completed/traj_1771891934442_faf97382.json +0 -80
  101. package/packages/sdk/.trajectories/completed/traj_1771891934454_5542ecd5.json +0 -80
  102. package/packages/sdk/.trajectories/completed/traj_1771891934464_12202a08.json +0 -80
  103. package/packages/sdk/.trajectories/completed/traj_1771891934487_94378275.json +0 -80
  104. package/packages/sdk/.trajectories/completed/traj_1771891934503_ca728c13.json +0 -80
  105. package/packages/sdk/.trajectories/completed/traj_1771891934519_100af69a.json +0 -80
  106. package/packages/sdk/.trajectories/completed/traj_1771891934536_62ad39d9.json +0 -80
  107. package/packages/sdk/.trajectories/completed/traj_1771891934553_d6798a52.json +0 -80
  108. package/packages/sdk/.trajectories/completed/traj_1771891939537_541c8096.json +0 -91
  109. package/packages/sdk/.trajectories/completed/traj_1771891942985_36ab9a4d.json +0 -91
  110. package/packages/sdk/.trajectories/completed/traj_1771891946453_e8a6e05f.json +0 -91
  111. package/packages/sdk/.trajectories/completed/traj_1771891949838_5de0de84.json +0 -91
  112. package/packages/sdk/.trajectories/completed/traj_1771891957807_0ecfb4f4.json +0 -80
  113. package/packages/sdk/.trajectories/completed/traj_1771891957827_c4539239.json +0 -80
  114. package/packages/sdk/.trajectories/completed/traj_1771891957836_91168b48.json +0 -80
  115. package/packages/sdk/.trajectories/completed/traj_1771891957848_8c5cad0b.json +0 -80
  116. package/packages/sdk/.trajectories/completed/traj_1771891957857_0986b293.json +0 -80
  117. package/packages/sdk/.trajectories/completed/traj_1771891957872_8a3113af.json +0 -80
  118. package/packages/sdk/.trajectories/completed/traj_1771891957884_0bb85208.json +0 -80
  119. package/packages/sdk/.trajectories/completed/traj_1771891957892_86c75e2e.json +0 -80
  120. package/packages/sdk/.trajectories/completed/traj_1771891957907_98ca0e6f.json +0 -80
  121. package/packages/sdk/.trajectories/completed/traj_1771891957918_d9091231.json +0 -80
  122. package/packages/sdk/.trajectories/completed/traj_1771891957931_dcaf77ed.json +0 -80
  123. package/packages/sdk/.trajectories/completed/traj_1771891962931_eb1fdee2.json +0 -91
  124. package/packages/sdk/.trajectories/completed/traj_1771891966262_9061a93f.json +0 -91
  125. package/packages/sdk/.trajectories/completed/traj_1771891969915_1adaba19.json +0 -91
  126. package/packages/sdk/.trajectories/completed/traj_1771891973588_f08b79e9.json +0 -91
  127. package/packages/sdk/.trajectories/completed/traj_1771891982421_f1985bce.json +0 -80
  128. package/packages/sdk/.trajectories/completed/traj_1771891982432_e7a84163.json +0 -80
  129. package/packages/sdk/.trajectories/completed/traj_1771891982447_369b842a.json +0 -80
  130. package/packages/sdk/.trajectories/completed/traj_1771891982469_5fc45199.json +0 -80
  131. package/packages/sdk/.trajectories/completed/traj_1771891982495_454c7cb3.json +0 -80
  132. package/packages/sdk/.trajectories/completed/traj_1771891982514_08098e03.json +0 -80
  133. package/packages/sdk/.trajectories/completed/traj_1771891982526_b351d778.json +0 -80
  134. package/packages/sdk/.trajectories/completed/traj_1771891982533_fa542d83.json +0 -80
  135. package/packages/sdk/.trajectories/completed/traj_1771891982540_18ab24dc.json +0 -80
  136. package/packages/sdk/.trajectories/completed/traj_1771891982544_5b4fa163.json +0 -80
  137. package/packages/sdk/.trajectories/completed/traj_1771891982548_c13f089a.json +0 -80
  138. package/packages/sdk/.trajectories/completed/traj_1771891987510_23f6da1f.json +0 -91
  139. package/packages/sdk/.trajectories/completed/traj_1771891991466_912c2e04.json +0 -91
  140. package/packages/sdk/.trajectories/completed/traj_1771891994891_60604be2.json +0 -91
  141. package/packages/sdk/.trajectories/completed/traj_1771891998370_cfaf9b8b.json +0 -91
  142. package/packages/sdk/bin/agent-relay-broker +0 -0
package/README.md CHANGED
@@ -1,275 +1,68 @@
1
1
  # agent-relay
2
2
 
3
- > Real-time messaging between AI agents. Sub-5ms latency, any CLI, any language.
3
+ > Real-time messaging between AI agents.
4
4
 
5
- [![npm](https://img.shields.io/npm/v/agent-relay)](https://www.npmjs.com/package/agent-relay)
5
+ [![npm](https://img.shields.io/npm/v/@agent-relay/sdk)](https://www.npmjs.com/package/@agent-relay/sdk)
6
6
  [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
7
7
 
8
8
  ---
9
9
 
10
10
  ## Install
11
11
 
12
+ **TypeScript / Node.js**
12
13
  ```bash
13
- curl -fsSL https://raw.githubusercontent.com/AgentWorkforce/relay/main/install.sh | bash
14
- ```
15
-
16
- Or via npm (requires Node.js 18+):
17
-
18
- ```bash
19
- npm install -g agent-relay
20
- ```
21
-
22
- ## Quick Start
23
-
24
- ```bash
25
- agent-relay up --dashboard
14
+ npm install @agent-relay/sdk
26
15
  ```
27
16
 
28
- Open **http://localhost:3888** to spawn agents, view real-time status, and stream logs.
29
-
30
- ---
31
-
32
- ## CLI Reference
33
-
34
- | Command | Description |
35
- | --------------------------------------- | ------------------------ |
36
- | `agent-relay up` | Start broker + dashboard |
37
- | `agent-relay down` | Stop broker |
38
- | `agent-relay spawn <name> <cli> "task"` | Spawn a worker agent |
39
- | `agent-relay status` | Check broker status |
40
- | `agent-relay run workflow.yaml` | Run a YAML workflow |
41
- | `agent-relay run --template feature-dev`| Run a built-in template |
42
-
43
- ---
44
-
45
- ## Workflows
46
-
47
- Define multi-agent workflows in YAML, TypeScript, or Python. Run locally or queue to the cloud for 24/7 execution:
48
-
17
+ **Python**
49
18
  ```bash
50
- # Run locally
51
- agent-relay run workflow.yaml --task "Add OAuth2 support"
52
-
53
- # Queue to cloud β€” durable, scalable, runs in sandboxes
54
- agent-relay run workflow.yaml --cloud --task "Add OAuth2 support"
55
-
56
- # Use built-in templates
57
- agent-relay run --template feature-dev --task "Add user dashboard"
19
+ pip install agent-relay-sdk
58
20
  ```
59
21
 
60
- ### relay.yaml
22
+ See the [Python SDK](./packages/sdk-py) for full documentation.
61
23
 
62
- Blueprint-style workflows combine **agent steps** (LLM-powered) with **deterministic steps** (shell commands) for faster, cheaper, more reliable execution:
63
-
64
- ```yaml
65
- version: "1.0"
66
- name: ship-feature
67
-
68
- agents:
69
- - name: planner
70
- cli: claude
71
- model: opus
72
- - name: developer
73
- cli: codex
74
-
75
- workflows:
76
- - name: default
77
- preflight:
78
- - command: git status --porcelain
79
- failIf: non-empty
80
- steps:
81
- - name: plan
82
- agent: planner
83
- task: "Create implementation plan for: {{task}}"
84
- - name: create-branch
85
- type: deterministic
86
- command: git checkout -b feature/{{branch-name}}
87
- dependsOn: [plan]
88
- - name: implement
89
- agent: developer
90
- task: "Implement: {{steps.plan.output}}"
91
- dependsOn: [create-branch]
92
- - name: test
93
- type: deterministic
94
- command: npm test
95
- dependsOn: [implement]
96
- - name: commit
97
- type: deterministic
98
- command: git add -A && git commit -m "feat: {{task}}"
99
- dependsOn: [test]
100
- ```
101
-
102
- **Benefits:** Deterministic steps run instantly ($0 LLM cost), catch issues early with preflight checks, and git commands can't hallucinate.
103
-
104
- Also available as fluent builders in [TypeScript SDK](https://www.npmjs.com/package/@agent-relay/sdk) and [Python SDK](https://pypi.org/project/agent-relay/).
105
-
106
- ### Built-in Templates
107
-
108
- All templates use blueprint-style hybrid workflows with deterministic quality gates.
109
-
110
- | Template | Pattern | Description |
111
- | ---------------- | ------------ | ------------------------------------------------ |
112
- | `feature-dev` | hub-spoke | Plan, implement, review, and finalize a feature |
113
- | `bug-fix` | hub-spoke | Investigate, patch, validate, and document |
114
- | `code-review` | fan-out | Parallel multi-reviewer assessment |
115
- | `security-audit` | pipeline | Scan, triage, remediate, and verify |
116
- | `refactor` | hierarchical | Analyze, plan, execute, and validate |
117
- | `documentation` | handoff | Research, draft, review, and publish |
118
-
119
- ---
120
-
121
- ## SDK Usage
122
-
123
- ```bash
124
- npm install @agent-relay/sdk
125
- ```
126
-
127
- ### Agent-to-Agent Messaging
24
+ ## Usage
128
25
 
129
26
  ```typescript
130
- import { AgentRelay, Models } from '@agent-relay/sdk';
27
+ import { AgentRelay, Models } from "@agent-relay/sdk";
131
28
 
132
29
  const relay = new AgentRelay();
133
30
 
134
- // Spawn agents with different CLIs and models
135
- const planner = await relay.claude.spawn({
136
- name: 'Planner',
137
- model: Models.Claude.OPUS
138
- });
31
+ relay.onMessageReceived = (msg) =>
32
+ console.log(`[${msg.from} β†’ ${msg.to}]: ${msg.text}`);
139
33
 
140
- const coder = await relay.codex.spawn({
141
- name: 'Coder',
142
- model: Models.Codex.CODEX_5_3
34
+ const channel = ["tic-tac-toe"];
35
+
36
+ const x = await relay.claude.spawn({
37
+ name: "PlayerX",
38
+ model: Models.Claude.SONNET,
39
+ channels: channel,
40
+ task: "Play tic-tac-toe as X against PlayerO. You go first.",
41
+ });
42
+ const o = await relay.codex.spawn({
43
+ name: "PlayerO",
44
+ model: Models.Codex.GPT_5_3_CODEX_SPARK,
45
+ channels: channel,
46
+ task: "Play tic-tac-toe as O against PlayerX.",
143
47
  });
144
48
 
145
- // Send messages between agents
146
- await planner.sendMessage({ to: 'Coder', text: 'Implement the auth module' });
49
+ console.log("Waiting for agents to be ready...");
50
+ await Promise.all([
51
+ relay.waitForAgentReady("PlayerX"),
52
+ relay.waitForAgentReady("PlayerO"),
53
+ ]);
54
+ console.log("Both ready. Starting game.");
147
55
 
148
- // Listen for messages
149
- relay.onMessageReceived = (msg) => {
150
- console.log(`${msg.from} β†’ ${msg.to}: ${msg.text}`);
151
- };
56
+ relay.system().sendMessage({ to: "PlayerX", text: "Start." });
152
57
 
58
+ const FIVE_MINUTES = 5 * 60 * 1000;
59
+ await AgentRelay.waitForAny([x, o], FIVE_MINUTES);
153
60
  await relay.shutdown();
154
61
  ```
155
62
 
156
- ### Multi-Agent Workflows
157
-
158
- Build workflows with different swarm patterns:
159
-
160
- ```typescript
161
- import { workflow, Models, SwarmPatterns } from '@agent-relay/sdk/workflows';
162
-
163
- // Hub-spoke: Lead coordinates workers
164
- const result = await workflow('feature-build')
165
- .pattern(SwarmPatterns.HUB_SPOKE)
166
- .agent('lead', { cli: 'claude', model: Models.Claude.OPUS, role: 'Coordinator' })
167
- .agent('dev1', { cli: 'codex', model: Models.Codex.CODEX_5_3, role: 'Developer' })
168
- .agent('dev2', { cli: 'cursor', model: Models.Cursor.CLAUDE_SONNET, role: 'Developer' })
169
- .step('plan', { agent: 'lead', task: 'Break down the feature into tasks' })
170
- .step('impl1', { agent: 'dev1', task: 'Implement backend', dependsOn: ['plan'] })
171
- .step('impl2', { agent: 'dev2', task: 'Implement frontend', dependsOn: ['plan'] })
172
- .step('review', { agent: 'lead', task: 'Review and merge', dependsOn: ['impl1', 'impl2'] })
173
- .run();
174
- ```
175
-
176
- **Swarm Patterns:**
177
-
178
- | Category | Patterns |
179
- | --------------- | ----------------------------------------------------------- |
180
- | **Core** | `dag`, `fan-out`, `pipeline`, `hub-spoke`, `consensus`, `mesh` |
181
- | **Data** | `map-reduce`, `scatter-gather` |
182
- | **Quality** | `supervisor`, `reflection`, `verifier` |
183
- | **Adversarial** | `red-team`, `auction` |
184
- | **Resilience** | `escalation`, `saga`, `circuit-breaker` |
185
-
186
- Auto-pattern selection: define agents with roles like `mapper`, `reducer`, `tier-1`, `attacker`, `defender` and the pattern is auto-selected.
187
-
188
- ---
189
-
190
- ## Cloud
191
-
192
- Scale to teams and automate with [Agent Relay Cloud](https://agent-relay.com):
193
-
194
- ```bash
195
- agent-relay cloud link # Link your machine
196
- agent-relay cloud agents # List agents across machines
197
- agent-relay cloud send AgentName "Your message"
198
- ```
199
-
200
- ### Multi-Agent Orchestration
201
-
202
- Spawn agent teams in the cloud β€” each agent runs in its own isolated sandbox but can communicate with teammates:
203
-
204
- - **Isolated Sandboxes**: Each agent gets a secure container with full dev environment
205
- - **Cross-Sandbox Messaging**: Agents collaborate via relay channels despite isolation
206
- - **24/7 Durable Workflows**: Queue workflows to run continuously, survive restarts
207
- - **Auto-Scaling**: Workspaces scale up/down based on agent load
208
-
209
- ```bash
210
- # Queue a workflow to run in the cloud
211
- agent-relay run workflow.yaml --cloud --task "Refactor auth module"
212
-
213
- # Workflows persist, scale, and run even when you're offline
214
- ```
215
-
216
- ### Integrations
217
-
218
- | Integration | Capabilities |
219
- | ----------- | ------------ |
220
- | **GitHub** | CI auto-fix, @mentions in PRs, issue assignment triggers |
221
- | **Linear** | Issue assignment spawns agents, status sync |
222
- | **Slack** | Chat with agents, trigger workflows from Slack commands |
223
-
224
- ### CI Auto-Fix
225
-
226
- Install the [Agent Relay GitHub App](https://github.com/apps/agent-relay):
227
-
228
- ```
229
- 1. CI fails on PR #123
230
- 2. Agent Relay: "πŸ”΄ CI Failure Detected, spawning @ci-fix agent..."
231
- 3. Agent analyzes logs, fixes issue, pushes commit
232
- 4. Agent Relay: "βœ… CI Fix Applied β€” please re-run checks"
233
- ```
234
-
235
- ---
236
-
237
- ## Architecture
238
-
239
- Agent Relay is built from modular components that work together:
240
-
241
- ```
242
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
243
- β”‚ Your Application β”‚
244
- β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
245
- β”‚ agent-relay CLI β”‚ @agent-relay/sdk β”‚ relay.yaml β”‚
246
- β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
247
- β”‚ Relay Broker β”‚
248
- β”‚ β€’ Agent lifecycle β€’ Message routing β€’ PTY management β”‚
249
- β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
250
- β”‚ Relaycast β”‚
251
- β”‚ β€’ REST API β€’ WebSocket events β€’ Channels & threads β”‚
252
- β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
253
- β”‚ Claude β”‚ Codex β”‚ Gemini β”‚ Cursor β”‚ Aider β”‚ Goose β”‚
254
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
255
- ```
256
-
257
- ### Components
258
-
259
- | Component | Description |
260
- | --------- | ----------- |
261
- | **Relay Broker** | Core message router with sub-5ms latency. Manages agent lifecycle, PTY sessions, and message delivery. |
262
- | **Relaycast** | Communication layer with REST API and WebSocket. Provides channels, threads, reactions, and file attachments. Framework-agnostic β€” works with CrewAI, LangGraph, AutoGen, or raw API calls. |
263
- | **Relay Dashboard** | Real-time monitoring UI. View agent status, stream logs, and manage workflows from the browser. |
264
- | **Relay Cloud** | Multi-tenant cloud platform with auto-scaling, billing, and webhook integrations for GitHub/Linear/Slack. |
265
- | **Trajectories** | Decision capture system. Records the "why" behind code changes β€” decisions, challenges, and confidence scores β€” as searchable institutional memory. |
266
-
267
- ### How It Works
268
-
269
- 1. **Zero modification**: Agents run unmodified CLI tools (Claude Code, Codex, etc.) in PTY sessions
270
- 2. **MCP protocol**: Agents communicate via standard MCP tools β€” no custom SDK required inside agents
271
- 3. **Mix AI providers**: Combine Claude, GPT, and Gemini agents in a single workflow β€” each using their strengths
272
- 4. **Workflow engine**: YAML workflows parsed and executed with dependency resolution, retries, and verification
63
+ ## Supported CLI’s
64
+ - Claude
65
+ - Codex
273
66
 
274
67
  ---
275
68
 
@@ -279,4 +72,4 @@ Apache-2.0 β€” Copyright 2026 Agent Workforce Incorporated
279
72
 
280
73
  ---
281
74
 
282
- **Links:** [Documentation](https://docs.agent-relay.com/) Β· [Issues](https://github.com/AgentWorkforce/relay/issues) Β· [Cloud](https://agent-relay.com) Β· [Discord](https://discord.gg/6E6CTxM8um)
75
+ **Links:** [Documentation](https://docs.agent-relay.com/) Β· [Issues](https://github.com/AgentWorkforce/relay/issues) Β· [Discord](https://discord.gg/6E6CTxM8um)
Binary file
Binary file
Binary file
Binary file