overmind-mcp 3.6.0 โ 3.6.1
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/docs/overmind-bridge-guide.md +665 -0
- package/package.json +1 -1
- package/docs/agent-http-tutorial.md +0 -524
- package/docs/doc_guide_agent_hermes_permanent.md +0 -315
- package/docs/guide_agent_hermes_overmind.md +0 -403
- package/docs/overmind-bridge-commands-reference.md +0 -438
- package/docs/overmind-bridge-persistent-agents.md +0 -463
|
@@ -1,463 +0,0 @@
|
|
|
1
|
-
# ๐ Architecture 6 Bridges Isolรฉs NEXUS โ Peer-to-Peer
|
|
2
|
-
|
|
3
|
-
> **Version**: NEXUS V17 โ Architecture corrigรฉe 2026-07-09
|
|
4
|
-
> **Pattern**: 6 processes `overmind-bridge` INDรPENDANTS, communication HTTP A2A inter-bridges
|
|
5
|
-
> **PAS de dispatcher central sur :3100** โ chaque bridge a son port, son agent, son .env, ses logs
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## โ Ce que ce n'est PAS
|
|
10
|
-
|
|
11
|
-
- โ Un seul `OverBridgeServer` partagรฉ sur :3100 qui dispatche
|
|
12
|
-
- โ Un `OvermindBridge` qui route les appels vers les 6 agents
|
|
13
|
-
- โ Un bridge "central" qui connaรฎt tous les agents
|
|
14
|
-
|
|
15
|
-
## โ
Ce que c'est
|
|
16
|
-
|
|
17
|
-
Chaque agent NEXUS = **un process `overmind-bridge server` autonome** avec :
|
|
18
|
-
- Son propre port dรฉdiรฉ
|
|
19
|
-
- Son agent dรฉdiรฉ (configurรฉ via flag)
|
|
20
|
-
- Son propre .env (clรฉs API, peers)
|
|
21
|
-
- Ses propres logs
|
|
22
|
-
- Ses propres clients HTTP vers les autres bridges
|
|
23
|
-
|
|
24
|
-
La communication A2A = **HTTP POST inter-bridges** : agent A veut parler ร agent B โ POST `http://localhost:<port_b>/rpc` avec `agent.run`.
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
## Allocation des Ports
|
|
29
|
-
|
|
30
|
-
| Bridge # | Port | Agent | Runner | Script |
|
|
31
|
-
|----------|------|-------|--------|--------|
|
|
32
|
-
| #1 | **:3101** | `nexus_master` | hermes | `start-bridge-master.ps1` |
|
|
33
|
-
| #2 | **:3102** | `nexus_trader` | hermes | `start-bridge-trader.ps1` |
|
|
34
|
-
| #3 | **:3103** | `nexus_risk_manager` | hermes | `start-bridge-risk.ps1` |
|
|
35
|
-
| #4 | **:3104** | `nexus_healer` | hermes | `start-bridge-healer.ps1` |
|
|
36
|
-
| #5 | **:3105** | `nexus_researcher` | hermes | `start-bridge-researcher.ps1` |
|
|
37
|
-
| #6 | **:3106** | `nexus_publisher` | hermes | `start-bridge-publisher.ps1` |
|
|
38
|
-
|
|
39
|
-
## Services PARTAGรS (single instance, utilisรฉs par les 6 bridges)
|
|
40
|
-
|
|
41
|
-
| Service | Port | Pourquoi single |
|
|
42
|
-
|---------|------|------------------|
|
|
43
|
-
| **Overmind MCP Server** | :3099 | Routing centralisรฉ โ tous les bridges passent par lui pour `run_agent` |
|
|
44
|
-
| **Hermes Gateway API** | :8642 | `X-Hermes-Profile` header route vers le bon profil โ 1 process Python = 6 profils |
|
|
45
|
-
| **PostgreSQL** | :5432 | `MessageLog` partagรฉ โ tous les bridges รฉcrivent leurs A2A messages dans la mรชme table `bridge_messages` |
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Topologie Rรฉseau
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
53
|
-
โ 6 BRIDGES ISOLรS โ P2P โ
|
|
54
|
-
โ โ
|
|
55
|
-
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
|
|
56
|
-
โ โ :3101 โ โ :3102 โ โ :3103 โ โ
|
|
57
|
-
โ โ nexus_master โโโโโบโ nexus_trader โโโโโบโ nexus_risk_mgr โ โ
|
|
58
|
-
โ โ bridge.ts โ โ bridge.ts โ โ bridge.ts โ โ
|
|
59
|
-
โ โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโ โ
|
|
60
|
-
โ โ HTTP A2A โ HTTP A2A โ HTTP A2A โ
|
|
61
|
-
โ โ โ โ โ
|
|
62
|
-
โ โโโโโโโโโโผโโโโโโโโโ โโโโโโโโโผโโโโโโโโโโ โโโโโโโโผโโโโโโโโโโโ โ
|
|
63
|
-
โ โ :3104 โ โ :3105 โ โ :3106 โ โ
|
|
64
|
-
โ โ nexus_healer โโโโโบโ nexus_researcherโโโโโบโ nexus_publisher โ โ
|
|
65
|
-
โ โ bridge.ts โ โ bridge.ts โ โ bridge.ts โ โ
|
|
66
|
-
โ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โ
|
|
67
|
-
โ โ
|
|
68
|
-
โ โ โ โ โ
|
|
69
|
-
โ โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
70
|
-
โ โ โ
|
|
71
|
-
โ โผ โ
|
|
72
|
-
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
73
|
-
โ โ SERVICES PARTAGรS (single) โ โ
|
|
74
|
-
โ โ โข :3099 Overmind MCP Server โ โ
|
|
75
|
-
โ โ โข :8642 Hermes Gateway API โ โ
|
|
76
|
-
โ โ โข :5432 PostgreSQL (MessageLog) โ โ
|
|
77
|
-
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
|
|
78
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Pattern de Communication
|
|
82
|
-
|
|
83
|
-
Quand `nexus_master` veut demander ร `nexus_trader` d'exรฉcuter un trade :
|
|
84
|
-
|
|
85
|
-
```typescript
|
|
86
|
-
// Dans bridges/nexus_master/src/clients/MasterToTrader.ts
|
|
87
|
-
import { BridgeClient } from '@nexus/bridge-common';
|
|
88
|
-
|
|
89
|
-
export class MasterToTrader {
|
|
90
|
-
private client = new BridgeClient('http://127.0.0.1:3102');
|
|
91
|
-
|
|
92
|
-
async requestTrade(symbol: string, action: 'buy' | 'sell', size: number) {
|
|
93
|
-
return this.client.call('agent.run', {
|
|
94
|
-
agentName: 'nexus_trader',
|
|
95
|
-
runner: 'hermes',
|
|
96
|
-
prompt: `Exรฉcute trade: ${action} ${size} ${symbol}`,
|
|
97
|
-
externalKey: 'master_to_trader',
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
**Flow** :
|
|
104
|
-
1. `nexus_master` (port 3101) reรงoit une requรชte externe
|
|
105
|
-
2. Il appelle `MasterToTrader.requestTrade()`
|
|
106
|
-
3. `BridgeClient` fait `POST http://127.0.0.1:3102/rpc`
|
|
107
|
-
4. Le bridge `nexus_trader` (port 3102) reรงoit, exรฉcute via MCP
|
|
108
|
-
5. Rรฉponse remontรฉe : `nexus_trader` โ `nexus_master` โ client externe
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Arborescence des Bridges
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
C:\Users\Deamon\Nexus\
|
|
116
|
-
โ
|
|
117
|
-
โโโ bridges/ โ 6 WRAPPERS ISOLรS (un par agent)
|
|
118
|
-
โ โ
|
|
119
|
-
โ โโโ nexus_master/ โ Bridge #1 (:3101)
|
|
120
|
-
โ โ โโโ package.json โ name: @nexus/bridge-master, dep: overmind-mcp
|
|
121
|
-
โ โ โโโ tsconfig.json
|
|
122
|
-
โ โ โโโ .env โ AGENT_NAME, BRIDGE_PORT=3101, peers URLs
|
|
123
|
-
โ โ โโโ README.md
|
|
124
|
-
โ โ โโโ src/
|
|
125
|
-
โ โ โ โโโ bridge.ts โ Entry point โ lance OverBridgeServer
|
|
126
|
-
โ โ โ โโโ config.ts โ Lit .env + export config typรฉe
|
|
127
|
-
โ โ โ โโโ logger.ts โ Pino logger dรฉdiรฉ
|
|
128
|
-
โ โ โ โโโ startup.ts โ init MessageLog + SessionStore + connect MCP
|
|
129
|
-
โ โ โ โโโ clients/
|
|
130
|
-
โ โ โ โโโ MasterToTrader.ts โ POST :3102/rpc
|
|
131
|
-
โ โ โ โโโ MasterToRisk.ts โ POST :3103/rpc
|
|
132
|
-
โ โ โ โโโ MasterToResearcher.ts โ POST :3105/rpc
|
|
133
|
-
โ โ โ โโโ MasterToPublisher.ts โ POST :3106/rpc
|
|
134
|
-
โ โ โโโ logs/
|
|
135
|
-
โ โ โ โโโ bridge-master.log
|
|
136
|
-
โ โ โโโ dist/ โ Compilรฉ
|
|
137
|
-
โ โ
|
|
138
|
-
โ โโโ nexus_trader/ โ Bridge #2 (:3102)
|
|
139
|
-
โ โ โโโ package.json โ name: @nexus/bridge-trader
|
|
140
|
-
โ โ โโโ .env โ BRIDGE_PORT=3102
|
|
141
|
-
โ โ โโโ src/
|
|
142
|
-
โ โ โ โโโ bridge.ts
|
|
143
|
-
โ โ โ โโโ clients/
|
|
144
|
-
โ โ โ โโโ TraderToMaster.ts โ POST :3101/rpc (comm au maรฎtre)
|
|
145
|
-
โ โ โ โโโ TraderToRisk.ts โ POST :3103/rpc (check risk)
|
|
146
|
-
โ โ โ โโโ TraderToPublisher.ts โ POST :3106/rpc (publier trade)
|
|
147
|
-
โ โ โโโ ...
|
|
148
|
-
โ โ
|
|
149
|
-
โ โโโ nexus_risk_manager/ โ Bridge #3 (:3103)
|
|
150
|
-
โ โ โโโ ...
|
|
151
|
-
โ โโโ nexus_healer/ โ Bridge #4 (:3104)
|
|
152
|
-
โ โ โโโ ...
|
|
153
|
-
โ โโโ nexus_researcher/ โ Bridge #5 (:3105)
|
|
154
|
-
โ โ โโโ ...
|
|
155
|
-
โ โโโ nexus_publisher/ โ Bridge #6 (:3106)
|
|
156
|
-
โ โโโ ...
|
|
157
|
-
โ
|
|
158
|
-
โโโ common/ โ PARTAGร entre les 6 bridges
|
|
159
|
-
โ โโโ package.json โ name: @nexus/bridge-common
|
|
160
|
-
โ โโโ src/
|
|
161
|
-
โ โ โโโ BaseBridge.ts โ Classe abstraite โ factorise le boot
|
|
162
|
-
โ โ โโโ BridgeClient.ts โ Client HTTP vers un autre bridge
|
|
163
|
-
โ โ โโโ types.ts โ Interfaces partagรฉes
|
|
164
|
-
โ โ โโโ logger.ts โ Pino config commune
|
|
165
|
-
โ โโโ dist/
|
|
166
|
-
โ
|
|
167
|
-
โโโ profiles/ โ Profils Hermes (existants)
|
|
168
|
-
โ โโโ nexus_master/{config.yaml,SOUL.md,.env,memories/,sessions/}
|
|
169
|
-
โ โโโ nexus_trader/
|
|
170
|
-
โ โโโ nexus_risk_manager/
|
|
171
|
-
โ โโโ nexus_healer/
|
|
172
|
-
โ โโโ nexus_researcher/
|
|
173
|
-
โ โโโ nexus_publisher/
|
|
174
|
-
โ
|
|
175
|
-
โโโ shared-infra/ โ SERVICES PARTAGรS (dรฉjร en prod)
|
|
176
|
-
โ โโโ mcp-server/ โ Overmind MCP :3099
|
|
177
|
-
โ โโโ hermes-gateway/ โ Gateway :8642
|
|
178
|
-
โ โโโ postgres/ โ :5432
|
|
179
|
-
โ
|
|
180
|
-
โโโ scripts/ โ SCRIPTS DE GESTION
|
|
181
|
-
โ โโโ start-all-bridges.ps1 โ Dรฉmarre les 6 en parallรจle (Start-Job)
|
|
182
|
-
โ โโโ stop-all-bridges.ps1
|
|
183
|
-
โ โโโ status-bridges.ps1
|
|
184
|
-
โ โโโ seed-bridges.ps1 โ Crรฉe dossiers + .env pour les 6
|
|
185
|
-
โ โโโ test-a2a-network.ps1 โ Test E2E inter-bridges
|
|
186
|
-
โ
|
|
187
|
-
โโโ logs/
|
|
188
|
-
โโโ bridges/
|
|
189
|
-
โ โโโ nexus_master.log
|
|
190
|
-
โ โโโ nexus_trader.log
|
|
191
|
-
โ โโโ nexus_risk_manager.log
|
|
192
|
-
โ โโโ nexus_healer.log
|
|
193
|
-
โ โโโ nexus_researcher.log
|
|
194
|
-
โ โโโ nexus_publisher.log
|
|
195
|
-
โโโ network/
|
|
196
|
-
โโโ a2a-traffic.log
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
## Fichiers Clรฉs
|
|
202
|
-
|
|
203
|
-
### 1. `bridges/nexus_master/.env`
|
|
204
|
-
|
|
205
|
-
```bash
|
|
206
|
-
# === Bridge :3101 โ nexus_master ===
|
|
207
|
-
AGENT_NAME=nexus_master
|
|
208
|
-
RUNNER=hermes
|
|
209
|
-
BRIDGE_PORT=3101
|
|
210
|
-
BRIDGE_HOST=127.0.0.1
|
|
211
|
-
|
|
212
|
-
# Upstream (services partagรฉs)
|
|
213
|
-
MCP_URL=http://[::1]:3099/mcp
|
|
214
|
-
HERMES_GATEWAY_URL=http://127.0.0.1:8642
|
|
215
|
-
HERMES_GATEWAY_KEY=hIhOKpVn3AgfW_sQO8XShjMb8YRhaZngSSv6UsWY0dc
|
|
216
|
-
POSTGRES_HOST=localhost
|
|
217
|
-
POSTGRES_DB=overmind
|
|
218
|
-
POSTGRES_USER=overmind
|
|
219
|
-
POSTGRES_PASSWORD=***
|
|
220
|
-
|
|
221
|
-
# Peers (autres bridges)
|
|
222
|
-
PEER_TRADER_URL=http://127.0.0.1:3102
|
|
223
|
-
PEER_RISK_URL=http://127.0.0.1:3103
|
|
224
|
-
PEER_HEALER_URL=http://127.0.0.1:3104
|
|
225
|
-
PEER_RESEARCHER_URL=http://127.0.0.1:3105
|
|
226
|
-
PEER_PUBLISHER_URL=http://127.0.0.1:3106
|
|
227
|
-
|
|
228
|
-
# Session config
|
|
229
|
-
SESSION_TTL_MS=14400000
|
|
230
|
-
MESSAGE_LOG_ENABLED=true
|
|
231
|
-
DIRECTIVES_ENABLED=true
|
|
232
|
-
```
|
|
233
|
-
|
|
234
|
-
### 2. `common/src/BaseBridge.ts` (partagรฉ)
|
|
235
|
-
|
|
236
|
-
```typescript
|
|
237
|
-
import {
|
|
238
|
-
OverBridgeServer,
|
|
239
|
-
OverBridgeService,
|
|
240
|
-
loadMessageLogConfigFromEnv,
|
|
241
|
-
createBridgeLogger,
|
|
242
|
-
} from 'overmind-mcp/bridge';
|
|
243
|
-
import { BridgeClient } from './BridgeClient.js';
|
|
244
|
-
|
|
245
|
-
export interface BaseBridgeConfig {
|
|
246
|
-
agentName: string;
|
|
247
|
-
port: number;
|
|
248
|
-
host: string;
|
|
249
|
-
mcpUrl: string;
|
|
250
|
-
logger: any;
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
export abstract class BaseBridge {
|
|
254
|
-
protected service: OverBridgeService;
|
|
255
|
-
protected server: OverBridgeServer;
|
|
256
|
-
|
|
257
|
-
constructor(protected config: BaseBridgeConfig) {
|
|
258
|
-
this.service = new OverBridgeService({
|
|
259
|
-
mcpUrl: config.mcpUrl,
|
|
260
|
-
defaultTimeoutMs: 60_000,
|
|
261
|
-
agentTimeoutMs: 2_700_000,
|
|
262
|
-
maxRetries: 2,
|
|
263
|
-
}, config.logger);
|
|
264
|
-
|
|
265
|
-
this.server = new OverBridgeServer(this.service, {
|
|
266
|
-
port: config.port,
|
|
267
|
-
host: config.host,
|
|
268
|
-
postgres: loadMessageLogConfigFromEnv(),
|
|
269
|
-
enableMessageLog: true,
|
|
270
|
-
enableSessionStore: true,
|
|
271
|
-
enableDirectives: true,
|
|
272
|
-
sessionTtlMs: 4 * 60 * 60 * 1000,
|
|
273
|
-
rateLimitMax: 200,
|
|
274
|
-
sanitizeJson: true,
|
|
275
|
-
}, config.logger);
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
abstract getClients(): BridgeClient[];
|
|
279
|
-
|
|
280
|
-
async start(): Promise<void> {
|
|
281
|
-
await this.server.start();
|
|
282
|
-
this.config.logger.info(`๐ Bridge ${this.config.agentName} ready on :${this.config.port}`);
|
|
283
|
-
for (const client of this.getClients()) {
|
|
284
|
-
await client.healthCheck();
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
async stop(): Promise<void> {
|
|
289
|
-
await this.server.stop();
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
### 3. `bridges/nexus_master/src/bridge.ts`
|
|
295
|
-
|
|
296
|
-
```typescript
|
|
297
|
-
import { BaseBridge } from '@nexus/bridge-common';
|
|
298
|
-
import { config } from './config.js';
|
|
299
|
-
import { MasterToTrader } from './clients/MasterToTrader.js';
|
|
300
|
-
import { MasterToRisk } from './clients/MasterToRisk.js';
|
|
301
|
-
import { MasterToResearcher } from './clients/MasterToResearcher.js';
|
|
302
|
-
import { MasterToPublisher } from './clients/MasterToPublisher.js';
|
|
303
|
-
import { logger } from './logger.js';
|
|
304
|
-
|
|
305
|
-
class MasterBridge extends BaseBridge {
|
|
306
|
-
protected getClients() {
|
|
307
|
-
return [
|
|
308
|
-
new MasterToTrader(config.peerTraderUrl, logger),
|
|
309
|
-
new MasterToRisk(config.peerRiskUrl, logger),
|
|
310
|
-
new MasterToResearcher(config.peerResearcherUrl, logger),
|
|
311
|
-
new MasterToPublisher(config.peerPublisherUrl, logger),
|
|
312
|
-
];
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
const bridge = new MasterBridge();
|
|
317
|
-
await bridge.start();
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
### 4. `bridges/nexus_master/src/clients/MasterToTrader.ts`
|
|
321
|
-
|
|
322
|
-
```typescript
|
|
323
|
-
import { BridgeClient } from '@nexus/bridge-common';
|
|
324
|
-
|
|
325
|
-
export class MasterToTrader {
|
|
326
|
-
private client: BridgeClient;
|
|
327
|
-
|
|
328
|
-
constructor(traderUrl: string, logger: any) {
|
|
329
|
-
this.client = new BridgeClient(traderUrl, logger);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
async requestTrade(symbol: string, action: 'buy' | 'sell', size: number): Promise<any> {
|
|
333
|
-
return this.client.call('agent.run', {
|
|
334
|
-
agentName: 'nexus_trader',
|
|
335
|
-
runner: 'hermes',
|
|
336
|
-
prompt: `Exรฉcute trade: ${action} ${size} ${symbol}`,
|
|
337
|
-
externalKey: 'master_to_trader',
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
async askAnalysis(marketData: any): Promise<any> {
|
|
342
|
-
return this.client.call('agent.run', {
|
|
343
|
-
agentName: 'nexus_trader',
|
|
344
|
-
runner: 'hermes',
|
|
345
|
-
prompt: `Analyse ces donnรฉes: ${JSON.stringify(marketData)}`,
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## Scripts de Gestion
|
|
354
|
-
|
|
355
|
-
### `scripts/start-all-bridges.ps1`
|
|
356
|
-
|
|
357
|
-
```powershell
|
|
358
|
-
# Dรฉmarre les 6 bridges en parallรจle
|
|
359
|
-
$bridges = @(
|
|
360
|
-
@{ Name="master"; Port=3101 },
|
|
361
|
-
@{ Name="trader"; Port=3102 },
|
|
362
|
-
@{ Name="risk_manager"; Port=3103 },
|
|
363
|
-
@{ Name="healer"; Port=3104 },
|
|
364
|
-
@{ Name="researcher"; Port=3105 },
|
|
365
|
-
@{ Name="publisher"; Port=3106 }
|
|
366
|
-
)
|
|
367
|
-
|
|
368
|
-
$jobs = @()
|
|
369
|
-
foreach ($b in $bridges) {
|
|
370
|
-
$script = "cd '$PSScriptRoot\..\bridges\nexus_$($b.Name)' ; node dist/bridge.js"
|
|
371
|
-
$jobs += Start-Job -ScriptBlock { Invoke-Expression $args[0] } -ArgumentList $script
|
|
372
|
-
Write-Host "โ
Started nexus_$($b.Name) on :$($b.Port)"
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
Write-Host "`n6 bridges running. Press Ctrl+C to stop."
|
|
376
|
-
Wait-Job -Job $jobs
|
|
377
|
-
```
|
|
378
|
-
|
|
379
|
-
### `scripts/seed-bridges.ps1`
|
|
380
|
-
|
|
381
|
-
```powershell
|
|
382
|
-
# Crรฉe la structure de dossiers + .env pour les 6 bridges
|
|
383
|
-
$template = @'
|
|
384
|
-
AGENT_NAME={AGENT}
|
|
385
|
-
RUNNER=hermes
|
|
386
|
-
BRIDGE_PORT={PORT}
|
|
387
|
-
BRIDGE_HOST=127.0.0.1
|
|
388
|
-
MCP_URL=http://[::1]:3099/mcp
|
|
389
|
-
HERMES_GATEWAY_URL=http://127.0.0.1:8642
|
|
390
|
-
HERMES_GATEWAY_KEY=<KEY>
|
|
391
|
-
PEER_TRADER_URL=http://127.0.0.1:3102
|
|
392
|
-
PEER_RISK_URL=http://127.0.0.1:3103
|
|
393
|
-
PEER_HEALER_URL=http://127.0.0.1:3104
|
|
394
|
-
PEER_RESEARCHER_URL=http://127.0.0.1:3105
|
|
395
|
-
PEER_PUBLISHER_URL=http://127.0.0.1:3106
|
|
396
|
-
'@
|
|
397
|
-
|
|
398
|
-
$config = @(
|
|
399
|
-
@{ Name="master"; Port=3101 },
|
|
400
|
-
@{ Name="trader"; Port=3102 },
|
|
401
|
-
@{ Name="risk_manager"; Port=3103 },
|
|
402
|
-
@{ Name="healer"; Port=3104 },
|
|
403
|
-
@{ Name="researcher"; Port=3105 },
|
|
404
|
-
@{ Name="publisher"; Port=3106 }
|
|
405
|
-
)
|
|
406
|
-
|
|
407
|
-
foreach ($c in $config) {
|
|
408
|
-
$dir = "$PSScriptRoot\..\bridges\nexus_$($c.Name)"
|
|
409
|
-
New-Item -ItemType Directory -Force -Path "$dir/src/clients"
|
|
410
|
-
New-Item -ItemType Directory -Force -Path "$dir/logs"
|
|
411
|
-
$env = $template -replace '{AGENT}', "nexus_$($c.Name)" -replace '{PORT}', $c.Port
|
|
412
|
-
Set-Content -Path "$dir/.env" -Value $env
|
|
413
|
-
Write-Host "โ
Seeded nexus_$($c.Name) on :$($c.Port)"
|
|
414
|
-
}
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
---
|
|
418
|
-
|
|
419
|
-
## Avantages de cette Architecture
|
|
420
|
-
|
|
421
|
-
| Bรฉnรฉfice | Explication |
|
|
422
|
-
|----------|-------------|
|
|
423
|
-
| **Isolation** | Chaque agent = son process, son port, ses logs. Crash d'un agent โ crash des autres. |
|
|
424
|
-
| **Scaling indรฉpendant** | Tu peux redรฉmarrer `nexus_trader` sans toucher aux autres. |
|
|
425
|
-
| **Monitoring clair** | `GET :3101/health`, `GET :3102/health`, etc. โ chaque agent a sa mรฉtrique. |
|
|
426
|
-
| **Dรฉploiement granulaire** | Tu peux dรฉployer un agent sur une autre machine en gardant le mรชme code. |
|
|
427
|
-
| **Logs sรฉparรฉs** | `logs/bridges/nexus_master.log` โ debugging facile par agent. |
|
|
428
|
-
| **Config par agent** | `.env` dรฉdiรฉ โ clรฉs API diffรฉrentes si besoin. |
|
|
429
|
-
| **Pas de SPOF** | Si le bridge master crash, les 5 autres continuent ร fonctionner entre eux. |
|
|
430
|
-
|
|
431
|
-
## Flow Complet โ Exemple Concret
|
|
432
|
-
|
|
433
|
-
```
|
|
434
|
-
Discord !sniper trade BTC
|
|
435
|
-
โ
|
|
436
|
-
discord_llm bridge (:3001)
|
|
437
|
-
โ HTTP POST /send
|
|
438
|
-
โ
|
|
439
|
-
nexus_master bridge (:3101)
|
|
440
|
-
โ BridgeClient.call('agent.run', agentName='nexus_trader')
|
|
441
|
-
โ HTTP POST http://localhost:3102/rpc
|
|
442
|
-
โ
|
|
443
|
-
nexus_trader bridge (:3102)
|
|
444
|
-
โ service.runAgent() โ BridgeProxy โ HTTP POST :3099/mcp
|
|
445
|
-
โ
|
|
446
|
-
Overmind MCP Server (:3099)
|
|
447
|
-
โ runHermesAgent() โ HermesGatewayRunner
|
|
448
|
-
โ HTTP POST :8642/v1/chat/completions + X-Hermes-Profile: nexus_trader
|
|
449
|
-
โ
|
|
450
|
-
Hermes Gateway (:8642)
|
|
451
|
-
โ Route vers profil nexus_trader
|
|
452
|
-
โ Response: "BUY 0.1 BTC @ 67500"
|
|
453
|
-
โ retour en sens inverse โ
|
|
454
|
-
```
|
|
455
|
-
|
|
456
|
-
---
|
|
457
|
-
|
|
458
|
-
## Rรฉfรฉrences
|
|
459
|
-
|
|
460
|
-
- `overmind-mcp/bridge` exports : `OverBridgeServer`, `OverBridgeService`, `BridgeProxy`, `SessionStore`, `MessageLog`
|
|
461
|
-
- Doc source : `Workflow/src/bridge/OverBridgeServer.ts` (1928 lignes)
|
|
462
|
-
- Profils Hermes existants : `~/.hermes/profiles/nexus_*` (7 profils crรฉรฉs)
|
|
463
|
-
- Gateway API : `Workflow/src/services/HermesGatewayRunner.ts` (HTTP+SSE, port 8642)
|