overmind-mcp 2.0.0 โ 2.0.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/CHANGELOG.md +339 -0
- package/DEPLOYMENT.md +418 -0
- package/README.md +103 -10
- package/SETUP_WINDOWS.md +362 -0
- package/SWARM_USAGE.md +444 -0
- package/docker-compose.overmind.yml +172 -0
- package/package.json +34 -11
- package/scripts/docker-manager.mjs +200 -0
- package/scripts/install-dependencies.mjs +283 -0
- package/scripts/postinstall.mjs +223 -0
- package/scripts/setup-overmind-db.mjs +199 -0
- package/scripts/setup-windows.js +264 -0
- package/scripts/setup.mjs +396 -0
package/SWARM_USAGE.md
ADDED
|
@@ -0,0 +1,444 @@
|
|
|
1
|
+
# ๐ OverMind-MCP Swarm Orchestration - Guide d'Utilisation
|
|
2
|
+
|
|
3
|
+
## ๐ Table des Matiรจres
|
|
4
|
+
|
|
5
|
+
1. [Introduction](#introduction)
|
|
6
|
+
2. [Configuration du Swarm](#configuration-du-swarm)
|
|
7
|
+
3. [Allocation de Tรขches](#allocation-de-tรขches)
|
|
8
|
+
4. [Workflows Long-Running](#workflows-long-running)
|
|
9
|
+
5. [Exemples Pratiques](#exemples-pratiques)
|
|
10
|
+
6. [Monitoring & Debug](#monitoring--debug)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## ๐ฏ Introduction
|
|
15
|
+
|
|
16
|
+
Le **Swarm Orchestration** d'OverMind-MCP permet :
|
|
17
|
+
- **Allocation dynamique** de tรขches aux agents spรฉcialisรฉs
|
|
18
|
+
- **รquilibrage de charge** automatique (load balancing)
|
|
19
|
+
- **Workflows stateful** long-running (OSINT, analyses complรจtes)
|
|
20
|
+
- **Parallรฉlisme intelligent** avec gestion des ressources
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## ๐๏ธ Configuration du Swarm
|
|
25
|
+
|
|
26
|
+
### 1. Dรฉfinir les Capacitรฉs des Agents
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import { createSwarmOrchestrator } from 'overmind-mcp';
|
|
30
|
+
|
|
31
|
+
const swarm = createSwarmOrchestrator({
|
|
32
|
+
// Liste des agents disponibles avec leurs capacitรฉs
|
|
33
|
+
agents: [
|
|
34
|
+
{
|
|
35
|
+
agentName: 'crypto-analyst',
|
|
36
|
+
runner: 'claude',
|
|
37
|
+
capabilities: ['analysis', 'crypto', 'osint', 'data-processing'],
|
|
38
|
+
maxConcurrentTasks: 3,
|
|
39
|
+
currentLoad: 0,
|
|
40
|
+
estimatedCompletionTime: 120000 // 2 minutes par tรขche
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
agentName: 'web-scraper',
|
|
44
|
+
runner: 'kilo',
|
|
45
|
+
capabilities: ['scraping', 'web', 'data-extraction'],
|
|
46
|
+
maxConcurrentTasks: 5,
|
|
47
|
+
currentLoad: 0,
|
|
48
|
+
estimatedCompletionTime: 60000 // 1 minute par tรขche
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
agentName: 'code-reviewer',
|
|
52
|
+
runner: 'gemini',
|
|
53
|
+
capabilities: ['code', 'analysis', 'review', 'security'],
|
|
54
|
+
maxConcurrentTasks: 2,
|
|
55
|
+
currentLoad: 0,
|
|
56
|
+
estimatedCompletionTime: 180000 // 3 minutes par tรขche
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
|
|
60
|
+
// Liste des tรขches ร exรฉcuter
|
|
61
|
+
tasks: [
|
|
62
|
+
{
|
|
63
|
+
id: 'task-1',
|
|
64
|
+
type: 'analysis',
|
|
65
|
+
prompt: 'Analyser le sentiment du marchรฉ crypto',
|
|
66
|
+
priority: 10, // 1-10, 10 = prioritรฉ maximale
|
|
67
|
+
requiresCapabilities: ['analysis', 'crypto'],
|
|
68
|
+
estimatedDuration: 120000
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
id: 'task-2',
|
|
72
|
+
type: 'scraping',
|
|
73
|
+
prompt: 'Scraper les derniers articles de CoinDesk',
|
|
74
|
+
priority: 8,
|
|
75
|
+
requiresCapabilities: ['scraping', 'web'],
|
|
76
|
+
estimatedDuration: 60000
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
|
|
80
|
+
maxParallelTasks: 8, // Nombre max de tรขches en parallรจle
|
|
81
|
+
enableLoadBalancing: true, // Activer l'รฉquilibrage de charge
|
|
82
|
+
enableTaskPriority: true // Respecter les prioritรฉs des tรขches
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 2. Stratรฉgies d'Allocation
|
|
87
|
+
|
|
88
|
+
**Load Balancing** (recommandรฉ) :
|
|
89
|
+
- Alloue les tรขches en fonction de la charge actuelle des agents
|
|
90
|
+
- Prend en compte le temps d'achรจvement estimรฉ
|
|
91
|
+
- Optimise l'utilisation des ressources
|
|
92
|
+
|
|
93
|
+
**Round Robin** (simple) :
|
|
94
|
+
- Alloue les tรขches au premier agent disponible
|
|
95
|
+
- Plus rapide mais moins optimal
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## ๐ฎ Allocation de Tรขches
|
|
100
|
+
|
|
101
|
+
### Allocation Automatique
|
|
102
|
+
|
|
103
|
+
```typescript
|
|
104
|
+
// Allouer les tรขches aux agents disponibles
|
|
105
|
+
const allocations = await swarm.allocateTasks();
|
|
106
|
+
|
|
107
|
+
console.log('Allocations:', allocations);
|
|
108
|
+
// [
|
|
109
|
+
// {
|
|
110
|
+
// taskId: 'task-1',
|
|
111
|
+
// agentName: 'crypto-analyst',
|
|
112
|
+
// runner: 'claude',
|
|
113
|
+
// estimatedStart: 1699000000000,
|
|
114
|
+
// estimatedCompletion: 1699000120000
|
|
115
|
+
// }
|
|
116
|
+
// ]
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Exรฉcution des Tรขches Allouรฉes
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
// Exรฉcuter une tรขche spรฉcifique
|
|
123
|
+
const task = swarm.getTaskStatus('task-1');
|
|
124
|
+
const allocation = swarm.allocations.get('task-1');
|
|
125
|
+
|
|
126
|
+
if (task && allocation) {
|
|
127
|
+
const result = await swarm.executeTask(task, allocation);
|
|
128
|
+
|
|
129
|
+
console.log('Result:', result);
|
|
130
|
+
// {
|
|
131
|
+
// taskId: 'task-1',
|
|
132
|
+
// status: 'completed',
|
|
133
|
+
// agentName: 'crypto-analyst',
|
|
134
|
+
// result: [...],
|
|
135
|
+
// startedAt: 1699000000000,
|
|
136
|
+
// completedAt: 1699000120000
|
|
137
|
+
// }
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
## โฑ๏ธ Workflows Long-Running
|
|
144
|
+
|
|
145
|
+
### 1. Dรฉfinir un Workflow Long-Running
|
|
146
|
+
|
|
147
|
+
```typescript
|
|
148
|
+
import { startLongRunningWorkflow } from 'overmind-mcp';
|
|
149
|
+
|
|
150
|
+
const workflow = await startLongRunningWorkflow({
|
|
151
|
+
batches: [
|
|
152
|
+
{
|
|
153
|
+
id: 'osint-batch-1',
|
|
154
|
+
status: 'pending',
|
|
155
|
+
tasks: [
|
|
156
|
+
{
|
|
157
|
+
runner: 'claude',
|
|
158
|
+
prompt: 'OSINT: Analyser les mentions de BTC sur Twitter/X',
|
|
159
|
+
agentName: 'crypto-analyst'
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
runner: 'kilo',
|
|
163
|
+
prompt: 'Scraper CoinDesk pour les derniรจres news crypto',
|
|
164
|
+
agentName: 'web-scraper'
|
|
165
|
+
}
|
|
166
|
+
]
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
id: 'osint-batch-2',
|
|
170
|
+
status: 'pending',
|
|
171
|
+
tasks: [
|
|
172
|
+
{
|
|
173
|
+
runner: 'gemini',
|
|
174
|
+
prompt: 'Analyser les on-chain metrics de Ethereum',
|
|
175
|
+
agentName: 'crypto-analyst'
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
],
|
|
180
|
+
maxParallelBatches: 3,
|
|
181
|
+
batchTimeout: '24 hours'
|
|
182
|
+
});
|
|
183
|
+
|
|
184
|
+
console.log('Workflow ID:', workflow.workflowId);
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### 2. Contrรดler le Workflow
|
|
188
|
+
|
|
189
|
+
```typescript
|
|
190
|
+
// Obtenir l'รฉtat actuel
|
|
191
|
+
const state = await workflow.query(LongRunningWorkflowState);
|
|
192
|
+
console.log('State:', state);
|
|
193
|
+
// {
|
|
194
|
+
// totalBatches: 2,
|
|
195
|
+
// completedBatches: 1,
|
|
196
|
+
// failedBatches: 0,
|
|
197
|
+
// currentBatch: 'osint-batch-2',
|
|
198
|
+
// errors: []
|
|
199
|
+
// }
|
|
200
|
+
|
|
201
|
+
// Signaux de contrรดle
|
|
202
|
+
await workflow.signal(cancelSignal); // Annuler le workflow
|
|
203
|
+
await workflow.signal(pauseSignal); // Mettre en pause
|
|
204
|
+
await workflow.signal(resumeSignal); // Reprendre
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## ๐ผ Exemples Pratiques
|
|
210
|
+
|
|
211
|
+
### Exemple 1: Veille Crypto 24/7
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
import { createSwarmOrchestrator } from 'overmind-mcp';
|
|
215
|
+
|
|
216
|
+
// Crรฉer un swarm pour surveillance crypto 24/7
|
|
217
|
+
const cryptoSwarm = createSwarmOrchestrator({
|
|
218
|
+
agents: [
|
|
219
|
+
{
|
|
220
|
+
agentName: 'btc-sentiment-analyst',
|
|
221
|
+
runner: 'claude',
|
|
222
|
+
capabilities: ['sentiment', 'btc', 'social-media'],
|
|
223
|
+
maxConcurrentTasks: 5,
|
|
224
|
+
currentLoad: 0
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
agentName: 'eth-onchain-analyst',
|
|
228
|
+
runner: 'gemini',
|
|
229
|
+
capabilities: ['onchain', 'eth', 'defi'],
|
|
230
|
+
maxConcurrentTasks: 3,
|
|
231
|
+
currentLoad: 0
|
|
232
|
+
}
|
|
233
|
+
],
|
|
234
|
+
tasks: [
|
|
235
|
+
{
|
|
236
|
+
id: 'btc-twitter-sentiment',
|
|
237
|
+
type: 'sentiment-analysis',
|
|
238
|
+
prompt: 'Analyser le sentiment BTC sur Twitter (derniรจres 100 mentions)',
|
|
239
|
+
priority: 10,
|
|
240
|
+
requiresCapabilities: ['sentiment', 'btc', 'social-media'],
|
|
241
|
+
estimatedDuration: 300000
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
id: 'eth-whale-tracking',
|
|
245
|
+
type: 'onchain-analysis',
|
|
246
|
+
prompt: 'Tracker les mouvements de baleines Ethereum (>1000 ETH)',
|
|
247
|
+
priority: 9,
|
|
248
|
+
requiresCapabilities: ['onchain', 'eth'],
|
|
249
|
+
estimatedDuration: 180000
|
|
250
|
+
}
|
|
251
|
+
],
|
|
252
|
+
maxParallelTasks: 8,
|
|
253
|
+
enableLoadBalancing: true,
|
|
254
|
+
enableTaskPriority: true
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
// Lancer l'allocation
|
|
258
|
+
const allocations = await cryptoSwarm.allocateTasks();
|
|
259
|
+
console.log('Crypto surveillance lancรฉe:', allocations);
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Exemple 2: Analyse de Repos Entiers
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
import { startLongRunningWorkflow } from 'overmind-mcp';
|
|
266
|
+
|
|
267
|
+
// Workflow longue durรฉe pour analyser un repo complet
|
|
268
|
+
const repoAnalysisWorkflow = await startLongRunningWorkflow({
|
|
269
|
+
batches: [
|
|
270
|
+
{
|
|
271
|
+
id: 'code-scanning',
|
|
272
|
+
status: 'pending',
|
|
273
|
+
tasks: [
|
|
274
|
+
{
|
|
275
|
+
runner: 'kilo',
|
|
276
|
+
prompt: 'Scanner tous les fichiers TypeScript du repo pour vulnรฉrabilitรฉs',
|
|
277
|
+
agentName: 'security-scanner'
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
runner: 'claude',
|
|
281
|
+
prompt: 'Analyser l\'architecture globale du codebase',
|
|
282
|
+
agentName: 'architect-analyst'
|
|
283
|
+
}
|
|
284
|
+
]
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
id: 'code-quality',
|
|
288
|
+
status: 'pending',
|
|
289
|
+
tasks: [
|
|
290
|
+
{
|
|
291
|
+
runner: 'gemini',
|
|
292
|
+
prompt: 'รvaluer la qualitรฉ du code (duplication, complexitรฉ, documentation)',
|
|
293
|
+
agentName: 'quality-analyst'
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
],
|
|
298
|
+
maxParallelBatches: 2,
|
|
299
|
+
batchTimeout: '4 hours'
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
// Surveiller la progression
|
|
303
|
+
setInterval(async () => {
|
|
304
|
+
const state = await repoAnalysisWorkflow.query();
|
|
305
|
+
console.log('Analyse en cours:', state);
|
|
306
|
+
}, 60000); // Toutes les minutes
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### Exemple 3: Pipeline de Scraping Distribuรฉ
|
|
310
|
+
|
|
311
|
+
```typescript
|
|
312
|
+
// Pipeline de scraping avec allocation dynamique
|
|
313
|
+
const scrapingPipeline = createSwarmOrchestrator({
|
|
314
|
+
agents: [
|
|
315
|
+
{
|
|
316
|
+
agentName: 'news-scraper',
|
|
317
|
+
runner: 'kilo',
|
|
318
|
+
capabilities: ['scraping', 'news', 'html-parsing'],
|
|
319
|
+
maxConcurrentTasks: 10,
|
|
320
|
+
currentLoad: 0
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
agentName: 'social-scraper',
|
|
324
|
+
runner: 'claude',
|
|
325
|
+
capabilities: ['scraping', 'social', 'api'],
|
|
326
|
+
maxConcurrentTasks: 5,
|
|
327
|
+
currentLoad: 0
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
tasks: [
|
|
331
|
+
{
|
|
332
|
+
id: 'scrape-coindesk',
|
|
333
|
+
type: 'scraping',
|
|
334
|
+
prompt: 'Scraper les 50 derniers articles de CoinDesk',
|
|
335
|
+
priority: 10,
|
|
336
|
+
requiresCapabilities: ['scraping', 'news'],
|
|
337
|
+
estimatedDuration: 120000
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
id: 'scrape-reddit-crypto',
|
|
341
|
+
type: 'scraping',
|
|
342
|
+
prompt: 'Scraper r/CryptoCurrency pour les posts trending',
|
|
343
|
+
priority: 9,
|
|
344
|
+
requiresCapabilities: ['scraping', 'social'],
|
|
345
|
+
estimatedDuration: 180000
|
|
346
|
+
}
|
|
347
|
+
],
|
|
348
|
+
maxParallelTasks: 15,
|
|
349
|
+
enableLoadBalancing: true,
|
|
350
|
+
enableTaskPriority: true
|
|
351
|
+
});
|
|
352
|
+
|
|
353
|
+
// Exรฉcuter en continu
|
|
354
|
+
setInterval(async () => {
|
|
355
|
+
const stats = scrapingPipeline.getStatistics();
|
|
356
|
+
console.log('Pipeline stats:', stats);
|
|
357
|
+
// {
|
|
358
|
+
// totalTasks: 100,
|
|
359
|
+
// completed: 45,
|
|
360
|
+
// failed: 2,
|
|
361
|
+
// running: 10,
|
|
362
|
+
// pending: 43,
|
|
363
|
+
// totalAgents: 2,
|
|
364
|
+
// averageLoad: 3.5
|
|
365
|
+
// }
|
|
366
|
+
}, 30000); // Toutes les 30 secondes
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
---
|
|
370
|
+
|
|
371
|
+
## ๐ Monitoring & Debug
|
|
372
|
+
|
|
373
|
+
### Statistiques du Swarm
|
|
374
|
+
|
|
375
|
+
```typescript
|
|
376
|
+
// Statistiques globales
|
|
377
|
+
const stats = swarm.getStatistics();
|
|
378
|
+
console.log('Swarm Statistics:', stats);
|
|
379
|
+
// {
|
|
380
|
+
// totalTasks: 50,
|
|
381
|
+
// completed: 20,
|
|
382
|
+
// failed: 2,
|
|
383
|
+
// running: 5,
|
|
384
|
+
// pending: 23,
|
|
385
|
+
// totalAgents: 3,
|
|
386
|
+
// averageLoad: 2.5
|
|
387
|
+
// }
|
|
388
|
+
|
|
389
|
+
// รtat d'un agent spรฉcifique
|
|
390
|
+
const agentStatus = swarm.getAgentStatus('crypto-analyst');
|
|
391
|
+
console.log('Agent Status:', agentStatus);
|
|
392
|
+
// {
|
|
393
|
+
// agentName: 'crypto-analyst',
|
|
394
|
+
// runner: 'claude',
|
|
395
|
+
// capabilities: ['analysis', 'crypto', 'osint'],
|
|
396
|
+
// maxConcurrentTasks: 3,
|
|
397
|
+
// currentLoad: 2,
|
|
398
|
+
// estimatedCompletionTime: 120000
|
|
399
|
+
// }
|
|
400
|
+
|
|
401
|
+
// Rรฉsultats de toutes les tรขches
|
|
402
|
+
const allResults = swarm.getAllResults();
|
|
403
|
+
console.log('All Results:', allResults);
|
|
404
|
+
|
|
405
|
+
// Tรขches en attente
|
|
406
|
+
const pendingTasks = swarm.getPendingTasks();
|
|
407
|
+
console.log('Pending Tasks:', pendingTasks);
|
|
408
|
+
```
|
|
409
|
+
|
|
410
|
+
### Debug Workflow Long-Running
|
|
411
|
+
|
|
412
|
+
```typescript
|
|
413
|
+
// Obtenir un handle sur un workflow existant
|
|
414
|
+
import { getLongRunningWorkflowHandle } from 'overmind-mcp';
|
|
415
|
+
|
|
416
|
+
const workflow = await getLongRunningWorkflowHandle('long-running-1699000000');
|
|
417
|
+
|
|
418
|
+
// รtat actuel
|
|
419
|
+
const state = await workflow.query();
|
|
420
|
+
console.log('Workflow State:', state);
|
|
421
|
+
|
|
422
|
+
// Historique d'exรฉcution
|
|
423
|
+
const history = await workflow.history();
|
|
424
|
+
console.log('Workflow History:', history.events);
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## ๐ Bonnes Pratiques
|
|
430
|
+
|
|
431
|
+
1. **Capacitรฉs des Agents** : Dรฉfinissez des capacitรฉs prรฉcises pour une allocation optimale
|
|
432
|
+
2. **Prioritรฉs des Tรขches** : Utilisez la prioritรฉ (1-10) pour les tรขches critiques
|
|
433
|
+
3. **Parallelisme** : Ajustez `maxParallelTasks` selon vos ressources (RAM, CPU)
|
|
434
|
+
4. **Timeouts** : Dรฉfinissez des `estimatedDuration` rรฉalistes pour รฉviter les blocages
|
|
435
|
+
5. **Monitoring** : Surveillez rรฉguliรจrement les statistiques du swarm
|
|
436
|
+
6. **Fallback** : Prรฉvoyez des agents de secours pour les tรขches critiques
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## ๐ Ressources Additionnelles
|
|
441
|
+
|
|
442
|
+
- **API Temporal**: https://docs.temporal.io
|
|
443
|
+
- **Guide Swarm**: https://github.com/DeamonDev888/overmind-mcp
|
|
444
|
+
- **Support Discord**: https://discord.gg/4AR82phtBz
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
version: '3.8'
|
|
2
|
+
|
|
3
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
4
|
+
# OverMind-MCP Docker Compose (Minimal Setup)
|
|
5
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
6
|
+
# Setup minimal pour OverMind-MCP qui RรUTILISE votre PostgreSQL existant
|
|
7
|
+
# Services: RabbitMQ (Message Broker) + Temporal (Workflow Orchestrator)
|
|
8
|
+
#
|
|
9
|
+
# Prรฉrequis:
|
|
10
|
+
# - Docker Desktop installรฉ et dรฉmarrรฉ
|
|
11
|
+
# - PostgreSQL + pgvector dรฉjร en Docker (container: postgres-pgvector)
|
|
12
|
+
# - Base de donnรฉes 'overmind_memory' crรฉรฉe
|
|
13
|
+
#
|
|
14
|
+
# Usage:
|
|
15
|
+
# docker-compose -f docker-compose.overmind.yml up -d
|
|
16
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
17
|
+
|
|
18
|
+
services:
|
|
19
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
20
|
+
# RABBITMQ (Message Broker)
|
|
21
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
22
|
+
# Gรจre les files d'attente de messages entre agents
|
|
23
|
+
# Management UI: http://localhost:15672 (user: overmind, pass: overmind_secret_password)
|
|
24
|
+
rabbitmq:
|
|
25
|
+
image: rabbitmq:3.13-management
|
|
26
|
+
container_name: overmind-rabbitmq
|
|
27
|
+
hostname: overmind-rabbitmq
|
|
28
|
+
ports:
|
|
29
|
+
- "5672:5672" # AMQP protocol (pour OverMind)
|
|
30
|
+
- "15672:15672" # Management UI (interface web)
|
|
31
|
+
environment:
|
|
32
|
+
# Credentials par dรฉfaut (ร CHANGER en production !)
|
|
33
|
+
RABBITMQ_DEFAULT_USER: overmind
|
|
34
|
+
RABBITMQ_DEFAULT_PASS: overmind_secret_password_change_me
|
|
35
|
+
# Logs configuration
|
|
36
|
+
RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS: -rabbit log_levels [{connection,error},{default,warning}]
|
|
37
|
+
volumes:
|
|
38
|
+
- rabbitmq_data:/var/lib/rabbitmq
|
|
39
|
+
networks:
|
|
40
|
+
- overmind-network
|
|
41
|
+
healthcheck:
|
|
42
|
+
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
|
|
43
|
+
interval: 30s
|
|
44
|
+
timeout: 10s
|
|
45
|
+
retries: 5
|
|
46
|
+
start_period: 40s
|
|
47
|
+
restart: unless-stopped
|
|
48
|
+
|
|
49
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
50
|
+
# TEMPORAL (Workflow Orchestrator)
|
|
51
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
52
|
+
# Gรจre les workflows long-running (OSINT, analyses continues)
|
|
53
|
+
# Web UI: http://localhost:8088
|
|
54
|
+
temporal:
|
|
55
|
+
image: temporalio/auto-setup:1.24.0
|
|
56
|
+
container_name: overmind-temporal
|
|
57
|
+
hostname: overmind-temporal
|
|
58
|
+
ports:
|
|
59
|
+
- "7233:7233" # gRPC endpoint (pour OverMind)
|
|
60
|
+
- "8233:8233" # Web UI (interface web)
|
|
61
|
+
environment:
|
|
62
|
+
# Configuration PostgreSQL (votre container existant)
|
|
63
|
+
DB: postgres
|
|
64
|
+
POSTGRES_SEEDS: host.docker.internal # IMPORTANT: Accรจs ร Windows host
|
|
65
|
+
POSTGRES_USER: postgres
|
|
66
|
+
POSTGRES_PWD: postgres # โ ร CHANGER avec votre vrai mot de passe
|
|
67
|
+
POSTGRES_DB: temporal
|
|
68
|
+
# Configuration Temporal
|
|
69
|
+
TEMPERAL_ADDRESS: temporal:7233
|
|
70
|
+
TEMPORAL_CLI_ADDRESS: temporal:7233
|
|
71
|
+
SERVICES: frontend,history,matching,worker,web-ui
|
|
72
|
+
networks:
|
|
73
|
+
- overmind-network
|
|
74
|
+
restart: unless-stopped
|
|
75
|
+
|
|
76
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
77
|
+
# TEMPORAL WEB (UI Temporal)
|
|
78
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
79
|
+
# Interface web pour visualiser les workflows
|
|
80
|
+
# URL: http://localhost:8088
|
|
81
|
+
temporal-web:
|
|
82
|
+
image: temporalio/web:1.24.0
|
|
83
|
+
container_name: overmind-temporal-web
|
|
84
|
+
hostname: overmind-temporal-web
|
|
85
|
+
ports:
|
|
86
|
+
- "8088:8088"
|
|
87
|
+
environment:
|
|
88
|
+
TEMPORAL_GRPC_ENDPOINT: temporal:7233
|
|
89
|
+
TEMPORAL_PERMIT_WRITE_API: true
|
|
90
|
+
networks:
|
|
91
|
+
- overmind-network
|
|
92
|
+
depends_on:
|
|
93
|
+
- temporal
|
|
94
|
+
restart: unless-stopped
|
|
95
|
+
|
|
96
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
97
|
+
# PROMETHEUS (Metrics Collection) - OPTIONNEL
|
|
98
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
99
|
+
# Collecte les mรฉtriques d'OverMind (RAM, queues, tokens)
|
|
100
|
+
# URL: http://localhost:9090
|
|
101
|
+
#
|
|
102
|
+
# Pour activer: Dรฉcommentez le service ci-dessous et le service grafana
|
|
103
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
104
|
+
# prometheus:
|
|
105
|
+
# image: prom/prometheus:v2.55.1
|
|
106
|
+
# container_name: overmind-prometheus
|
|
107
|
+
# hostname: overmind-prometheus
|
|
108
|
+
# ports:
|
|
109
|
+
# - "9090:9090"
|
|
110
|
+
# volumes:
|
|
111
|
+
# - ./config/prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
|
112
|
+
# - prometheus_data:/prometheus
|
|
113
|
+
# command:
|
|
114
|
+
# - '--config.file=/etc/prometheus/prometheus.yml'
|
|
115
|
+
# - '--storage.tsdb.path=/prometheus'
|
|
116
|
+
# - '--web.enable-lifecycle'
|
|
117
|
+
# networks:
|
|
118
|
+
# - overmind-network
|
|
119
|
+
# restart: unless-stopped
|
|
120
|
+
|
|
121
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
122
|
+
# GRAFANA (Dashboards) - OPTIONNEL
|
|
123
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
124
|
+
# Visualise les mรฉtriques Prometheus
|
|
125
|
+
# URL: http://localhost:3000 (user: admin, pass: grafana_password)
|
|
126
|
+
#
|
|
127
|
+
# Pour activer: Dรฉcommentez le service ci-dessous
|
|
128
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
129
|
+
# grafana:
|
|
130
|
+
# image: grafana/grafana:11.3.1
|
|
131
|
+
# container_name: overmind-grafana
|
|
132
|
+
# hostname: overmind-grafana
|
|
133
|
+
# ports:
|
|
134
|
+
# - "3000:3000"
|
|
135
|
+
# environment:
|
|
136
|
+
# GF_SECURITY_ADMIN_USER: admin
|
|
137
|
+
# GF_SECURITY_ADMIN_PASSWORD: grafana_password_change_me
|
|
138
|
+
# GF_INSTALL_PLUGINS: grafana-piechart-panel
|
|
139
|
+
# GF_USERS_ALLOW_SIGN_UP: "false"
|
|
140
|
+
# volumes:
|
|
141
|
+
# - grafana_data:/var/lib/grafana
|
|
142
|
+
# - ./config/grafana/provisioning:/etc/grafana/provisioning:ro
|
|
143
|
+
# networks:
|
|
144
|
+
# - overmind-network
|
|
145
|
+
# depends_on:
|
|
146
|
+
# - prometheus
|
|
147
|
+
# restart: unless-stopped
|
|
148
|
+
|
|
149
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
150
|
+
# NETWORKS
|
|
151
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
152
|
+
networks:
|
|
153
|
+
overmind-network:
|
|
154
|
+
driver: bridge
|
|
155
|
+
name: overmind-network
|
|
156
|
+
ipam:
|
|
157
|
+
config:
|
|
158
|
+
- subnet: 172.20.0.0/16
|
|
159
|
+
|
|
160
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
161
|
+
# VOLUMES
|
|
162
|
+
# โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
163
|
+
volumes:
|
|
164
|
+
rabbitmq_data:
|
|
165
|
+
name: overmind-rabbitmq-data
|
|
166
|
+
driver: local
|
|
167
|
+
# prometheus_data:
|
|
168
|
+
# name: overmind-prometheus-data
|
|
169
|
+
# driver: local
|
|
170
|
+
# grafana_data:
|
|
171
|
+
# name: overmind-grafana-data
|
|
172
|
+
# driver: local
|
package/package.json
CHANGED
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "overmind-mcp",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"preferGlobal": true,
|
|
5
|
-
"description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mรฉmoire (Private Memory Context) et le support pour QwenCli et Nous Hermes.",
|
|
5
|
+
"description": "Orchestrateur universel agents IA multi-modeles via MCP. Inclut le protocole 'Custom-Nickname' pour identifier vos agents avec des surnoms originaux (The Chaos Prophet, Shadow Sniper, etc.), l'isolation mรฉmoire (Private Memory Context) et le support pour QwenCli et Nous Hermes. Installation automatique des dรฉpendances Docker (PostgreSQL, pgvector) inclus.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
9
|
"bin": {
|
|
10
|
-
"overmind": "dist/bin/cli.js"
|
|
10
|
+
"overmind": "./dist/bin/cli.js",
|
|
11
|
+
"overmind-setup": "./scripts/setup.mjs",
|
|
12
|
+
"overmind-infra": "./scripts/docker-manager.mjs"
|
|
11
13
|
},
|
|
12
14
|
"exports": {
|
|
13
15
|
".": {
|
|
@@ -19,7 +21,18 @@
|
|
|
19
21
|
"files": [
|
|
20
22
|
"dist",
|
|
21
23
|
"assets",
|
|
22
|
-
"README.md"
|
|
24
|
+
"README.md",
|
|
25
|
+
"SETUP_WINDOWS.md",
|
|
26
|
+
"DEPLOYMENT.md",
|
|
27
|
+
"SWARM_USAGE.md",
|
|
28
|
+
"CHANGELOG.md",
|
|
29
|
+
"docker-compose.overmind.yml",
|
|
30
|
+
"scripts",
|
|
31
|
+
"scripts/setup.js",
|
|
32
|
+
"scripts/setup-overmind-db.js",
|
|
33
|
+
"scripts/docker-manager.js",
|
|
34
|
+
"scripts/install-dependencies.js",
|
|
35
|
+
"scripts/postinstall.js"
|
|
23
36
|
],
|
|
24
37
|
"scripts": {
|
|
25
38
|
"build": "tsc",
|
|
@@ -39,12 +52,15 @@
|
|
|
39
52
|
"version": "changeset version",
|
|
40
53
|
"release": "pnpm run build && changeset publish",
|
|
41
54
|
"prepublishOnly": "pnpm run rebuild",
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"deploy:
|
|
47
|
-
"deploy:
|
|
55
|
+
"postinstall": "node scripts/postinstall.mjs",
|
|
56
|
+
"setup": "overmind-setup",
|
|
57
|
+
"setup:full": "overmind-setup --full",
|
|
58
|
+
"setup:deps": "node scripts/install-dependencies.mjs",
|
|
59
|
+
"deploy:infra": "overmind-infra up",
|
|
60
|
+
"deploy:down": "overmind-infra down",
|
|
61
|
+
"deploy:status": "overmind-infra status",
|
|
62
|
+
"deploy:logs": "overmind-infra logs",
|
|
63
|
+
"deploy:restart": "overmind-infra restart"
|
|
48
64
|
},
|
|
49
65
|
"keywords": [
|
|
50
66
|
"mcp",
|
|
@@ -53,7 +69,14 @@
|
|
|
53
69
|
"ai-agent",
|
|
54
70
|
"llm",
|
|
55
71
|
"orchestration",
|
|
56
|
-
"automation"
|
|
72
|
+
"automation",
|
|
73
|
+
"swarm",
|
|
74
|
+
"temporal",
|
|
75
|
+
"rabbitmq",
|
|
76
|
+
"pgvector",
|
|
77
|
+
"observability",
|
|
78
|
+
"docker",
|
|
79
|
+
"auto-installation"
|
|
57
80
|
],
|
|
58
81
|
"author": "DeaMoN888",
|
|
59
82
|
"license": "MIT",
|