agent-relay 2.1.5 → 2.1.7

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 (140) hide show
  1. package/README.md +91 -234
  2. package/dist/index.cjs +153 -25
  3. package/dist/src/cli/commands/doctor.d.ts.map +1 -1
  4. package/dist/src/cli/commands/doctor.js +32 -7
  5. package/dist/src/cli/commands/doctor.js.map +1 -1
  6. package/dist/src/cli/index.d.ts.map +1 -1
  7. package/dist/src/cli/index.js +260 -27
  8. package/dist/src/cli/index.js.map +1 -1
  9. package/install.sh +545 -34
  10. package/package.json +18 -18
  11. package/packages/api-types/package.json +1 -1
  12. package/packages/benchmark/package.json +4 -4
  13. package/packages/bridge/package.json +8 -8
  14. package/packages/cli-tester/package.json +1 -1
  15. package/packages/config/package.json +2 -2
  16. package/packages/continuity/package.json +2 -2
  17. package/packages/daemon/dist/server.d.ts +5 -0
  18. package/packages/daemon/dist/server.d.ts.map +1 -1
  19. package/packages/daemon/dist/server.js +76 -4
  20. package/packages/daemon/dist/server.js.map +1 -1
  21. package/packages/daemon/package.json +12 -12
  22. package/packages/daemon/src/server.ts +79 -4
  23. package/packages/hooks/package.json +4 -4
  24. package/packages/mcp/dist/bin.js +34 -3
  25. package/packages/mcp/dist/bin.js.map +1 -1
  26. package/packages/mcp/dist/cloud.d.ts +7 -114
  27. package/packages/mcp/dist/cloud.d.ts.map +1 -1
  28. package/packages/mcp/dist/cloud.js +21 -431
  29. package/packages/mcp/dist/cloud.js.map +1 -1
  30. package/packages/mcp/dist/errors.d.ts +4 -22
  31. package/packages/mcp/dist/errors.d.ts.map +1 -1
  32. package/packages/mcp/dist/errors.js +4 -43
  33. package/packages/mcp/dist/errors.js.map +1 -1
  34. package/packages/mcp/dist/hybrid-client.d.ts.map +1 -1
  35. package/packages/mcp/dist/hybrid-client.js +7 -1
  36. package/packages/mcp/dist/hybrid-client.js.map +1 -1
  37. package/packages/mcp/dist/install.d.ts.map +1 -1
  38. package/packages/mcp/dist/install.js +7 -8
  39. package/packages/mcp/dist/install.js.map +1 -1
  40. package/packages/mcp/package.json +4 -3
  41. package/packages/mcp/src/bin.ts +39 -3
  42. package/packages/mcp/src/cloud.ts +29 -511
  43. package/packages/mcp/src/errors.ts +12 -49
  44. package/packages/mcp/src/hybrid-client.ts +8 -1
  45. package/packages/mcp/src/install.ts +7 -8
  46. package/packages/mcp/tests/discover.test.ts +72 -11
  47. package/packages/memory/package.json +2 -2
  48. package/packages/policy/package.json +2 -2
  49. package/packages/protocol/dist/types.d.ts +17 -1
  50. package/packages/protocol/dist/types.d.ts.map +1 -1
  51. package/packages/protocol/package.json +1 -1
  52. package/packages/protocol/src/types.ts +23 -0
  53. package/packages/resiliency/package.json +1 -1
  54. package/packages/sdk/dist/browser-client.d.ts +212 -0
  55. package/packages/sdk/dist/browser-client.d.ts.map +1 -0
  56. package/packages/sdk/dist/browser-client.js +750 -0
  57. package/packages/sdk/dist/browser-client.js.map +1 -0
  58. package/packages/sdk/dist/browser-framing.d.ts +46 -0
  59. package/packages/sdk/dist/browser-framing.d.ts.map +1 -0
  60. package/packages/sdk/dist/browser-framing.js +122 -0
  61. package/packages/sdk/dist/browser-framing.js.map +1 -0
  62. package/packages/sdk/dist/client.d.ts +129 -2
  63. package/packages/sdk/dist/client.d.ts.map +1 -1
  64. package/packages/sdk/dist/client.js +312 -2
  65. package/packages/sdk/dist/client.js.map +1 -1
  66. package/packages/sdk/dist/discovery.d.ts +10 -0
  67. package/packages/sdk/dist/discovery.d.ts.map +1 -0
  68. package/packages/sdk/dist/discovery.js +22 -0
  69. package/packages/sdk/dist/discovery.js.map +1 -0
  70. package/packages/sdk/dist/errors.d.ts +9 -0
  71. package/packages/sdk/dist/errors.d.ts.map +1 -0
  72. package/packages/sdk/dist/errors.js +9 -0
  73. package/packages/sdk/dist/errors.js.map +1 -0
  74. package/packages/sdk/dist/index.d.ts +18 -2
  75. package/packages/sdk/dist/index.d.ts.map +1 -1
  76. package/packages/sdk/dist/index.js +27 -1
  77. package/packages/sdk/dist/index.js.map +1 -1
  78. package/packages/sdk/dist/transports/index.d.ts +92 -0
  79. package/packages/sdk/dist/transports/index.d.ts.map +1 -0
  80. package/packages/sdk/dist/transports/index.js +129 -0
  81. package/packages/sdk/dist/transports/index.js.map +1 -0
  82. package/packages/sdk/dist/transports/socket-transport.d.ts +30 -0
  83. package/packages/sdk/dist/transports/socket-transport.d.ts.map +1 -0
  84. package/packages/sdk/dist/transports/socket-transport.js +94 -0
  85. package/packages/sdk/dist/transports/socket-transport.js.map +1 -0
  86. package/packages/sdk/dist/transports/types.d.ts +69 -0
  87. package/packages/sdk/dist/transports/types.d.ts.map +1 -0
  88. package/packages/sdk/dist/transports/types.js +10 -0
  89. package/packages/sdk/dist/transports/types.js.map +1 -0
  90. package/packages/sdk/dist/transports/websocket-transport.d.ts +55 -0
  91. package/packages/sdk/dist/transports/websocket-transport.d.ts.map +1 -0
  92. package/packages/sdk/dist/transports/websocket-transport.js +180 -0
  93. package/packages/sdk/dist/transports/websocket-transport.js.map +1 -0
  94. package/packages/sdk/package.json +28 -4
  95. package/packages/sdk/src/browser-client.ts +985 -0
  96. package/packages/sdk/src/browser-framing.test.ts +115 -0
  97. package/packages/sdk/src/browser-framing.ts +150 -0
  98. package/packages/sdk/src/client.test.ts +425 -0
  99. package/packages/sdk/src/client.ts +397 -3
  100. package/packages/sdk/src/discovery.ts +38 -0
  101. package/packages/sdk/src/errors.ts +17 -0
  102. package/packages/sdk/src/index.ts +82 -1
  103. package/packages/sdk/src/transports/index.ts +197 -0
  104. package/packages/sdk/src/transports/socket-transport.ts +115 -0
  105. package/packages/sdk/src/transports/types.ts +77 -0
  106. package/packages/sdk/src/transports/websocket-transport.ts +245 -0
  107. package/packages/sdk/tsconfig.json +1 -1
  108. package/packages/spawner/package.json +1 -1
  109. package/packages/state/package.json +1 -1
  110. package/packages/storage/dist/sqlite-adapter.d.ts +1 -0
  111. package/packages/storage/dist/sqlite-adapter.d.ts.map +1 -1
  112. package/packages/storage/dist/sqlite-adapter.js +31 -3
  113. package/packages/storage/dist/sqlite-adapter.js.map +1 -1
  114. package/packages/storage/package.json +2 -2
  115. package/packages/storage/src/jsonl-adapter.test.ts +8 -3
  116. package/packages/storage/src/sqlite-adapter.ts +34 -6
  117. package/packages/telemetry/package.json +1 -1
  118. package/packages/trajectory/package.json +2 -2
  119. package/packages/user-directory/package.json +2 -2
  120. package/packages/utils/dist/cjs/discovery.js +328 -0
  121. package/packages/utils/dist/cjs/errors.js +81 -0
  122. package/packages/utils/dist/discovery.d.ts +123 -0
  123. package/packages/utils/dist/discovery.d.ts.map +1 -0
  124. package/packages/utils/dist/discovery.js +439 -0
  125. package/packages/utils/dist/discovery.js.map +1 -0
  126. package/packages/utils/dist/errors.d.ts +29 -0
  127. package/packages/utils/dist/errors.d.ts.map +1 -0
  128. package/packages/utils/dist/errors.js +50 -0
  129. package/packages/utils/dist/errors.js.map +1 -0
  130. package/packages/utils/package.json +15 -2
  131. package/packages/utils/src/consolidation.test.ts +125 -0
  132. package/packages/utils/src/discovery.test.ts +196 -0
  133. package/packages/utils/src/discovery.ts +524 -0
  134. package/packages/utils/src/errors.test.ts +83 -0
  135. package/packages/utils/src/errors.ts +56 -0
  136. package/packages/wrapper/dist/relay-pty-orchestrator.d.ts.map +1 -1
  137. package/packages/wrapper/dist/relay-pty-orchestrator.js +12 -0
  138. package/packages/wrapper/dist/relay-pty-orchestrator.js.map +1 -1
  139. package/packages/wrapper/package.json +6 -6
  140. package/packages/wrapper/src/relay-pty-orchestrator.ts +12 -0
package/README.md CHANGED
@@ -1,178 +1,59 @@
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
4
 
5
- ## Install
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)
6
7
 
7
- ```bash
8
- npm install -g agent-relay
9
- ```
8
+ ---
10
9
 
11
- **Requirements:** Node.js 20+
10
+ ## Install
12
11
 
13
- **Linux:** Install build tools first:
12
+ **Quick install (recommended - no Node.js required!):**
14
13
  ```bash
15
- sudo apt-get update && sudo apt-get install -y build-essential
14
+ curl -fsSL https://raw.githubusercontent.com/AgentWorkforce/relay/main/install.sh | bash
16
15
  ```
17
16
 
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
17
+ This downloads a standalone binary that works without any dependencies.
43
18
 
19
+ **Or via npm:**
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
+ npm install -g agent-relay
53
22
  ```
54
23
 
55
- Agents communicate via file-based messaging:
56
-
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
- ```
24
+ *The npm method requires Node.js 18+*
68
25
 
69
- Synchronous messaging (wait for ACK):
70
- ```
71
- ->relay:Bob [await] Please confirm
72
- ->relay:Bob [await:30s] Please confirm within 30 seconds
73
- ```
26
+ ## Getting Started
74
27
 
75
- Or broadcast to all:
76
28
  ```bash
77
- cat > $AGENT_RELAY_OUTBOX/broadcast << 'EOF'
78
- TO: *
79
-
80
- Message to all agents
81
- EOF
82
- echo "->relay-file:broadcast"
29
+ agent-relay up --dashboard
83
30
  ```
84
31
 
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`).
32
+ Navigate to **http://localhost:3888** to:
33
+ - 🤖 Spawn and chat with agents using your locally installed CLI tools
34
+ - 👀 View real-time agent presence and status
35
+ - 💬 Message history and threading
36
+ - 📜 Log streaming from all agents
37
+
38
+ ---
86
39
 
87
40
  ## CLI Reference
88
41
 
89
42
  | Command | Description |
90
43
  |---------|-------------|
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 |
44
+ | `agent-relay <cli>` | Start daemon + coordinator (claude, codex, gemini, etc.) |
95
45
  | `agent-relay up` | Start daemon + dashboard |
96
46
  | `agent-relay down` | Stop daemon |
97
47
  | `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 |
48
+ | `agent-relay create-agent -n Name <cmd>` | Create a named agent |
100
49
  | `agent-relay bridge <projects...>` | Bridge multiple projects |
50
+ | `agent-relay doctor` | Diagnose issues |
101
51
 
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.
52
+ ---
172
53
 
173
54
  ## Agent Roles
174
55
 
175
- Create role-based agents by adding markdown files:
56
+ Define roles by adding markdown files to your project:
176
57
 
177
58
  ```
178
59
  .claude/agents/
@@ -186,10 +67,23 @@ Names automatically match roles (case-insensitive):
186
67
  ```bash
187
68
  agent-relay create-agent -n Lead claude # Uses lead.md
188
69
  ```
70
+ Agents spawned by that name in the dashboard automatically assume that role.
71
+
72
+ ## MCP Server
73
+
74
+ Give AI agents native relay tools via [Model Context Protocol](https://modelcontextprotocol.io):
75
+
76
+ ```bash
77
+ npx @agent-relay/mcp install
78
+ ```
79
+
80
+ Supports Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Zed, OpenCode, Gemini CLI, and Droid.
81
+
82
+ Once configured, agents get access to: `relay_send`, `relay_inbox`, `relay_who`, `relay_spawn`, `relay_release`, and `relay_status`.
189
83
 
190
84
  ## Multi-Project Bridge
191
85
 
192
- Orchestrate agents across multiple repositories:
86
+ Orchestrate agents across repositories:
193
87
 
194
88
  ```bash
195
89
  # Start daemons in each project
@@ -200,137 +94,100 @@ cd ~/frontend && agent-relay up
200
94
  agent-relay bridge ~/auth ~/frontend ~/api
201
95
  ```
202
96
 
203
- Cross-project messaging uses `project:agent` format in the TO header:
97
+ Cross-project messaging uses `project:agent` format:
204
98
  ```bash
205
99
  cat > $AGENT_RELAY_OUTBOX/msg << 'EOF'
206
100
  TO: auth:Lead
207
101
 
208
102
  Please review the token refresh logic
209
103
  EOF
210
- echo "->relay-file:msg"
211
104
  ```
105
+ Then output: `->relay-file:msg`
212
106
 
213
- ## MCP Server (Model Context Protocol)
107
+ ## Cloud
214
108
 
215
- Give AI agents native tools for inter-agent communication via MCP:
109
+ For team collaboration and cross-machine messaging, use [agent-relay cloud](https://agent-relay.com):
216
110
 
217
111
  ```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
112
+ agent-relay cloud link # Link your machine
113
+ agent-relay cloud status # Check cloud status
114
+ agent-relay cloud agents # List agents across machines
115
+ agent-relay cloud send AgentName "Your message"
223
116
  ```
224
117
 
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)
118
+ 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
119
 
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.
120
+ ## Teaching Agents
245
121
 
246
- ## OpenCode Integration
122
+ > **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
123
 
248
- OpenCode has enhanced support via its HTTP API (`opencode serve`):
124
+ Install the messaging protocol snippet for your agents via [prpm](https://prpm.dev):
249
125
 
250
126
  ```bash
251
- # Start OpenCode with agent-relay
252
- agent-relay opencode
127
+ npx prpm install @agent-relay/agent-relay-snippet
253
128
 
254
- # Or configure MCP for OpenCode
255
- npx @agent-relay/mcp install --editor opencode
129
+ # for Claude
130
+ npx prpm install @agent-relay/agent-relay-snippet --location CLAUDE.md
256
131
  ```
257
132
 
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
- }
133
+ Prefer skills?
134
+ ```bash
135
+ npx prpm install @agent-relay/using-agent-relay
274
136
  ```
275
137
 
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
138
+ View all packages on our [prpm organization page](https://prpm.dev/orgs?name=Agent%20Relay).
281
139
 
282
- ## Teaching Agents
140
+ ---
283
141
 
284
- Install the messaging skill for your agents via [prpm](https://prpm.dev):
142
+ ## For Agents
285
143
 
144
+ Paste this into your LLM agent session:
286
145
  ```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
146
+ curl -s https://raw.githubusercontent.com/AgentWorkforce/relay/main/docs/guide/agent-setup.md
292
147
  ```
293
148
 
294
- View the rest of our packages on our [prpm organization page](https://prpm.dev/orgs?name=Agent%20Relay)
149
+ Or read the full [Agent Setup Guide](./docs/guide/agent-setup.md).
295
150
 
296
- Or manually add the relay patterns to your agent instructions.
151
+ ## Using the Agent Relay SDK
297
152
 
298
- ## Development
153
+ The easiest way to develop against relay:
299
154
 
300
155
  ```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
156
+ # Install globally and start daemon
157
+ npm install -g agent-relay
158
+ agent-relay up
159
+
160
+ # In your project
161
+ npm install agent-relay
305
162
  ```
306
163
 
307
- ## Philosophy
164
+ ```typescript
165
+ import { RelayClient } from 'agent-relay';
308
166
 
309
- **Do one thing well**: Real-time agent messaging with <5ms latency.
167
+ const client = new RelayClient({ name: 'MyApp' });
168
+ await client.connect();
310
169
 
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)
170
+ // Spawn a worker agent
171
+ await client.spawn({ name: 'Worker', cli: 'claude', task: 'Wait for instructions' });
315
172
 
173
+ // Send it a message
174
+ await client.send('Worker', 'Hello from my app');
316
175
  ```
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
- ```
176
+
177
+ ---
178
+
179
+ ## Philosophy
180
+
181
+ > **Do one thing well:** Real-time agent messaging with sub-5ms latency.
182
+
183
+ agent-relay is a messaging layer, not a framework. It works with any CLI tool, any orchestration system, and any memory layer.
184
+
185
+ ---
329
186
 
330
187
  ## License
331
188
 
332
- Apache-2.0 - Copyright 2025 Agent Workforce Incorporated
189
+ Apache-2.0 Copyright 2025 Agent Workforce Incorporated
333
190
 
334
191
  ---
335
192
 
336
- **Links:** [Documentation](https://github.com/AgentWorkforce/relay/tree/main/docs) | [Issues](https://github.com/AgentWorkforce/relay/issues) | [Cloud](https://agent-relay.com)
193
+ **Links:** [Documentation](https://docs.agent-relay.com/) · [Issues](https://github.com/AgentWorkforce/relay/issues) · [Cloud](https://agent-relay.com)