
Tu agente de inteligencia personal. Vigila el mundo desde múltiples fuentes de datos y te avisa cuando algo cambia.
Tu propio terminal de inteligencia. 27 fuentes. Un comando. Cero nube.
Entra en The Signal Network

| Secuencia de arranque | Mapa mundial |
|---|---|
![]() | ![]() |
Sitio web en vivo: https://www.crucix.live/ Explora primero la demo pública y luego clona el repositorio para ejecutar Crucix localmente.
Crucix extrae detección de incendios por satélite, seguimiento de vuelos, monitoreo de radiación, seguimiento de constelaciones de satélites, indicadores económicos, precios de mercado en vivo, datos de conflictos, listas de sanciones y sentimiento social de 27 fuentes de inteligencia de código abierto — en paralelo, cada 15 minutos — y lo muestra todo en un único panel de control estilo Jarvis autocontenido.
Conéctalo a un LLM y se convierte en un asistente de inteligencia bidireccional — que envía alertas de varios niveles a Telegram y Discord cuando algo relevante cambia, responde a comandos como /brief y /sweep desde tu teléfono, y genera ideas de trading accionables basadas en datos reales de varios dominios. Tu propio analista que vigila el mundo mientras duermes.
Prueba primero la demo en vivo en https://www.crucix.live/, y luego clona el repositorio cuando quieras la pila local completa.
Sin nube. Sin telemetría. Sin suscripciones. Solo node server.mjs y ya estás en marcha.
[!WARNING] Crucix no ha lanzado ningún token, moneda, NFT, airdrop, preventa u otro activo basado en blockchain oficial. Cualquier token o activo digital que use el nombre, logotipo o marca de Crucix no está afiliado ni respaldado por Crucix. No lo compres, no lo promuevas, no conectes una cartera para reclamarlo, no firmes transacciones ni envíes fondos basándote en publicaciones, mensajes directos o sitios web de terceros.
La mayor parte de la inteligencia en tiempo real del mundo — imágenes satelitales, niveles de radiación, eventos de conflicto, indicadores económicos, seguimiento de vuelos, actividad marítima — está disponible públicamente. Simplemente está dispersa en docenas de APIs gubernamentales, instituciones de investigación y fuentes de datos abiertos que nadie tiene tiempo de revisar individualmente.
Crucix lo reúne todo en un solo lugar. No detrás de un muro de pago, ni encerrado en una plataforma empresarial, ni requiriendo una autorización de seguridad. Solo datos abiertos, agregados y correlacionados en tu propia máquina, actualizados cada 15 minutos.
Fue construido para cualquiera que quiera entender lo que realmente está sucediendo en el mundo ahora mismo — investigadores, periodistas, traders, analistas de OSINT o simplemente personas curiosas que creen que el acceso a la información no debería depender de tu presupuesto.
git clone https://github.com/calesthio/Crucix.git cd Crucix
npm install
cp .env.example .env
npm run dev
> **Si `npm run dev` falla silenciosamente** (termina sin mostrar salida), ejecuta Node directamente en su lugar:
> ```bash
> node --trace-warnings server.mjs
> ```
> Esto evita el ejecutor de scripts de npm, que puede ocultar errores en algunos sistemas (particularmente PowerShell en Windows). También puedes ejecutar `node diag.mjs` para diagnosticar el problema exacto: comprueba tu versión de Node, prueba cada importación de módulo individualmente y verifica la disponibilidad del puerto. Consulta [Solución de problemas](#troubleshooting) para más información.
El panel se abre automáticamente en `http://localhost:3117` e inmediatamente comienza su primer barrido de inteligencia. Este barrido inicial consulta las 27 fuentes en paralelo y normalmente tarda entre 30 y 60 segundos: el panel aparecerá vacío hasta que el barrido se complete y envíe la primera actualización de datos. Después, se auto-refresca cada 15 minutos mediante SSE (Server-Sent Events). No es necesario refrescar la página manualmente.
**Requisitos:** Node.js 22+ (usa `fetch` nativo, `await` de nivel superior, 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
Panel de control en http://localhost:3117. Los datos del barrido persisten en ./runs/ mediante montaje de volumen. Incluye un endpoint de comprobación de estado.
Un HUD autónomo estilo Jarvis con:
El botón VISUALS FULL / VISUALS LITE en la barra superior solo cambia el comportamiento de renderizado - no elimina fuentes de datos ni reduce la cobertura del barrido.
Cuando cambias a VISUALS LITE, el panel:
Comportamiento específico para móviles:
VISUALS LITE también fuerza el panel al modo de mapa plano si actualmente estás en el globoLa preferencia se guarda en el almacenamiento local del navegador, por lo que la interfaz recordará tu última configuración.
El servidor ejecuta un ciclo de barrido cada 15 minutos (configurable). Cada ciclo:
Crucix también funciona como un bot interactivo de Telegram. Además de enviar alertas, responde a comandos directamente desde tu chat:
Esto requiere TELEGRAM_BOT_TOKEN y TELEGRAM_CHAT_ID en .env. El bot sondea los mensajes cada 5 segundos (configurable mediante TELEGRAM_POLL_INTERVAL).
Crucix también admite Discord como un bot completo con comandos de barra y alertas rich embed. Refleja las capacidades del bot de Telegram con formato nativo de Discord.
| Comando | Qué Hace |
|---|---|
/status | Estado del sistema, hora del último barrido, estado de las fuentes, estado del LLM |
Las alertas se envían como rich embeds con barras laterales de colores: rojo para FLASH, amarillo para PRIORITY, azul para ROUTINE. Cada embed incluye detalles de la señal, puntuaciones de confianza y correlaciones entre dominios.
Configuración requerida: DISCORD_BOT_TOKEN, DISCORD_CHANNEL_ID y, opcionalmente, DISCORD_GUILD_ID para el registro instantáneo de comandos de barra. Consulta Configuración de Claves API para más detalles.
Alternativa con Webhook: Si no quieres ejecutar un bot completo, configura DISCORD_WEBHOOK_URL en su lugar. Esto habilita alertas unidireccionales (sin comandos de barra) con cero dependencias - no se necesita discord.js.
Dependencia opcional: El bot completo requiere discord.js. Instálalo con npm install discord.js. Si no está instalado, Crucix recurre automáticamente al modo de solo webhook.
Conecta cualquiera de los 8 proveedores de LLM para un análisis mejorado:
Copia .env.example a .env en la raíz del proyecto:```bash
cp .env.example .env
### Requerido para mejores resultados (todo gratuito)
| Clave | Fuente | Cómo obtenerla |
|-----|--------|------------|
| `FRED_API_KEY` | Datos Económicos de la Reserva Federal | [fred.stlouisfed.org](https://fred.stlouisfed.org/docs/api/api_key.html) — instantáneo, gratuito |
| `FIRMS_MAP_KEY` | NASA FIRMS (datos satelitales de incendios) | [firms.modaps.eosdis.nasa.gov](https://firms.modaps.eosdis.nasa.gov/api/area/) — instantáneo, gratuito |
| `EIA_API_KEY` | Administración de Información Energética de EE. UU. | [api.eia.gov](https://www.eia.gov/opendata/register.php) — instantáneo, gratuito |
Estas tres claves desbloquean los datos económicos y satelitales más valiosos. Cada una tarda unos 60 segundos en registrarse.
### Opcional (habilita fuentes adicionales)
| Clave | Fuente | Cómo obtenerla |
|-----|--------|------------|
| `ACLED_EMAIL` + `ACLED_PASSWORD` | Datos de eventos de conflictos armados | [acleddata.com/register](https://acleddata.com/register/) — gratuito, OAuth2 |
| `AISSTREAM_API_KEY` | Seguimiento de embarcaciones AIS marítimas | [aisstream.io](https://aisstream.io/) — gratuito |
| `ADSB_API_KEY` | Seguimiento de vuelos sin filtrar | [RapidAPI](https://rapidapi.com/adsbexchange/api/adsbexchange-com1) — ~$10/mes |
### Proveedor de LLM (opcional, para ideas mejoradas con IA)
Configura `LLM_PROVIDER` como uno de los siguientes: `anthropic`, `openai`, `gemini`, `codex`, `openrouter`, `minimax`, `mistral`, `grok`
| Proveedor | Clave requerida | Modelo por defecto |
|----------|-------------|---------------|
| `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` | Ninguna (usa `~/.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 |
Para Codex, ejecuta `npx @openai/codex login` para autenticarte mediante tu suscripción de ChatGPT.
### Bot de Telegram + Alertas (opcional)
| Clave | Cómo obtenerla |
|-----|------------|
| `TELEGRAM_BOT_TOKEN` | Créalo a través de [@BotFather](https://t.me/BotFather) en Telegram |
| `TELEGRAM_CHAT_ID` | Consíguelo a través de [@userinfobot](https://t.me/userinfobot) |
| `TELEGRAM_CHANNELS` | *(Opcional)* IDs de canales adicionales separados por comas para monitorear además de los 17 canales integrados |
| `TELEGRAM_POLL_INTERVAL` | *(Opcional)* Intervalo de sondeo de comandos del bot en ms (por defecto: 5000) |
### Bot de Discord + Alertas (opcional)
| Clave | Cómo obtenerla |
|-----|------------|
| `DISCORD_BOT_TOKEN` | Créalo en [Portal para desarrolladores de Discord](https://discord.com/developers/applications) → Bot → Token |
| `DISCORD_CHANNEL_ID` | Haz clic derecho en el canal de Discord (Modo desarrollador activado) → Copiar ID de canal |
| `DISCORD_GUILD_ID` | *(Opcional)* Haz clic derecho en el servidor → Copiar ID de servidor. Habilita el registro instantáneo de comandos de barra (de lo contrario, los comandos globales pueden tardar hasta 1 hora) |
| `DISCORD_WEBHOOK_URL` | *(Opcional)* Ajustes del canal → Integraciones → Webhooks → Nuevo webhook → Copiar URL. Usa esto para el modo solo alertas sin un bot |
**Configuración del bot de Discord:**
1. Ve al [Portal para desarrolladores de Discord](https://discord.com/developers/applications) y crea una nueva aplicación
2. Ve a **Bot** → haz clic en **Restablecer token** → copia el token en `DISCORD_BOT_TOKEN`
3. En **Intenciones de puerta de enlace privilegiadas**, habilita **Intención de contenido de mensajes**
4. Ve a **OAuth2** → **Generador de URL** → selecciona los alcances `bot` + `applications.commands` → selecciona los permisos `Send Messages` + `Embed Links`
5. Copia la URL generada y ábrela en tu navegador para invitar al bot a tu servidor
6. Instala la dependencia: `npm install discord.js`
Las alertas funcionan con o sin un LLM tanto en Telegram como en Discord. Con un LLM configurado, la evaluación de señales es más rica y consciente del contexto. Sin uno, un motor de reglas determinista evalúa las señales según la severidad, la correlación entre dominios y el recuento de señales.
### Sin ninguna clave
Crucix sigue funcionando con cero claves API. Más de 18 fuentes no requieren autenticación en absoluto. Las fuentes que necesitan claves devuelven errores estructurados y el resto del barrido continúa con normalidad.
---
## Arquitectura```
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 con imports explícitosdiscord.js es opcional (para el bot de Discord). Los proveedores de LLM usan fetch() nativo, sin SDK.Promise.allSettled() lanza las 27 fuentes simultáneamentenode apis/sources/gdelt.mjs para probar cualquier fuente de forma independiente| Fuente | Qué rastrea | Autenticación |
|---|---|---|
| CelesTrak | Lanzamientos de satélites, seguimiento de la ISS, constelaciones militares, recuentos de Starlink/OneWeb | Ninguna |
| Fuente | Qué rastrea | Autenticación |
|---|---|---|
| Yahoo Finance | Precios en tiempo real: SPY, QQQ, BTC, Oro, WTI, VIX + 9 más | Ninguna |
Todos los ajustes están en .env con valores predeterminados razonables:
Los umbrales del motor delta (qué tan sensible es el sistema a los cambios entre barridos) se pueden personalizar en crucix.config.mjs en la sección delta.thresholds. Los valores predeterminados están ajustados para filtrar el ruido y detectar movimientos significativos.
Al ejecutar npm run dev:
| Endpoint | Descripción |
|---|---|
GET / | Panel Jarvis HUD |
GET /api/data |
npm run dev termina silenciosamente (sin salida, sin error)Es un problema conocido en el que el ejecutor de scripts de npm puede tragarse los errores, especialmente en Windows PowerShell. Prueba lo siguiente en orden:
1. Ejecuta Node directamente (omite npm):```bash node --trace-warnings server.mjs
Esto es funcionalmente idéntico a `npm run dev` pero te da la salida de errores completa.
**2. Ejecuta el script de diagnóstico:**```bash
node diag.mjs
Esto prueba cada import uno por uno, comprueba tu versión de Node.js y verifica que el puerto 3117 esté disponible. Te dirá exactamente qué está fallando.
3. Comprueba si el puerto 3117 ya está en uso:
Una instancia anterior de Crucix puede seguir ejecutándose en segundo plano.```powershell
netstat -ano | findstr 3117 taskkill /F /PID <the_PID_from_above>
taskkill /F /IM node.exe
El contenido de entrada está vacío. No hay texto que traducir en este fragmento.```bash
# macOS / Linux
lsof -ti:3117 | xargs kill
Entonces intenta iniciar de nuevo. También puedes cambiar el puerto estableciendo PORT=3118 en tu archivo .env.
4. Comprueba la versión de Node.js:```bash node --version
Crucix requiere Node.js 22 o posterior. Si tienes una versión anterior, descarga la última LTS desde [nodejs.org](https://nodejs.org/).
### El panel muestra paneles vacíos tras el primer inicio
Esto es normal: el primer barrido tarda entre 30 y 60 segundos en consultar las 27 fuentes. El panel se rellenará automáticamente cuando el barrido se complete. Revisa la terminal para ver los registros de progreso del barrido.
### Algunas fuentes muestran errores
Comportamiento esperado. Las fuentes que requieren claves de API devolverán errores estructurados si la clave no está configurada. El resto del barrido continúa con normalidad. Revisa la sección Integridad de fuentes en el panel (o los registros del servidor) para ver qué fuentes fallaron y por qué. Las 3 claves gratuitas de mayor impacto que puedes añadir son `FRED_API_KEY`, `FIRMS_MAP_KEY` y `EIA_API_KEY`.
OpenSky también puede devolver `HTTP 429` cuando sus puntos de acceso públicos se consultan de forma demasiado agresiva. Crucix no intenta evadir ese límite. En su lugar, muestra la limitación/error en el estado de las fuentes y conserva la instantánea más reciente no vacía de tráfico aéreo de `runs/` para que la capa de vuelos del panel no quede vacía de repente durante un barrido limitado.
### El bot de Telegram no responde a los comandos
Asegúrate de que tanto `TELEGRAM_BOT_TOKEN` como `TELEGRAM_CHAT_ID` están configurados en `.env`. El bot solo responde a mensajes del ID de chat configurado (medida de seguridad). Deberías ver `[Crucix] Telegram alerts enabled` y `[Crucix] Bot command polling started` en los registros del servidor al iniciar. Si no es así, verifica tu token con `curl https://api.telegram.org/bot<YOUR_TOKEN>/getMe`.
### El bot de Discord no responde a los comandos de barra
Revisa estos puntos en orden:
1. Asegúrate de que `DISCORD_BOT_TOKEN` y `DISCORD_CHANNEL_ID` están configurados en `.env`
2. Verifica que `discord.js` esté instalado: `npm ls discord.js`. Si falta, ejecuta `npm install discord.js`
3. Si los comandos de barra no aparecen, configura `DISCORD_GUILD_ID` — sin él, los comandos globales pueden tardar hasta 1 hora en propagarse. Los comandos específicos de servidor se registran al instante
4. Confirma que el bot fue invitado con los ámbitos `bot` + `applications.commands` y tiene permisos de `Send Messages` + `Embed Links` en el canal de destino
5. Revisa los registros del servidor para ver `[Discord] Bot logged in as ...` al iniciar. Si ves `[Discord] discord.js not installed`, instala y reinicia
6. **Solución alternativa solo con webhook:** Si solo quieres alertas sin comandos de barra, configura `DISCORD_WEBHOOK_URL` en lugar del token del bot. No se necesita `discord.js`.
---
## Capturas de pantalla
La carpeta `docs/` contiene capturas de pantalla del panel a las que hace referencia este README:
| Archivo | Descripción |
|------|-------------|
| `docs/dashboard.png` | Panel completo: imagen principal al inicio de este README |
| `docs/boot.png` | Animación cinematográfica de la secuencia de arranque |
| `docs/map.png` | Mapa mundial D3 con tipos de marcadores y arcos de vuelo |
| `docs/globe.png` | Vista de globo 3D WebGL con resplandor atmosférico y marcadores |
Para actualizarlas: ejecuta el panel, espera a que se complete un barrido y luego usa las herramientas de desarrollo de tu navegador (`F12` → `Ctrl+Shift+P` → "Capture full size screenshot") o una herramienta como [LICEcap](https://www.cockos.com/licecap/) para GIFs.
---
## Contribuciones
¿Encontraste un error? ¿Quieres añadir una 28.ª fuente? Se aceptan PRs. Cada fuente es un módulo independiente en `apis/sources/` — solo exporta una función `briefing()` que devuelva datos estructurados y añádela al orquestador en `apis/briefing.mjs`.
Si te resulta útil, una estrella ayuda a que otros lo encuentren también.
Para las pautas de contribución, expectativas de revisión y reglas para añadir fuentes, consulta `CONTRIBUTING.md`. Para informes de seguridad, consulta `SECURITY.md`.
## Contacto
Para alianzas, integraciones u otras consultas que no sean incidencias, puedes contactarme en `[email protected]`.
Para errores y solicitudes de funciones, usa GitHub Issues para que la discusión permanezca visible y accionable.
---
## Historial de estrellas
<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>
---
## Licencia
AGPL-3.0
| Vista 3D del globo |
|---|
![]() |
| Comando | Qué Hace |
|---|
/status | Estado del sistema, hora del último barrido, estado de las fuentes, estado del LLM |
/sweep | Activa un ciclo de barrido manual |
/brief | Resumen de texto compacto de la última inteligencia (dirección, métricas clave, OSINT principal) |
/portfolio | Estado de la cartera (si Alpaca está conectado) |
/alerts | Historial reciente de alertas con niveles |
/mute / /mute 2h | Silencia las alertas durante 1 h (o duración personalizada) |
/unmute | Reanuda las alertas |
/help | Muestra todos los comandos disponibles |
/sweep |
| Activa un ciclo de barrido manual |
/brief | Resumen de texto compacto de la última inteligencia |
/portfolio | Estado de la cartera (si Alpaca está conectado) |
| Fuente | Qué rastrea | Autenticación |
|---|
| GDELT | Eventos de noticias globales, mapas de conflictos (más de 100 idiomas) | Ninguna |
| OpenSky | Seguimiento de vuelos ADS-B en tiempo real en 6 regiones críticas | Ninguna |
| NASA FIRMS | Detección satelital de incendios/anomalías térmicas (latencia de 3 h) | Clave gratuita |
| Maritime/AIS | Seguimiento de embarcaciones, buques oscuros, evasión de sanciones | Clave gratuita |
| Safecast | Monitoreo de radiación de ciencia ciudadana cerca de 6 sitios nucleares | Ninguna |
| ACLED | Eventos de conflicto armado: batallas, explosiones, protestas | Gratuita (OAuth2) |
| ReliefWeb | Seguimiento de crisis humanitarias de la ONU | Ninguna |
| WHO | Brotes de enfermedades y emergencias sanitarias | Ninguna |
| OFAC | Sanciones del Tesoro de EE. UU. (lista SDN) | Ninguna |
| OpenSanctions | Sanciones globales agregadas (más de 30 fuentes) | Parcial |
| ADS-B Exchange | Seguimiento de vuelos sin filtrar, incluidos los militares | De pago |
| Fuente | Qué rastrea | Autenticación |
|---|
| FRED | 22 indicadores clave: curva de rendimiento, IPC, VIX, fondos federales, M2 | Clave gratuita |
| US Treasury | Deuda nacional, rendimientos, datos fiscales | Ninguna |
| BLS | IPC, desempleo, nóminas no agrícolas, IPP | Ninguna |
| EIA | Petróleo crudo WTI/Brent, gas natural, inventarios | Clave gratuita |
| GSCPI | Índice de Presión de la Cadena de Suministro Global de la NY Fed | Ninguna |
| USAspending | Gasto federal y contratos de defensa | Ninguna |
| UN Comtrade | Flujos comerciales estratégicos de materias primas entre las grandes potencias | Ninguna |
| Fuente | Qué rastrea | Autenticación |
|---|
| NOAA/NWS | Alertas meteorológicas activas de EE. UU. | Ninguna |
| EPA RadNet | Monitoreo de radiación del gobierno de EE. UU. | Ninguna |
| USPTO Patents | Solicitudes de patentes en 7 áreas tecnológicas estratégicas | Ninguna |
| Bluesky | Sentimiento social sobre temas geopolíticos/de mercado | Ninguna |
| Sentimiento social de subreddits clave | OAuth | |
| Telegram | 17 canales seleccionados de OSINT/conflictos/finanzas (web scraping, ampliable mediante configuración) | Ninguna |
| KiwiSDR | Red global de receptores de radio HF (~600 receptores) | Ninguna |
| Script | Comando | Descripción |
|---|
npm run dev | node --trace-warnings server.mjs | Iniciar el panel con autoactualización |
npm run sweep | node apis/briefing.mjs | Ejecutar un barrido único y mostrar JSON en stdout |
npm run inject | node dashboard/inject.mjs | Inyectar los últimos datos en el HTML estático |
npm run brief:save | node apis/save-briefing.mjs | Ejecutar barrido + guardar JSON con marca de tiempo |
npm run diag | node diag.mjs | Ejecutar diagnósticos (versión de Node, imports, comprobación de puerto) |
| Variable | Predeterminado | Descripción |
|---|
PORT | 3117 | Puerto del servidor del panel |
REFRESH_INTERVAL_MINUTES | 15 | Intervalo de autoactualización |
LLM_PROVIDER | disabled | anthropic, openai, gemini, codex, openrouter, minimax, mistral o grok |
LLM_API_KEY | — | Clave de API (no necesaria para codex) |
LLM_MODEL | per-provider default | Sobrescribir la selección de modelo |
TELEGRAM_BOT_TOKEN | disabled | Para alertas de Telegram + comandos del bot |
TELEGRAM_CHAT_ID | — | Tu ID de chat de Telegram |
TELEGRAM_CHANNELS | — | IDs de canales adicionales a monitorear (separados por comas) |
TELEGRAM_POLL_INTERVAL | 5000 | Intervalo de sondeo de comandos del bot (ms) |
DISCORD_BOT_TOKEN | disabled | Para alertas de Discord + comandos de barra |
DISCORD_CHANNEL_ID | — | Canal de Discord para alertas |
DISCORD_GUILD_ID | — | ID del servidor (registro instantáneo de comandos de barra) |
DISCORD_WEBHOOK_URL | — | URL del webhook (respaldo solo para alertas, no necesita bot) |
| Datos actuales de inteligencia sintetizada (JSON) |
GET /api/health | Estado del servidor, tiempo de actividad, número de fuentes, estado del LLM |
GET /events | Flujo SSE para actualizaciones push en vivo |