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.
@@ -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)