
Votre agent de renseignement personnel. Surveille le monde à partir de multiples sources de données et vous alerte lorsqu'un changement se produit.
Votre propre terminal de renseignement. 27 sources. Une commande. Zéro cloud.
Enter The Signal Network

| Séquence de démarrage | Carte du monde |
|---|---|
![]() | ![]() |
Site en direct : https://www.crucix.live/ Explorez d'abord la démo publique, puis clonez le dépôt pour exécuter Crucix localement.
Crucix récupère la détection des incendies par satellite, le suivi des vols, la surveillance des radiations, le suivi des constellations de satellites, les indicateurs économiques, les prix du marché en direct, les données de conflit, les listes de sanctions et le sentiment social à partir de 27 flux de renseignement open source — en parallèle, toutes les 15 minutes — et rend tout sur un tableau de bord autonome de style Jarvis.
Branchez-le à un LLM et il devient un assistant de renseignement bidirectionnel — envoyant des alertes multi-niveaux à Telegram et Discord lorsque quelque chose de significatif change, répondant à des commandes comme /brief et /sweep depuis votre téléphone, et générant des idées de trading exploitables ancrées dans des données réelles inter-domaines. Votre propre analyste qui surveille le monde pendant que vous dormez.
Essayez d'abord la démo en direct sur https://www.crucix.live/, puis clonez le dépôt lorsque vous voulez la pile locale complète.
Pas de cloud. Pas de télémétrie. Pas d'abonnements. Juste node server.mjs et vous êtes opérationnel.
[!WARNING] Crucix n'a lancé aucun jeton officiel, pièce, NFT, airdrop, prévente ou autre actif basé sur la blockchain. Tout jeton ou actif numérique utilisant le nom, le logo ou la marque Crucix n'est pas affilié ni approuvé par Crucix. Ne l'achetez pas, ne le promouvez pas, ne connectez pas un portefeuille pour le réclamer, ne signez pas de transactions et n'envoyez pas de fonds sur la base de publications tierces, de messages directs ou de sites web.
La plupart des renseignements en temps réel du monde — imagerie satellite, niveaux de radiation, événements de conflit, indicateurs économiques, suivi des vols, activité maritime — sont disponibles publiquement. Ils sont simplement dispersés à travers des dizaines d'API gouvernementales, d'institutions de recherche et de flux de données ouvertes que personne n'a le temps de vérifier individuellement.
Crucix rassemble tout en un seul endroit. Pas derrière un paywall, pas enfermé dans une plateforme d'entreprise, pas besoin d'habilitation de sécurité. Juste des données ouvertes, agrégées et corrélées sur votre propre machine, mises à jour toutes les 15 minutes.
Il a été conçu pour quiconque veut comprendre ce qui se passe réellement dans le monde en ce moment — chercheurs, journalistes, traders, analystes OSINT, ou simplement des personnes curieuses qui croient que l'accès à l'information ne devrait pas dépendre de votre budget.
git clone https://github.com/calesthio/Crucix.git cd Crucix
npm install
cp .env.example .env
npm run dev
> **Si `npm run dev` échoue silencieusement** (se ferme sans afficher de sortie), exécutez Node directement à la place :
> ```bash
> node --trace-warnings server.mjs
> ```
> Cela contourne l'exécuteur de scripts de npm, qui peut avaler les erreurs sur certains systèmes (notamment PowerShell sous Windows). Vous pouvez également exécuter `node diag.mjs` pour diagnostiquer le problème exact — il vérifie votre version de Node, teste chaque import de module individuellement et vérifie la disponibilité du port. Voir [Dépannage](#troubleshooting) pour plus d'informations.
Le tableau de bord s'ouvre automatiquement à `http://localhost:3117` et commence immédiatement son premier balayage de renseignement. Ce balayage initial interroge les 27 sources en parallèle et prend généralement 30 à 60 secondes — le tableau de bord restera vide jusqu'à ce que le balayage se termine et pousse la première mise à jour des données. Ensuite, il s'actualise automatiquement toutes les 15 minutes via SSE (Server-Sent Events). Aucun rafraîchissement manuel de page nécessaire.
**Configuration requise :** Node.js 22+ (utilise le `fetch` natif, `await` au niveau supérieur, ESM)
### Docker```bash
git clone https://github.com/calesthio/Crucix.git
cd Crucix
cp .env.example .env # add your API keys
docker compose up -d
Dashboard at http://localhost:3117. Les données de sweep persistent dans ./runs/ via un montage de volume. Comprend un point de terminaison de vérification de santé.
Un HUD autonome de style Jarvis avec :
Le bouton VISUALS FULL / VISUALS LITE dans la barre supérieure ne modifie que le comportement de rendu - il ne supprime pas les sources de données ni ne réduit la couverture de sweep.
Lorsque vous passez en VISUALS LITE, le tableau de bord :
Comportement spécifique au mobile :
VISUALS LITE force également le tableau de bord en mode carte plate si vous êtes actuellement sur le globeLa préférence est sauvegardée dans le stockage local du navigateur, donc l'interface se souviendra de votre dernier réglage.
Le serveur exécute un cycle de sweep toutes les 15 minutes (configurable). Chaque cycle :
Crucix sert également de bot Telegram interactif. Au-delà de l'envoi d'alertes, il répond aux commandes directement depuis votre chat :
Cela nécessite TELEGRAM_BOT_TOKEN et TELEGRAM_CHAT_ID dans .env. Le bot interroge les messages toutes les 5 secondes (configurable via TELEGRAM_POLL_INTERVAL).
Crucix prend également en charge Discord en tant que bot complet avec des commandes slash et des alertes enrichies. Il reflète les capacités du bot Telegram avec un formatage natif Discord.
| Commande | Ce qu'elle fait |
|---|---|
/status | Santé du système, dernier sweep, état des sources, état LLM |
Les alertes sont livrées sous forme d'embeds enrichis avec des barres latérales colorées : rouge pour FLASH, jaune pour PRIORITY, bleu pour ROUTINE. Chaque embed comprend les détails du signal, les scores de confiance et les corrélations inter-domaines.
Configuration requise : DISCORD_BOT_TOKEN, DISCORD_CHANNEL_ID, et optionnellement DISCORD_GUILD_ID pour l'enregistrement instantané des commandes slash. Voir Configuration des clés API pour les détails.
Repli Webhook : Si vous ne souhaitez pas exécuter un bot complet, définissez plutôt DISCORD_WEBHOOK_URL. Cela active les alertes unidirectionnelles (pas de commandes slash) avec zéro dépendance — pas besoin de discord.js.
Dépendance optionnelle : Le bot complet nécessite discord.js. Installez-le avec npm install discord.js. S'il n'est pas installé, Crucix se rabat automatiquement sur le mode webhook uniquement.
Connectez l'un des 8 fournisseurs LLM pour une analyse améliorée :
Copiez .env.example vers .env à la racine du projet :```bash
cp .env.example .env
### Requis pour de meilleurs résultats (tous gratuits)
| Clé | Source | Comment obtenir |
|-----|--------|----------------|
| `FRED_API_KEY` | Données économiques de la Réserve fédérale | [fred.stlouisfed.org](https://fred.stlouisfed.org/docs/api/api_key.html) — instantané, gratuit |
| `FIRMS_MAP_KEY` | NASA FIRMS (données satellitaires d'incendie) | [firms.modaps.eosdis.nasa.gov](https://firms.modaps.eosdis.nasa.gov/api/area/) — instantané, gratuit |
| `EIA_API_KEY` | Administration américaine d'information sur l'énergie | [api.eia.gov](https://www.eia.gov/opendata/register.php) — instantané, gratuit |
Ces trois clés débloquent les données économiques et satellitaires les plus précieuses. Chacune nécessite environ 60 secondes d'inscription.
### Optionnel (activer des sources supplémentaires)
| Clé | Source | Comment obtenir |
|-----|--------|----------------|
| `ACLED_EMAIL` + `ACLED_PASSWORD` | Données d'événements de conflits armés | [acleddata.com/register](https://acleddata.com/register/) — gratuit, OAuth2 |
| `AISSTREAM_API_KEY` | Suivi maritime AIS des navires | [aisstream.io](https://aisstream.io/) — gratuit |
| `ADSB_API_KEY` | Suivi de vols non filtré | [RapidAPI](https://rapidapi.com/adsbexchange/api/adsbexchange-com1) — ~10 $/mois |
### Fournisseur LLM (optionnel, pour des idées améliorées par IA)
Définissez `LLM_PROVIDER` sur l'une des valeurs suivantes : `anthropic`, `openai`, `gemini`, `codex`, `openrouter`, `minimax`, `mistral`, `grok`
| Fournisseur | Clé requise | Modèle par défaut |
|-------------|-------------|-------------------|
| `anthropic` | `LLM_API_KEY` | claude-sonnet-4-6 |
| `openai` | `LLM_API_KEY` | gpt-5.4 |
| `gemini` | `LLM_API_KEY` | gemini-3.1-pro |
| `openrouter` | `LLM_API_KEY` | openrouter/auto |
| `codex` | Aucune (utilise `~/.codex/auth.json`) | gpt-5.3-codex |
| `minimax` | `LLM_API_KEY` | MiniMax-M2.5 |
| `mistral` | `LLM_API_KEY` | mistral-large-latest |
| `grok` | `LLM_API_KEY` | grok-4-latest |
Pour Codex, exécutez `npx @openai/codex login` pour vous authentifier via votre abonnement ChatGPT.
### Bot Telegram + Alertes (optionnel)
| Clé | Comment obtenir |
|-----|----------------|
| `TELEGRAM_BOT_TOKEN` | Créez via [@BotFather](https://t.me/BotFather) sur Telegram |
| `TELEGRAM_CHAT_ID` | Obtenez via [@userinfobot](https://t.me/userinfobot) |
| `TELEGRAM_CHANNELS` | *(Optionnel)* IDs de canaux supplémentaires séparés par des virgules à surveiller au-delà des 17 canaux intégrés |
| `TELEGRAM_POLL_INTERVAL` | *(Optionnel)* Intervalle de sondage des commandes du bot en ms (défaut : 5000) |
### Bot Discord + Alertes (optionnel)
| Clé | Comment obtenir |
|-----|----------------|
| `DISCORD_BOT_TOKEN` | Créez sur le [portail développeur Discord](https://discord.com/developers/applications) → Bot → Jeton |
| `DISCORD_CHANNEL_ID` | Faites un clic droit sur le canal dans Discord (Mode développeur activé) → Copier l'ID du canal |
| `DISCORD_GUILD_ID` | *(Optionnel)* Faites un clic droit sur le serveur → Copier l'ID du serveur. Permet l'enregistrement instantané des commandes slash (sinon, cela prend jusqu'à 1 heure pour les commandes globales) |
| `DISCORD_WEBHOOK_URL` | *(Optionnel)* Paramètres du canal → Intégrations → Webhooks → Nouveau Webhook → Copier l'URL. Utilisez ceci pour un mode alertes uniquement sans bot. |
**Configuration du bot Discord :**
1. Allez sur le [portail développeur Discord](https://discord.com/developers/applications) et créez une nouvelle application
2. Allez dans **Bot** → cliquez sur **Réinitialiser le jeton** → copiez le jeton dans `DISCORD_BOT_TOKEN`
3. Sous **Intents de passerelle privilégiés**, activez **Intention de contenu de message**
4. Allez dans **OAuth2** → **Générateur d'URL** → sélectionnez les scopes `bot` + `applications.commands` → sélectionnez les permissions `Envoyer des messages` + `Liens intégrés`
5. Copiez l'URL générée et ouvrez-la dans votre navigateur pour inviter le bot sur votre serveur
6. Installez la dépendance : `npm install discord.js`
Les alertes fonctionnent avec ou sans LLM sur Telegram et Discord. Avec un LLM configuré, l'évaluation des signaux est plus riche et plus consciente du contexte. Sans cela, un moteur de règles déterministe évalue les signaux en fonction de la gravité, de la corrélation inter-domaines et du nombre de signaux.
### Sans aucune clé
Crucix fonctionne toujours avec zéro clé API. 18 sources ou plus ne nécessitent aucune authentification. Les sources qui nécessitent des clés renvoient des erreurs structurées et le reste de l'analyse continue normalement.
---
## Architecture```
crucix/
├── server.mjs # Express dev server (SSE, auto-refresh, LLM, bot commands)
├── crucix.config.mjs # Configuration with env var overrides + delta thresholds
├── diag.mjs # Diagnostic script — run if server fails to start
├── .env.example # All documented env vars
├── package.json # Runtime: express | Optional: discord.js
├── docs/ # Screenshots for README
│
├── apis/
│ ├── briefing.mjs # Master orchestrator — runs all 27 sources in parallel
│ ├── save-briefing.mjs # CLI: save timestamped + latest.json
│ ├── BRIEFING_PROMPT.md # Intelligence synthesis protocol
│ ├── BRIEFING_TEMPLATE.md # Briefing output structure
│ ├── utils/
│ │ ├── fetch.mjs # safeFetch() — timeout, retries, abort, auto-JSON
│ │ └── env.mjs # .env loader (no dotenv dependency)
│ └── sources/ # 27 self-contained source modules
│ ├── gdelt.mjs # Each exports briefing() → structured data
│ ├── fred.mjs # Can run standalone: node apis/sources/fred.mjs
│ ├── space.mjs # CelesTrak satellite tracking
│ ├── yfinance.mjs # Yahoo Finance — free live market data
│ └── ... # 23 more
│
├── dashboard/
│ ├── inject.mjs # Data synthesis + standalone HTML injection
│ └── public/
│ └── jarvis.html # Self-contained Jarvis HUD
│
├── lib/
│ ├── llm/ # LLM abstraction (8 providers, raw fetch, no SDKs)
│ │ ├── provider.mjs # Base class
│ │ ├── anthropic.mjs # Claude
│ │ ├── openai.mjs # GPT
│ │ ├── gemini.mjs # Gemini
│ │ ├── grok.mjs # Grok
│ │ ├── openrouter.mjs # OpenRouter (Unified API)
│ │ ├── codex.mjs # Codex (ChatGPT subscription)
│ │ ├── minimax.mjs # MiniMax (M2.5, 204K context)
│ │ ├── mistral.mjs # Mistral AI
│ │ ├── ideas.mjs # LLM-powered trade idea generation
│ │ └── index.mjs # Factory: createLLMProvider()
│ ├── delta/ # Change tracking between sweeps
│ │ ├── engine.mjs # Delta computation — semantic dedup, configurable thresholds, severity scoring
│ │ ├── memory.mjs # Hot memory (3 runs, atomic writes) + cold storage (daily archives)
│ │ └── index.mjs # Re-exports
│ └── alerts/
│ ├── telegram.mjs # Multi-tier alerts (FLASH/PRIORITY/ROUTINE) + two-way bot commands
│ └── discord.mjs # Discord bot (slash commands, rich embeds) + webhook fallback
│
└── runs/ # Runtime data (gitignored)
├── latest.json # Most recent sweep output
└── memory/ # Delta memory (hot.json + cold/YYYY-MM-DD.json)
.mjs avec des imports explicitesdiscord.js est optionnel (pour le bot Discord). Les fournisseurs LLM utilisent fetch() brut, pas de SDK.Promise.allSettled() déclenche les 27 sources simultanémentnode apis/sources/gdelt.mjs pour tester n'importe quelle source indépendamment| Source | Ce qu'elle suit | Auth |
|---|---|---|
| CelesTrak | Lancements de satellites, suivi de l'ISS, constellations militaires, compteurs Starlink/OneWeb | Aucune |
| Source | Ce qu'elle suit | Auth |
|---|---|---|
| Yahoo Finance | Prix en temps réel : SPY, QQQ, BTC, Or, WTI, VIX + 9 autres | Aucune |
Les seuils du moteur Delta (sensibilité du système aux changements entre les analyses) peuvent être personnalisés dans crucix.config.mjs sous la section delta.thresholds. Les valeurs par défaut sont paramétrées pour filtrer le bruit tout en captant les mouvements significatifs.
Lors de l'exécution de npm run dev :
| Point d'accès | Description |
|---|---|
GET / | Tableau de bord Jarvis HUD |
GET /api/data |
npm run dev se termine silencieusement (aucune sortie, aucune erreur)C'est un problème connu où l'exécuteur de scripts npm peut avaler les erreurs, particulièrement sur Windows PowerShell. Essayez ceci dans l'ordre :
1. Exécutez Node directement (contourne npm) :```bash node --trace-warnings server.mjs
This is functionally identical to `npm run dev` but gives you full error output.
**2. Exécutez le script de diagnostic :**```bash
node diag.mjs
Ce test vérifie chaque import un par un, contrôle votre version de Node.js et confirme que le port 3117 est disponible. Il vous indiquera exactement ce qui ne fonctionne pas.
3. Vérifiez si le port 3117 est déjà utilisé :
Une instance précédente de Crucix pourrait encore être en cours d'exécution en arrière-plan.```powershell
netstat -ano | findstr 3117 taskkill /F /PID <the_PID_from_above>
taskkill /F /IM node.exe
help Affiche ce message d'aide et quitte
-h, -help Affiche ce message d'aide et quitte
-i, -interface Interface réseau à utiliser (défaut : l'interface avec la route par défaut)
-p, -passive Active la reconnaissance passive (sélection de fichier) - Pas d'analyse active
-rf, -recon-file Chemin vers le fichier de reconnaissance avec des URL (une par ligne)
-ignore-ip-csv Chemin vers le fichier CSV d'IP à ignorer (une IP par ligne)
-ip IP cible (optionnel, une seule IP)
-f, -file Chemin vers le fichier de cibles avec IP/Hôtes (un par ligne)
-pn, -ports Ports séparés par des virgules à analyser pour les ports web courants (défaut : principaux ports web)
-st, -scan-type Type d'analyse : fast (rapide) ou full (complet) (défaut : fast)
-t, -threads Nombre de threads (défaut : 30)
-o, -output Répertoire de sortie (défaut : ./output)
-s, -spider Active le crawling après l'analyse active
-d, -depth Profondeur du spidering (défaut : 3)
-sleep Délai d'attente entre les requêtes du spider (défaut : 0)
-temp-redirects Traite les redirections temporaires (302) comme permanentes pour éviter les doublons
-info Active les informations détaillées sur les résultats
-fl, -follow-links Suit les liens vers les pages de la nouvelle portée
-pl, -parallel-links Nombre de vérifications de liens en parallèle (défaut : 5)
-k, -insecure Désactive la vérification TLS (NON SÉCURISÉ)
-ct, -content-type Filtre par type de contenu de réponse spécifique
-sc, -status-code Codes de statut séparés par des virgules à afficher (défaut : tous)
-x, -proxy URL du proxy (ex. : http://127.0.0.1:8080)
-H, -headers En-têtes personnalisés sous forme de chaîne (ex. : "Header1: Val1, Header2: Val2")
-payloads Active les tests de payload XSS/SQLi sur les paramètres de formulaire
-timeout Délai d'attente pour les requêtes HTTP (secondes, défaut : 10)
-retries Nombre de tentatives pour les requêtes échouées (défaut : 2)
-u, -update Met à jour les signatures depuis le dépôt GitHub
-v, -version Affiche les informations de version```bash
# macOS / Linux
lsof -ti:3117 | xargs kill
Essayez ensuite de redémarrer. Vous pouvez aussi changer le port en définissant PORT=3118 dans votre fichier .env.
4. Vérifier la version de Node.js :```bash node --version
Crucix nécessite Node.js 22 ou ultérieur. Si vous avez une version plus ancienne, téléchargez la dernière LTS depuis [nodejs.org](https://nodejs.org/).
### Le tableau de bord affiche des panneaux vides après le premier démarrage
C'est normal — la première analyse prend 30 à 60 secondes pour interroger les 27 sources. Le tableau de bord se remplira automatiquement une fois l'analyse terminée. Vérifiez le terminal pour les journaux de progression de l'analyse.
### Certaines sources affichent des erreurs
Comportement attendu. Les sources nécessitant une clé API renverront des erreurs structurées si la clé n'est pas définie. Le reste de l'analyse se poursuit normalement. Consultez la section Source Integrity dans le tableau de bord (ou les journaux du serveur) pour voir quelles sources ont échoué et pourquoi. Les 3 clés gratuites les plus impactantes à ajouter sont `FRED_API_KEY`, `FIRMS_MAP_KEY`, et `EIA_API_KEY`.
OpenSky peut également renvoyer `HTTP 429` lorsque ses hotspots publics sont interrogés de manière trop agressive. Crucix n'essaie pas de contourner cette limite. Au lieu de cela, il signale le ralentissement/l'erreur dans l'état de la source et conserve l'instantané de trafic aérien non vide le plus récent de `runs/` afin que la couche de vol du tableau de bord ne devienne pas soudainement vide lors d'une analyse limitée.
### Le bot Telegram ne répond pas aux commandes
Assurez-vous que `TELEGRAM_BOT_TOKEN` et `TELEGRAM_CHAT_ID` sont définis dans `.env`. Le bot ne répond qu'aux messages provenant de l'ID de chat configuré (mesure de sécurité). Vous devriez voir `[Crucix] Telegram alerts enabled` et `[Crucix] Bot command polling started` dans les journaux du serveur au démarrage. Sinon, vérifiez votre token avec `curl https://api.telegram.org/bot<YOUR_TOKEN>/getMe`.
### Le bot Discord ne répond pas aux commandes slash
Vérifiez ceci dans l'ordre :
1. Assurez-vous que `DISCORD_BOT_TOKEN` et `DISCORD_CHANNEL_ID` sont définis dans `.env`
2. Vérifiez que `discord.js` est installé : `npm ls discord.js`. Si manquant, exécutez `npm install discord.js`
3. Si les commandes slash n'apparaissent pas, définissez `DISCORD_GUILD_ID` — sans cela, les commandes globales peuvent prendre jusqu'à 1 heure pour se propager. Les commandes spécifiques au serveur s'enregistrent instantanément
4. Confirmez que le bot a été invité avec les portées `bot` + `applications.commands` et dispose des permissions `Send Messages` + `Embed Links` dans le canal cible
5. Vérifiez les journaux du serveur pour `[Discord] Bot logged in as ...` au démarrage. Si vous voyez `[Discord] discord.js not installed`, installez-le et redémarrez
6. **Solution de repli par webhook uniquement :** Si vous voulez juste des alertes sans commandes slash, définissez `DISCORD_WEBHOOK_URL` au lieu du token du bot. Pas besoin de `discord.js`.
---
## Captures d'écran
Le dossier `docs/` contient des captures d'écran du tableau de bord référencées par ce README :
| Fichier | Description |
|------|-------------|
| `docs/dashboard.png` | Tableau de bord complet — image principale en haut de ce README |
| `docs/boot.png` | Animation cinématique de la séquence de démarrage |
| `docs/map.png` | Carte mondiale D3 avec types de marqueurs et arcs de vol |
| `docs/globe.png` | Vue globe 3D WebGL avec lueur atmosphérique et marqueurs |
Pour les mettre à jour : exécutez le tableau de bord, attendez la fin d'une analyse, puis utilisez les DevTools de votre navigateur (`F12` → `Ctrl+Shift+P` → "Capture full size screenshot") ou un outil comme [LICEcap](https://www.cockos.com/licecap/) pour les GIF.
---
## Contribuer
Vous avez trouvé un bug ? Vous voulez ajouter une 28e source ? Les PRs sont les bienvenues. Chaque source est un module autonome dans `apis/sources/` — il suffit d'exporter une fonction `briefing()` qui renvoie des données structurées et de l'ajouter à l'orchestrateur dans `apis/briefing.mjs`.
Si vous trouvez cela utile, une étoile aide les autres à le trouver aussi.
Pour les directives de contribution, les attentes de révision et les règles d'ajout de source, consultez `CONTRIBUTING.md`. Pour les rapports de sécurité, consultez `SECURITY.md`.
## Contact
Pour les partenariats, intégrations ou autres demandes non liées à des problèmes, vous pouvez me joindre à `[email protected]`.
Pour les bogues et demandes de fonctionnalités, veuillez utiliser GitHub Issues afin que la discussion reste visible et exploitable.
---
## Star History
<a href="https://www.star-history.com/?repos=calesthio%2FCrucix&type=date&legend=top-left">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/image?repos=calesthio/Crucix&type=date&theme=dark&legend=top-left" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/image?repos=calesthio/Crucix&type=date&legend=top-left" />
<img alt="Star History Chart" src="https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg" />
</picture>
</a>
---
## Licence
AGPL-3.0
| Vue du globe 3D |
|---|
![]() |
| Commande | Ce qu'elle fait |
|---|
/status | Santé du système, dernier sweep, état des sources, état LLM |
/sweep | Déclencher un cycle de sweep manuel |
/brief | Résumé textuel compact des dernières informations (direction, métriques clés, top OSINT) |
/portfolio | État du portefeuille (si Alpaca connecté) |
/alerts | Historique récent des alertes avec niveaux |
/mute / /mute 2h | Silencer les alertes pendant 1h (ou durée personnalisée) |
/unmute | Reprendre les alertes |
/help | Afficher toutes les commandes disponibles |
/sweep| Déclencher un cycle de sweep manuel |
/brief | Résumé textuel compact des dernières informations |
/portfolio | État du portefeuille (si Alpaca connecté) |
| Source | Ce qu'elle suit | Auth |
|---|
| GDELT | Événements d'actualité mondiaux, cartographie des conflits (100+ langues) | Aucune |
| OpenSky | Suivi de vol ADS-B en temps réel dans 6 régions sensibles | Aucune |
| NASA FIRMS | Détection d'incendies/anomalies thermiques par satellite (latence 3h) | Clé gratuite |
| Maritime/AIS | Suivi des navires, navires fantômes, contournement des sanctions | Clé gratuite |
| Safecast | Surveillance citoyenne des radiations près de 6 sites nucléaires | Aucune |
| ACLED | Événements de conflit armé : batailles, explosions, protestations | Gratuit (OAuth2) |
| ReliefWeb | Suivi des crises humanitaires de l'ONU | Aucune |
| OMS | Épidémies et urgences sanitaires | Aucune |
| OFAC | Sanctions du Trésor américain (liste SDN) | Aucune |
| OpenSanctions | Sanctions mondiales agrégées (30+ sources) | Partielle |
| ADS-B Exchange | Suivi de vol non filtré incluant le militaire | Payant |
| Source | Ce qu'elle suit | Auth |
|---|
| FRED | 22 indicateurs clés : courbe des taux, IPC, VIX, fed funds, M2 | Clé gratuite |
| Trésor américain | Dette nationale, rendements, données fiscales | Aucune |
| BLS | IPC, chômage, emplois non agricoles, PPI | Aucune |
| EIA | Brut WTI/Brent, gaz naturel, stocks | Clé gratuite |
| GSCPI | Indice des pressions sur la chaîne d'approvisionnement mondiale de la Fed de NY | Aucune |
| USAspending | Dépenses fédérales et contrats de défense | Aucune |
| ONU Comtrade | Flux commerciaux de matières premières stratégiques entre grandes puissances | Aucune |
| Source | Ce qu'elle suit | Auth |
|---|
| NOAA/NWS | Alertes météo actives aux États-Unis | Aucune |
| EPA RadNet | Surveillance des radiations par le gouvernement américain | Aucune |
| USPTO Patents | Dépôts de brevets dans 7 domaines technologiques stratégiques | Aucune |
| Bluesky | Sentiment social sur les sujets géopolitiques/marchés | Aucune |
| Sentiment social provenant de subreddits clés | OAuth | |
| Telegram | 17 chaînes OSINT/conflit/finance sélectionnées (web scraping, extensible via config) | Aucune |
| KiwiSDR | Réseau mondial de récepteurs radio HF (~600 récepteurs) | Aucune |
| Script | Commande | Description |
|---|
npm run dev | node --trace-warnings server.mjs | Lancer le tableau de bord avec auto-rafraîchissement |
npm run sweep | node apis/briefing.mjs | Exécuter une analyse unique, sortie JSON vers stdout |
npm run inject | node dashboard/inject.mjs | Injecter les dernières données dans le HTML statique |
npm run brief:save | node apis/save-briefing.mjs | Exécuter l'analyse + enregistrer le JSON horodaté |
npm run diag | node diag.mjs | Exécuter les diagnostics (version de Node, imports, vérification du port) |
| Variable | Défaut | Description |
|---|
PORT | 3117 | Port du serveur du tableau de bord |
REFRESH_INTERVAL_MINUTES | 15 | Intervalle d'auto-rafraîchissement |
LLM_PROVIDER | disabled | anthropic, openai, gemini, codex, openrouter, minimax, mistral, or grok |
LLM_API_KEY | — | Clé API (non nécessaire pour codex) |
LLM_MODEL | per-provider default | Remplacement de la sélection du modèle |
TELEGRAM_BOT_TOKEN | disabled | Pour les alertes Telegram + commandes du bot |
TELEGRAM_CHAT_ID | — | Votre ID de chat Telegram |
TELEGRAM_CHANNELS | — | IDs de canaux supplémentaires à surveiller (séparés par des virgules) |
TELEGRAM_POLL_INTERVAL | 5000 | Intervalle de sondage des commandes du bot (ms) |
DISCORD_BOT_TOKEN | disabled | Pour les alertes Discord + commandes slash |
DISCORD_CHANNEL_ID | — | Canal Discord pour les alertes |
DISCORD_GUILD_ID | — | ID du serveur (enregistrement instantané des commandes slash) |
DISCORD_WEBHOOK_URL | — | URL du webhook (solution de secours uniquement alertes, pas de bot nécessaire) |
| Données d'intelligence synthétisées actuelles (JSON) |
GET /api/health | Statut du serveur, temps de fonctionnement, nombre de sources, statut LLM |
GET /events | Flux SSE pour les mises à jour push en direct |