agent-relay 2.1.4 → 2.1.6

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 (132) hide show
  1. package/README.md +85 -236
  2. package/dist/index.cjs +281 -24
  3. package/package.json +19 -19
  4. package/packages/api-types/package.json +1 -1
  5. package/packages/benchmark/package.json +4 -4
  6. package/packages/bridge/dist/spawner.d.ts.map +1 -1
  7. package/packages/bridge/dist/spawner.js +39 -5
  8. package/packages/bridge/dist/spawner.js.map +1 -1
  9. package/packages/bridge/package.json +8 -8
  10. package/packages/bridge/src/spawner.ts +40 -5
  11. package/packages/cli-tester/package.json +1 -1
  12. package/packages/config/package.json +2 -2
  13. package/packages/continuity/package.json +2 -2
  14. package/packages/daemon/dist/server.d.ts +5 -0
  15. package/packages/daemon/dist/server.d.ts.map +1 -1
  16. package/packages/daemon/dist/server.js +31 -0
  17. package/packages/daemon/dist/server.js.map +1 -1
  18. package/packages/daemon/package.json +12 -12
  19. package/packages/daemon/src/server.ts +37 -0
  20. package/packages/hooks/package.json +4 -4
  21. package/packages/mcp/dist/cloud.d.ts +7 -114
  22. package/packages/mcp/dist/cloud.d.ts.map +1 -1
  23. package/packages/mcp/dist/cloud.js +21 -431
  24. package/packages/mcp/dist/cloud.js.map +1 -1
  25. package/packages/mcp/dist/errors.d.ts +4 -22
  26. package/packages/mcp/dist/errors.d.ts.map +1 -1
  27. package/packages/mcp/dist/errors.js +4 -43
  28. package/packages/mcp/dist/errors.js.map +1 -1
  29. package/packages/mcp/dist/hybrid-client.d.ts.map +1 -1
  30. package/packages/mcp/dist/hybrid-client.js +7 -1
  31. package/packages/mcp/dist/hybrid-client.js.map +1 -1
  32. package/packages/mcp/package.json +4 -3
  33. package/packages/mcp/src/cloud.ts +29 -511
  34. package/packages/mcp/src/errors.ts +12 -49
  35. package/packages/mcp/src/hybrid-client.ts +8 -1
  36. package/packages/mcp/tests/discover.test.ts +72 -11
  37. package/packages/memory/package.json +2 -2
  38. package/packages/policy/package.json +2 -2
  39. package/packages/protocol/dist/types.d.ts +17 -1
  40. package/packages/protocol/dist/types.d.ts.map +1 -1
  41. package/packages/protocol/package.json +1 -1
  42. package/packages/protocol/src/types.ts +23 -0
  43. package/packages/resiliency/package.json +1 -1
  44. package/packages/sdk/dist/browser-client.d.ts +212 -0
  45. package/packages/sdk/dist/browser-client.d.ts.map +1 -0
  46. package/packages/sdk/dist/browser-client.js +750 -0
  47. package/packages/sdk/dist/browser-client.js.map +1 -0
  48. package/packages/sdk/dist/browser-framing.d.ts +46 -0
  49. package/packages/sdk/dist/browser-framing.d.ts.map +1 -0
  50. package/packages/sdk/dist/browser-framing.js +122 -0
  51. package/packages/sdk/dist/browser-framing.js.map +1 -0
  52. package/packages/sdk/dist/client.d.ts +129 -2
  53. package/packages/sdk/dist/client.d.ts.map +1 -1
  54. package/packages/sdk/dist/client.js +312 -2
  55. package/packages/sdk/dist/client.js.map +1 -1
  56. package/packages/sdk/dist/discovery.d.ts +10 -0
  57. package/packages/sdk/dist/discovery.d.ts.map +1 -0
  58. package/packages/sdk/dist/discovery.js +22 -0
  59. package/packages/sdk/dist/discovery.js.map +1 -0
  60. package/packages/sdk/dist/errors.d.ts +9 -0
  61. package/packages/sdk/dist/errors.d.ts.map +1 -0
  62. package/packages/sdk/dist/errors.js +9 -0
  63. package/packages/sdk/dist/errors.js.map +1 -0
  64. package/packages/sdk/dist/index.d.ts +18 -2
  65. package/packages/sdk/dist/index.d.ts.map +1 -1
  66. package/packages/sdk/dist/index.js +27 -1
  67. package/packages/sdk/dist/index.js.map +1 -1
  68. package/packages/sdk/dist/transports/index.d.ts +92 -0
  69. package/packages/sdk/dist/transports/index.d.ts.map +1 -0
  70. package/packages/sdk/dist/transports/index.js +129 -0
  71. package/packages/sdk/dist/transports/index.js.map +1 -0
  72. package/packages/sdk/dist/transports/socket-transport.d.ts +30 -0
  73. package/packages/sdk/dist/transports/socket-transport.d.ts.map +1 -0
  74. package/packages/sdk/dist/transports/socket-transport.js +94 -0
  75. package/packages/sdk/dist/transports/socket-transport.js.map +1 -0
  76. package/packages/sdk/dist/transports/types.d.ts +69 -0
  77. package/packages/sdk/dist/transports/types.d.ts.map +1 -0
  78. package/packages/sdk/dist/transports/types.js +10 -0
  79. package/packages/sdk/dist/transports/types.js.map +1 -0
  80. package/packages/sdk/dist/transports/websocket-transport.d.ts +55 -0
  81. package/packages/sdk/dist/transports/websocket-transport.d.ts.map +1 -0
  82. package/packages/sdk/dist/transports/websocket-transport.js +180 -0
  83. package/packages/sdk/dist/transports/websocket-transport.js.map +1 -0
  84. package/packages/sdk/package.json +28 -4
  85. package/packages/sdk/src/browser-client.ts +985 -0
  86. package/packages/sdk/src/browser-framing.test.ts +115 -0
  87. package/packages/sdk/src/browser-framing.ts +150 -0
  88. package/packages/sdk/src/client.test.ts +425 -0
  89. package/packages/sdk/src/client.ts +397 -3
  90. package/packages/sdk/src/discovery.ts +38 -0
  91. package/packages/sdk/src/errors.ts +17 -0
  92. package/packages/sdk/src/index.ts +82 -1
  93. package/packages/sdk/src/transports/index.ts +197 -0
  94. package/packages/sdk/src/transports/socket-transport.ts +115 -0
  95. package/packages/sdk/src/transports/types.ts +77 -0
  96. package/packages/sdk/src/transports/websocket-transport.ts +245 -0
  97. package/packages/sdk/tsconfig.json +1 -1
  98. package/packages/spawner/package.json +1 -1
  99. package/packages/state/package.json +1 -1
  100. package/packages/storage/package.json +2 -2
  101. package/packages/storage/src/jsonl-adapter.test.ts +8 -3
  102. package/packages/telemetry/package.json +1 -1
  103. package/packages/trajectory/package.json +2 -2
  104. package/packages/user-directory/package.json +2 -2
  105. package/packages/utils/dist/cjs/discovery.js +328 -0
  106. package/packages/utils/dist/cjs/errors.js +81 -0
  107. package/packages/utils/dist/discovery.d.ts +123 -0
  108. package/packages/utils/dist/discovery.d.ts.map +1 -0
  109. package/packages/utils/dist/discovery.js +439 -0
  110. package/packages/utils/dist/discovery.js.map +1 -0
  111. package/packages/utils/dist/errors.d.ts +29 -0
  112. package/packages/utils/dist/errors.d.ts.map +1 -0
  113. package/packages/utils/dist/errors.js +50 -0
  114. package/packages/utils/dist/errors.js.map +1 -0
  115. package/packages/utils/package.json +15 -2
  116. package/packages/utils/src/consolidation.test.ts +125 -0
  117. package/packages/utils/src/discovery.test.ts +196 -0
  118. package/packages/utils/src/discovery.ts +524 -0
  119. package/packages/utils/src/errors.test.ts +83 -0
  120. package/packages/utils/src/errors.ts +56 -0
  121. package/packages/wrapper/dist/opencode-wrapper.d.ts +6 -2
  122. package/packages/wrapper/dist/opencode-wrapper.d.ts.map +1 -1
  123. package/packages/wrapper/dist/opencode-wrapper.js +34 -10
  124. package/packages/wrapper/dist/opencode-wrapper.js.map +1 -1
  125. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts +22 -2
  126. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts.map +1 -1
  127. package/packages/wrapper/dist/relay-pty-orchestrator.js +174 -4
  128. package/packages/wrapper/dist/relay-pty-orchestrator.js.map +1 -1
  129. package/packages/wrapper/package.json +6 -6
  130. package/packages/wrapper/src/opencode-wrapper.ts +37 -9
  131. package/packages/wrapper/src/relay-pty-orchestrator.ts +197 -4
  132. package/relay-snippets/agent-relay-snippet.md +17 -5
package/README.md CHANGED
@@ -1,6 +1,11 @@
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. Sub-5ms latency, any CLI, any language.
4
+
5
+ [![npm](https://img.shields.io/npm/v/agent-relay)](https://www.npmjs.com/package/agent-relay)
6
+ [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE)
7
+
8
+ ---
4
9
 
5
10
  ## Install
6
11
 
@@ -10,169 +15,37 @@ npm install -g agent-relay
10
15
 
11
16
  **Requirements:** Node.js 20+
12
17
 
13
- **Linux:** Install build tools first:
14
- ```bash
15
- sudo apt-get update && sudo apt-get install -y build-essential
16
- ```
17
-
18
- ### Platform Support
19
-
20
- | Platform | Status | Notes |
21
- |----------|--------|-------|
22
- | macOS Apple Silicon | **Full support** | Native relay-pty binary |
23
- | macOS Intel | **Full support** | Native relay-pty binary |
24
- | Linux x64 | **Full support** | Native relay-pty binary |
25
- | Linux arm64 | Fallback | Uses tmux (install separately) |
26
- | Windows | Fallback | Uses tmux via WSL |
27
-
28
- ## Storage Requirements
29
- - Default adapter: SQLite (persistent, WAL enabled). Path defaults to `~/.agent-relay/relay.db`.
30
- - Recommended: Node.js 22+ for prebuilt SQLite binaries; Node 20 requires native rebuilds.
31
- - Configure via env: `AGENT_RELAY_STORAGE_TYPE=sqlite|sqlite-batched|jsonl|memory` and `AGENT_RELAY_STORAGE_PATH=/your/db/path`.
32
- - Fallback chain: SQLite (better-sqlite3 → node:sqlite) → JSONL (append-only in `~/.agent-relay/messages/YYYY-MM-DD.jsonl`, sessions in `sessions.jsonl`) → Memory (non-persistent).
33
- - Docs: `docs/architecture/storage.md` (architecture) and `docs/troubleshooting/storage.md` (troubleshooting + doctor output).
34
-
35
- ## Quick Fix (Storage)
36
- - See adapter status: `agent-relay doctor`.
37
- - Rebuild native deps after Node upgrades: `npm rebuild better-sqlite3`.
38
- - Stuck in non-persistent mode: upgrade to Node 22+, rebuild, or force JSONL via `AGENT_RELAY_STORAGE_TYPE=jsonl`, then restart.
39
- - Permissions: ensure the storage directory is writable or set `AGENT_RELAY_STORAGE_PATH` to a user-writable location.
40
- - Full guide: `docs/troubleshooting/storage.md`.
41
-
42
- ## Quick Start
18
+ ## Getting Started
43
19
 
44
20
  ```bash
45
- # Start daemon + coordinator agent
46
- agent-relay claude
47
-
48
- # Or with other CLI tools
49
- agent-relay codex
50
- agent-relay opencode # OpenCode with HTTP API support
51
- agent-relay gemini
52
- agent-relay droid
21
+ agent-relay up --dashboard
53
22
  ```
54
23
 
55
- Agents communicate via file-based messaging:
24
+ Navigate to **http://localhost:3888** to:
25
+ - 🤖 Spawn and chat with agents using your locally installed CLI tools
26
+ - 👀 View real-time agent presence and status
27
+ - 💬 Message history and threading
28
+ - 📜 Log streaming from all agents
56
29
 
57
- ```bash
58
- # Write message to outbox (AGENT_RELAY_OUTBOX is set automatically)
59
- cat > $AGENT_RELAY_OUTBOX/msg << 'EOF'
60
- TO: Bob
61
-
62
- Hey, can you help with this task?
63
- EOF
64
-
65
- # Trigger send
66
- echo "->relay-file:msg"
67
- ```
68
-
69
- Synchronous messaging (wait for ACK):
70
- ```
71
- ->relay:Bob [await] Please confirm
72
- ->relay:Bob [await:30s] Please confirm within 30 seconds
73
- ```
74
-
75
- Or broadcast to all:
76
- ```bash
77
- cat > $AGENT_RELAY_OUTBOX/broadcast << 'EOF'
78
- TO: *
79
-
80
- Message to all agents
81
- EOF
82
- echo "->relay-file:broadcast"
83
- ```
84
-
85
- > **Note**: `$AGENT_RELAY_OUTBOX` is automatically set when agents are spawned via agent-relay. Data is stored in `.agent-relay/` within your project directory (auto-added to `.gitignore`).
30
+ ---
86
31
 
87
32
  ## CLI Reference
88
33
 
89
34
  | Command | Description |
90
35
  |---------|-------------|
91
- | `agent-relay claude` | Start daemon + coordinator with Claude |
92
- | `agent-relay codex` | Start daemon + coordinator with Codex |
93
- | `agent-relay opencode` | Start daemon + coordinator with OpenCode |
94
- | `agent-relay gemini` | Start daemon + coordinator with Gemini |
36
+ | `agent-relay <cli>` | Start daemon + coordinator (claude, codex, gemini, etc.) |
95
37
  | `agent-relay up` | Start daemon + dashboard |
96
38
  | `agent-relay down` | Stop daemon |
97
39
  | `agent-relay status` | Check daemon status |
98
- | `agent-relay create-agent -n Name <cmd>` | Create named agent |
99
- | `agent-relay read <id>` | Read truncated message |
40
+ | `agent-relay create-agent -n Name <cmd>` | Create a named agent |
100
41
  | `agent-relay bridge <projects...>` | Bridge multiple projects |
42
+ | `agent-relay doctor` | Diagnose issues |
101
43
 
102
- ## Architecture
103
-
104
- ```
105
- ┌─────────────┐ ┌─────────────┐
106
- │ Agent Alice │ │ Agent Bob │
107
- │ (relay-pty) │ │ (relay-pty) │
108
- └──────┬──────┘ └──────┬──────┘
109
- │ │
110
- └─────────┬─────────┘
111
-
112
- Unix Domain Socket
113
-
114
- ┌────────┴────────┐
115
- │ relay daemon │
116
- │ (<5ms P2P) │
117
- └────────┬────────┘
118
-
119
- ┌────────┴────────┐
120
- │ Dashboard │
121
- │ (Protocol UI) │
122
- └─────────────────┘
123
- ```
124
-
125
- **relay-pty** is a Rust binary that wraps your CLI tool, providing:
126
- - Direct PTY writes for reliable message injection
127
- - ~550ms injection latency (vs ~1700ms with tmux)
128
- - File-based message parsing for robustness
129
-
130
- The **Dashboard** is a reference implementation of the relay protocol, providing real-time visibility into agent communication, message history, and coordinator controls.
131
-
132
- ## Dashboard
133
-
134
- The dashboard starts automatically with any command (`agent-relay claude`, `agent-relay up`, etc.) at http://localhost:3888
135
-
136
- Features:
137
- - Real-time agent presence and status
138
- - Message history and threading
139
- - Coordinator panel for multi-agent orchestration
140
- - Log streaming from all agents
141
-
142
- ## Cloud
143
-
144
- For maximum scale and team collaboration, use [**agent-relay cloud**](https://agent-relay.com):
145
-
146
- ```bash
147
- # Link your machine to cloud
148
- agent-relay cloud link
149
-
150
- # Check cloud status
151
- agent-relay cloud status
152
-
153
- # List agents across all linked machines
154
- agent-relay cloud agents
155
-
156
- # Send message to agent on any machine
157
- agent-relay cloud send AgentName "Your message"
158
- ```
159
-
160
- Cloud features:
161
- - **Persistent workspaces** - Agents survive disconnects
162
- - **Team collaboration** - Share dashboards, view all agents
163
- - **Cross-machine messaging** - Send to agents on any linked machine
164
- - **Centralized monitoring** - See all daemons and agents in one place
165
-
166
- ## Testing
167
- - Full test suite: `npm test`
168
- - Storage doctor diagnostics only: `npx vitest run src/cli/commands/doctor.test.ts`
169
- - CI storage matrix runs Node 18/20/22 on Linux and macOS via `.github/workflows/storage-testing.yml`; match those locally for platform-specific issues.
170
-
171
- The cloud dashboard is the same protocol implementation, scaled for teams.
44
+ ---
172
45
 
173
46
  ## Agent Roles
174
47
 
175
- Create role-based agents by adding markdown files:
48
+ Define roles by adding markdown files to your project:
176
49
 
177
50
  ```
178
51
  .claude/agents/
@@ -186,10 +59,23 @@ Names automatically match roles (case-insensitive):
186
59
  ```bash
187
60
  agent-relay create-agent -n Lead claude # Uses lead.md
188
61
  ```
62
+ Agents spawned by that name in the dashboard automatically assume that role.
63
+
64
+ ## MCP Server
65
+
66
+ Give AI agents native relay tools via [Model Context Protocol](https://modelcontextprotocol.io):
67
+
68
+ ```bash
69
+ npx @agent-relay/mcp install
70
+ ```
71
+
72
+ Supports Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, OpenCode, Gemini CLI, and Droid.
73
+
74
+ Once configured, agents get access to: `relay_send`, `relay_inbox`, `relay_who`, `relay_spawn`, `relay_release`, and `relay_status`.
189
75
 
190
76
  ## Multi-Project Bridge
191
77
 
192
- Orchestrate agents across multiple repositories:
78
+ Orchestrate agents across repositories:
193
79
 
194
80
  ```bash
195
81
  # Start daemons in each project
@@ -200,137 +86,100 @@ cd ~/frontend && agent-relay up
200
86
  agent-relay bridge ~/auth ~/frontend ~/api
201
87
  ```
202
88
 
203
- Cross-project messaging uses `project:agent` format in the TO header:
89
+ Cross-project messaging uses `project:agent` format:
204
90
  ```bash
205
91
  cat > $AGENT_RELAY_OUTBOX/msg << 'EOF'
206
92
  TO: auth:Lead
207
93
 
208
94
  Please review the token refresh logic
209
95
  EOF
210
- echo "->relay-file:msg"
211
96
  ```
97
+ Then output: `->relay-file:msg`
212
98
 
213
- ## MCP Server (Model Context Protocol)
99
+ ## Cloud
214
100
 
215
- Give AI agents native tools for inter-agent communication via MCP:
101
+ For team collaboration and cross-machine messaging, use [agent-relay cloud](https://agent-relay.com):
216
102
 
217
103
  ```bash
218
- # One-time setup: Configure your editor
219
- npx @agent-relay/mcp install
220
-
221
- # Or configure specific editor
222
- npx @agent-relay/mcp install --editor claude
104
+ agent-relay cloud link # Link your machine
105
+ agent-relay cloud status # Check cloud status
106
+ agent-relay cloud agents # List agents across machines
107
+ agent-relay cloud send AgentName "Your message"
223
108
  ```
224
109
 
225
- Supported editors:
226
- - Claude Desktop
227
- - Claude Code
228
- - Cursor
229
- - VS Code (with Continue extension)
230
- - Windsurf
231
- - Zed
232
- - OpenCode
233
- - Gemini CLI
234
- - Droid (Factory)
110
+ Connect your CLI tool to your own private workspace and unlock agents working 24/7 against your GitHub repository in their own private sandbox.
235
111
 
236
- Once configured, AI agents automatically get access to relay tools:
237
- - `relay_send` - Send messages to agents/channels
238
- - `relay_inbox` - Check pending messages
239
- - `relay_who` - List online agents
240
- - `relay_spawn` - Spawn worker agents
241
- - `relay_release` - Release workers
242
- - `relay_status` - Check connection status
243
-
244
- The MCP server auto-discovers your relay daemon and provides a seamless integration. Start your daemon first (`agent-relay up`), then use your AI editor normally - the relay tools will be available automatically.
112
+ ## Teaching Agents
245
113
 
246
- ## OpenCode Integration
114
+ > **Note:** On `agent-relay up` initialization this step happens automatically. If there is already an existing `AGENTS.md`, `CLAUDE.md`, or `GEMINI.md`, it will append the protocol instructions to that file.
247
115
 
248
- OpenCode has enhanced support via its HTTP API (`opencode serve`):
116
+ Install the messaging protocol snippet for your agents via [prpm](https://prpm.dev):
249
117
 
250
118
  ```bash
251
- # Start OpenCode with agent-relay
252
- agent-relay opencode
119
+ npx prpm install @agent-relay/agent-relay-snippet
253
120
 
254
- # Or configure MCP for OpenCode
255
- npx @agent-relay/mcp install --editor opencode
121
+ # for Claude
122
+ npx prpm install @agent-relay/agent-relay-snippet --location CLAUDE.md
256
123
  ```
257
124
 
258
- **HTTP API Mode** (recommended when available):
259
- - Faster message injection via `/tui/append-prompt`
260
- - Session management via `/session/*` endpoints
261
- - SSE event streaming for real-time output
262
- - Auto-fallback to PTY mode if serve unavailable
263
-
264
- **Configuration** (`~/.config/opencode/opencode.json`):
265
- ```json
266
- {
267
- "mcp": {
268
- "agent-relay": {
269
- "type": "local",
270
- "command": ["npx", "@agent-relay/mcp", "serve"]
271
- }
272
- }
273
- }
125
+ Prefer skills?
126
+ ```bash
127
+ npx prpm install @agent-relay/using-agent-relay
274
128
  ```
275
129
 
276
- **Environment Variables**:
277
- - `OPENCODE_PORT` - HTTP API port (default: 4096)
278
- - `OPENCODE_API_URL` - Full HTTP API URL (overrides port, e.g., `http://localhost:8080`)
279
- - `OPENCODE_SERVER_PASSWORD` - HTTP API authentication (Basic auth)
280
- - `OPENCODE_HTTP_MODE=1` - Force HTTP API mode even if serve check fails
130
+ View all packages on our [prpm organization page](https://prpm.dev/orgs?name=Agent%20Relay).
281
131
 
282
- ## Teaching Agents
132
+ ---
283
133
 
284
- Install the messaging skill for your agents via [prpm](https://prpm.dev):
134
+ ## For Agents
285
135
 
136
+ Paste this into your LLM agent session:
286
137
  ```bash
287
- # Install snippet for AGENTS.md
288
- npx prpm install @agent-relay/agent-relay-snippet
289
-
290
- # Install snippet for CLAUDE.md
291
- npx prpm install @agent-relay/agent-relay-snippet --location CLAUDE.md
138
+ curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md
292
139
  ```
293
140
 
294
- View the rest of our packages on our [prpm organization page](https://prpm.dev/orgs?name=Agent%20Relay)
141
+ Or read the full [Agent Setup Guide](./docs/guide/agent-setup.md).
295
142
 
296
- Or manually add the relay patterns to your agent instructions.
143
+ ## Using the Agent Relay SDK
297
144
 
298
- ## Development
145
+ The easiest way to develop against relay:
299
146
 
300
147
  ```bash
301
- git clone https://github.com/AgentWorkforce/relay.git
302
- cd relay
303
- npm install && npm run build
304
- npm run dev # Start daemon + dashboard in dev mode
148
+ # Install globally and start daemon
149
+ npm install -g agent-relay
150
+ agent-relay up
151
+
152
+ # In your project
153
+ npm install agent-relay
305
154
  ```
306
155
 
307
- ## Philosophy
156
+ ```typescript
157
+ import { RelayClient } from 'agent-relay';
308
158
 
309
- **Do one thing well**: Real-time agent messaging with <5ms latency.
159
+ const client = new RelayClient({ name: 'MyApp' });
160
+ await client.connect();
310
161
 
311
- agent-relay is a messaging layer, not a framework. It integrates with:
312
- - Any CLI tool (Claude, Codex, Gemini, custom agents)
313
- - Any orchestration system (your own, Beads, external)
314
- - Any memory system (Mimir, vector DBs, files)
162
+ // Spawn a worker agent
163
+ await client.spawn({ name: 'Worker', cli: 'claude', task: 'Wait for instructions' });
315
164
 
165
+ // Send it a message
166
+ await client.send('Worker', 'Hello from my app');
316
167
  ```
317
- ┌──────────────────────────────────────────┐
318
- │ Your Agent System │
319
- ├──────────────────────────────────────────┤
320
- │ Memory │ Orchestration │ UI/Dashboard │
321
- │ (any) │ (any) │ (any) │
322
- ├──────────────────────────────────────────┤
323
- │ agent-relay │
324
- │ Real-time messaging
325
- ├──────────────────────────────────────────┤
326
- │ Claude │ Codex │ Gemini │ Custom │
327
- └──────────────────────────────────────────┘
328
- ```
168
+
169
+ ---
170
+
171
+ ## Philosophy
172
+
173
+ > **Do one thing well:** Real-time agent messaging with sub-5ms latency.
174
+
175
+ agent-relay is a messaging layer, not a framework. It works with any CLI tool, any orchestration system, and any memory layer.
176
+
177
+ ---
329
178
 
330
179
  ## License
331
180
 
332
- Apache-2.0 - Copyright 2025 Agent Workforce Incorporated
181
+ Apache-2.0 Copyright 2025 Agent Workforce Incorporated
333
182
 
334
183
  ---
335
184
 
336
- **Links:** [Documentation](https://github.com/AgentWorkforce/relay/tree/main/docs) | [Issues](https://github.com/AgentWorkforce/relay/issues) | [Cloud](https://agent-relay.com)
185
+ **Links:** [Documentation](https://docs.agent-relay.com/) · [Issues](https://github.com/AgentWorkforce/relay/issues) · [Cloud](https://agent-relay.com)