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.
- package/README.md +37 -244
- package/bin/agent-relay-broker-darwin-arm64 +0 -0
- package/bin/agent-relay-broker-darwin-x64 +0 -0
- package/bin/agent-relay-broker-linux-arm64 +0 -0
- package/bin/agent-relay-broker-linux-x64 +0 -0
- package/dist/index.cjs +342 -60
- package/dist/src/cli/commands/core.d.ts +2 -0
- package/dist/src/cli/commands/core.d.ts.map +1 -1
- package/dist/src/cli/commands/core.js +9 -2
- package/dist/src/cli/commands/core.js.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.d.ts.map +1 -1
- package/dist/src/cli/lib/broker-lifecycle.js +87 -28
- package/dist/src/cli/lib/broker-lifecycle.js.map +1 -1
- package/package.json +9 -8
- package/packages/acp-bridge/README.md +50 -67
- package/packages/acp-bridge/package.json +2 -2
- package/packages/config/package.json +1 -1
- package/packages/hooks/package.json +4 -4
- package/packages/memory/package.json +2 -2
- package/packages/policy/package.json +2 -2
- package/packages/sdk/README.md +169 -64
- package/packages/sdk/dist/__tests__/contract-fixtures.test.js +76 -9
- package/packages/sdk/dist/__tests__/contract-fixtures.test.js.map +1 -1
- package/packages/sdk/dist/__tests__/facade.test.js +48 -0
- package/packages/sdk/dist/__tests__/facade.test.js.map +1 -1
- package/packages/sdk/dist/__tests__/integration.test.js +11 -5
- package/packages/sdk/dist/__tests__/integration.test.js.map +1 -1
- package/packages/sdk/dist/__tests__/unit.test.js +36 -0
- package/packages/sdk/dist/__tests__/unit.test.js.map +1 -1
- package/packages/sdk/dist/client.d.ts +36 -3
- package/packages/sdk/dist/client.d.ts.map +1 -1
- package/packages/sdk/dist/client.js +142 -9
- package/packages/sdk/dist/client.js.map +1 -1
- package/packages/sdk/dist/protocol.d.ts +7 -1
- package/packages/sdk/dist/protocol.d.ts.map +1 -1
- package/packages/sdk/dist/relay.d.ts +74 -11
- package/packages/sdk/dist/relay.d.ts.map +1 -1
- package/packages/sdk/dist/relay.js +175 -27
- package/packages/sdk/dist/relay.js.map +1 -1
- package/packages/sdk/dist/workflows/runner.d.ts.map +1 -1
- package/packages/sdk/dist/workflows/runner.js +71 -36
- package/packages/sdk/dist/workflows/runner.js.map +1 -1
- package/packages/sdk/dist/workflows/types.d.ts +1 -1
- package/packages/sdk/dist/workflows/types.d.ts.map +1 -1
- package/packages/sdk/package.json +2 -2
- package/packages/sdk/src/__tests__/contract-fixtures.test.ts +88 -9
- package/packages/sdk/src/__tests__/error-scenarios.test.ts +1 -1
- package/packages/sdk/src/__tests__/facade.test.ts +68 -0
- package/packages/sdk/src/__tests__/idle-nudge.test.ts +205 -257
- package/packages/sdk/src/__tests__/integration.test.ts +11 -5
- package/packages/sdk/src/__tests__/orchestration-upgrades.test.ts +277 -13
- package/packages/sdk/src/__tests__/swarm-coordinator.test.ts +1 -0
- package/packages/sdk/src/__tests__/unit.test.ts +44 -0
- package/packages/sdk/src/__tests__/workflow-runner.test.ts +67 -7
- package/packages/sdk/src/__tests__/workflow-trajectory.test.ts +4 -5
- package/packages/sdk/src/client.ts +195 -14
- package/packages/sdk/src/examples/workflows/runner-idle-refactor.yaml +306 -0
- package/packages/sdk/src/protocol.ts +7 -2
- package/packages/sdk/src/relay.ts +271 -38
- package/packages/sdk/src/workflows/runner.ts +73 -42
- package/packages/sdk/src/workflows/schema.json +1 -1
- package/packages/sdk/src/workflows/types.ts +1 -1
- package/packages/sdk/vitest.config.ts +1 -0
- package/packages/sdk-py/README.md +89 -102
- package/packages/sdk-py/agent_relay/__init__.py +16 -19
- package/packages/sdk-py/pyproject.toml +6 -2
- package/packages/sdk-py/src/agent_relay/__init__.py +35 -1
- package/packages/sdk-py/src/agent_relay/client.py +776 -0
- package/packages/sdk-py/src/agent_relay/models.py +27 -0
- package/packages/sdk-py/src/agent_relay/protocol.py +114 -0
- package/packages/sdk-py/src/agent_relay/relay.py +860 -0
- package/packages/sdk-py/tests/test_relay_lifecycle_hooks.py +250 -0
- package/packages/telemetry/package.json +1 -1
- package/packages/trajectory/package.json +2 -2
- package/packages/user-directory/package.json +2 -2
- package/packages/utils/package.json +2 -2
- package/scripts/postinstall.js +35 -162
- package/packages/sdk/.trajectories/active/traj_1771875803391_84ca57b2.json +0 -50
- package/packages/sdk/.trajectories/active/traj_1771891934534_06504121.json +0 -50
- package/packages/sdk/.trajectories/active/traj_1771891957929_211afc4e.json +0 -50
- package/packages/sdk/.trajectories/active/traj_1771891982509_38c84638.json +0 -50
- package/packages/sdk/.trajectories/completed/traj_1771875803188_cd6d181c.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803204_f2aeb8c8.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803210_d65f3f1a.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803218_e454a25d.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803223_d7a64815.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803227_7e56da5b.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803235_4fbf93b4.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803243_47931c71.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803258_3816f3fe.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803268_8061140e.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875803326_ae6f9c78.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771875808396_cbde0a6c.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771875812026_aa2442bb.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771875815431_c2c656c5.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771875818645_3a4dbf02.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891934403_24923c03.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934421_dca16e24.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934430_057706f7.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934442_faf97382.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934454_5542ecd5.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934464_12202a08.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934487_94378275.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934503_ca728c13.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934519_100af69a.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934536_62ad39d9.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891934553_d6798a52.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891939537_541c8096.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891942985_36ab9a4d.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891946453_e8a6e05f.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891949838_5de0de84.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891957807_0ecfb4f4.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957827_c4539239.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957836_91168b48.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957848_8c5cad0b.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957857_0986b293.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957872_8a3113af.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957884_0bb85208.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957892_86c75e2e.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957907_98ca0e6f.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957918_d9091231.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891957931_dcaf77ed.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891962931_eb1fdee2.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891966262_9061a93f.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891969915_1adaba19.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891973588_f08b79e9.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891982421_f1985bce.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982432_e7a84163.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982447_369b842a.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982469_5fc45199.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982495_454c7cb3.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982514_08098e03.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982526_b351d778.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982533_fa542d83.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982540_18ab24dc.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982544_5b4fa163.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891982548_c13f089a.json +0 -80
- package/packages/sdk/.trajectories/completed/traj_1771891987510_23f6da1f.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891991466_912c2e04.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891994891_60604be2.json +0 -91
- package/packages/sdk/.trajectories/completed/traj_1771891998370_cfaf9b8b.json +0 -91
- 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.
|
|
3
|
+
> Real-time messaging between AI agents.
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/@agent-relay/sdk)
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
## Install
|
|
11
11
|
|
|
12
|
+
**TypeScript / Node.js**
|
|
12
13
|
```bash
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
22
|
+
See the [Python SDK](./packages/sdk-py) for full documentation.
|
|
61
23
|
|
|
62
|
-
|
|
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
|
|
27
|
+
import { AgentRelay, Models } from "@agent-relay/sdk";
|
|
131
28
|
|
|
132
29
|
const relay = new AgentRelay();
|
|
133
30
|
|
|
134
|
-
|
|
135
|
-
|
|
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
|
|
141
|
-
|
|
142
|
-
|
|
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
|
-
|
|
146
|
-
await
|
|
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
|
-
|
|
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
|
-
|
|
157
|
-
|
|
158
|
-
|
|
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) Β· [
|
|
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
|