PluginBench
Skill
Fail
Audit score 45

crucix-intelligence-dashboard

reason-machines/trending-skills

Self-hosted intelligence dashboard aggregating 27 OSINT sources with LLM analysis and Telegram/Discord alerts.

What is crucix-intelligence-dashboard?

Crucix is a personal intelligence terminal that pulls from 27 open-source data feeds (satellite imagery, flight tracking, radiation monitoring, conflict data, markets, maritime AIS, and more) every 15 minutes, renders them on a WebGL globe dashboard, and optionally pushes alerts to Telegram/Discord with LLM-enhanced analysis. Use it for real-time monitoring of global events, markets, and infrastructure.

  • Aggregates 27 OSINT data sources (NASA fires, flight tracking, radiation, maritime AIS, economic indicators, conflict data, news feeds) into a single dashboard
  • Renders data on an interactive 3D WebGL globe with animated flight arcs, region filters, and 9 marker types
  • Generates LLM-enhanced alerts tiered as FLASH/PRIORITY/ROUTINE with semantic deduplication
  • Pushes real-time alerts to Telegram and Discord bots with slash commands and webhooks
  • Tracks live markets (indexes, crypto, energy, commodities) and risk gauges (VIX, spreads, supply chain)
  • Persists sweep deltas and historical data; works with zero API keys (falls back to free public sources)

How to install crucix-intelligence-dashboard

npx skills add https://github.com/reason-machines/trending-skills --skill crucix-intelligence-dashboard
Prerequisites
  • Node.js 22+ (uses native fetch, top-level await, ESM modules)
  • Docker and Docker Compose (optional, for containerized deployment)
  • API keys for data sources (optional; many sources work free: FRED, FIRMS, EIA, OpenSky, Safecast, CelesTrak, Yahoo Finance)
  • Telegram Bot Token and Chat ID (optional, for Telegram alerts)
  • Discord Bot Token and Channel ID (optional, for Discord alerts)
  • LLM API key (optional; Anthropic, OpenAI, Google Gemini, or OpenAI Codex)
Claude Code
Cursor
Windsurf
Cline

How to use crucix-intelligence-dashboard

  1. 1.Clone the repository and install dependencies: git clone https://github.com/calesthio/Crucix.git && cd crucix && npm install
  2. 2.Copy and edit .env.example to .env with your API keys (register free keys at fred.stlouisfed.org, firms.modaps.eosdis.nasa.gov, eia.gov)
  3. 3.Start the dashboard with npm run dev (or node server.mjs on Windows) — accessible at http://localhost:3117
  4. 4.Configure Telegram bot by setting TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID, then use /status, /sweep, /brief commands
  5. 5.Configure Discord bot by setting DISCORD_BOT_TOKEN and DISCORD_CHANNEL_ID, then use /status, /sweep, /brief slash commands
  6. 6.Monitor the 3D globe dashboard for real-time markers (fires, aircraft, radiation, maritime, conflicts) and sweep deltas
  7. 7.Optionally enable LLM analysis by setting LLM_PROVIDER and LLM_API_KEY for enhanced alert generation

Use cases

Good for
  • Monitor global satellite fire detection, flight patterns, and maritime vessel movements in real time
  • Receive automated alerts on conflict escalations, radiation anomalies, and market volatility via Telegram or Discord
  • Track economic indicators and energy prices with LLM-generated trade ideas every 15 minutes
  • Set up a personal geopolitical intelligence terminal for research, journalism, or situational awareness
  • Integrate with trading platforms (Alpaca) to correlate OSINT signals with portfolio decisions
Who it's for
  • Researchers and analysts monitoring geopolitical events and global infrastructure
  • Traders and portfolio managers seeking alternative data signals
  • Journalists and open-source intelligence (OSINT) practitioners
  • DevOps and security teams tracking global incidents and anomalies
  • Anyone building a self-hosted intelligence system without cloud dependencies

crucix-intelligence-dashboard FAQ

Do I need API keys to run Crucix?

No. Crucix works out of the box with zero keys — it falls back to free public sources (Yahoo Finance, CelesTrak, GDELT, OpenSky public tier, Safecast, RSS feeds). Registering free keys at FRED, FIRMS, and EIA (~3 minutes total) unlocks satellite fire detection, economic data, and energy prices.

What happens if the LLM provider fails?

LLM failures are non-fatal. Crucix automatically falls back to rule-based alert evaluation and continues the sweep cycle without crashing.

Can I run Crucix without Telegram or Discord?

Yes. The dashboard and LLM analysis work independently. Bots are optional integrations — omit TELEGRAM_BOT_TOKEN and DISCORD_BOT_TOKEN to skip them.

How often does Crucix refresh data?

Every 15 minutes. Each sweep cycle fetches all 27 sources in parallel (~30–60s), synthesizes deltas, runs LLM analysis, evaluates alerts, and pushes updates to connected browsers and bots.

Can I integrate Crucix with my trading platform?

Yes. Set ALPACA_API_KEY and ALPACA_SECRET_KEY to enable portfolio tracking and the /portfolio command in Telegram/Discord. LLM analysis can generate trade ideas correlated with OSINT signals.

Full instructions (SKILL.md)

Source of truth, from reason-machines/trending-skills.


name: crucix-intelligence-dashboard description: Personal intelligence agent that aggregates 27 OSINT data sources into a self-hosted Jarvis-style dashboard with Telegram/Discord bots, LLM analysis, and real-time alerts. triggers:

  • set up Crucix intelligence dashboard
  • add OSINT monitoring with Crucix
  • configure Crucix alerts and bots
  • integrate LLM with Crucix intelligence
  • watch multiple data sources for changes
  • set up self-hosted intelligence terminal
  • configure Crucix Telegram or Discord bot
  • add real-time world monitoring dashboard

Crucix Intelligence Dashboard

Skill by ara.so — Daily 2026 Skills collection.

Crucix is a self-hosted intelligence terminal that pulls from 27 open-source data feeds (satellite fire detection, flight tracking, radiation monitoring, conflict data, market prices, maritime AIS, economic indicators, and more) every 15 minutes, renders everything on a WebGL globe dashboard, and optionally pushes alerts to Telegram/Discord with LLM-enhanced analysis.


Installation

git clone https://github.com/calesthio/Crucix.git
cd crucix
npm install          # installs Express (only hard dependency)
cp .env.example .env # then edit .env with your API keys
npm run dev          # dashboard at http://localhost:3117

Docker:

cp .env.example .env
docker compose up -d
# sweep data persists in ./runs/ via volume mount

Requirements: Node.js 22+ (uses native fetch, top-level await, ESM modules)

If npm run dev exits silently:

node --trace-warnings server.mjs   # bypasses npm script runner (useful on Windows PowerShell)
node diag.mjs                       # diagnoses Node version, module imports, port availability

Environment Configuration (.env)

# ── Core Free APIs (highly recommended) ──────────────────────────────────────
FRED_API_KEY=           # Federal Reserve economic data — fred.stlouisfed.org
FIRMS_MAP_KEY=          # NASA satellite fire detection — firms.modaps.eosdis.nasa.gov
EIA_API_KEY=            # US Energy Info Admin — eia.gov/opendata/register.php

# ── Optional Data Sources ─────────────────────────────────────────────────────
ACLED_EMAIL=            # Armed conflict data — acleddata.com/register
ACLED_PASSWORD=
AISSTREAM_API_KEY=      # Maritime vessel tracking — aisstream.io (free)
ADSB_API_KEY=           # Unfiltered flight tracking — RapidAPI (~$10/mo)

# ── LLM Provider (pick one) ───────────────────────────────────────────────────
LLM_PROVIDER=           # anthropic | openai | gemini | codex
LLM_API_KEY=            # not needed for codex (uses ~/.codex/auth.json)

# ── Telegram Bot ─────────────────────────────────────────────────────────────
TELEGRAM_BOT_TOKEN=     # from @BotFather
TELEGRAM_CHAT_ID=       # from @userinfobot
TELEGRAM_CHANNELS=      # optional: extra channel IDs beyond 17 built-in
TELEGRAM_POLL_INTERVAL= # ms between command polls, default 5000

# ── Discord Bot ───────────────────────────────────────────────────────────────
DISCORD_BOT_TOKEN=      # Discord Developer Portal → Bot → Token
DISCORD_CHANNEL_ID=     # right-click channel → Copy Channel ID
DISCORD_GUILD_ID=       # optional: instant slash command registration
DISCORD_WEBHOOK_URL=    # optional: alert-only mode, no discord.js needed

# ── Trading (optional) ────────────────────────────────────────────────────────
ALPACA_API_KEY=
ALPACA_SECRET_KEY=

Key Commands

CommandDescription
npm run devStart dashboard with auto-reload
node server.mjsStart directly (bypasses npm script runner)
node diag.mjsDiagnose setup issues
docker compose up -dRun in background with Docker
npx @openai/codex loginAuthenticate Codex LLM via ChatGPT subscription

Telegram Bot Commands

Once TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are set, the bot responds to:

CommandWhat It Does
/statusSystem health, last sweep time, source/LLM status
/sweepTrigger a manual intelligence sweep immediately
/briefCompact text summary: direction, key metrics, top OSINT
/portfolioPortfolio status (requires Alpaca keys)
/alertsRecent alert history with tier labels
/mute / /mute 2hSilence alerts for 1h or custom duration
/unmuteResume alerts
/helpList all commands

Discord Bot Commands

Install discord.js for full bot mode; otherwise Crucix auto-falls back to webhook-only:

npm install discord.js   # optional: enables slash commands + rich embeds

Slash commands available: /status, /sweep, /brief, /portfolio

Alert embeds are color-coded: 🔴 red = FLASH, 🟡 yellow = PRIORITY, 🔵 blue = ROUTINE.

Webhook-only mode (no discord.js, no slash commands):

DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN

LLM Provider Setup

Anthropic Claude

LLM_PROVIDER=anthropic
LLM_API_KEY=$ANTHROPIC_API_KEY

OpenAI

LLM_PROVIDER=openai
LLM_API_KEY=$OPENAI_API_KEY

Google Gemini

LLM_PROVIDER=gemini
LLM_API_KEY=$GEMINI_API_KEY

OpenAI Codex (ChatGPT subscription — no API key needed)

npx @openai/codex login   # authenticate once
LLM_PROVIDER=codex
# LLM_API_KEY not required

LLM failures are non-fatal — Crucix automatically falls back to rule-based alert evaluation without crashing the sweep cycle.


Architecture & Data Flow

Each 15-minute sweep cycle:

  1. Parallel fetch — all 27 sources queried simultaneously (~30–60s)
  2. Synthesis — raw data normalized into dashboard format
  3. Delta computation — what changed, escalated, or de-escalated vs. previous run
  4. LLM analysis — 5–8 trade ideas generated (or rule-based fallback)
  5. Alert evaluation — FLASH / PRIORITY / ROUTINE tiering with semantic dedup
  6. Push — SSE update to all connected browsers + Telegram/Discord if configured
  7. Persistence — sweep written to ./runs/ directory

Dashboard Features

  • 3D WebGL globe (Globe.gl) with atmosphere, star field, rotation + flat map toggle
  • 9 marker types: fires, aircraft, radiation, maritime chokepoints, SDR receivers, OSINT events, health alerts, geolocated news, conflict events
  • Animated 3D flight arcs between air traffic hotspots
  • Region filters: World, Americas, Europe, Middle East, Asia Pacific, Africa
  • Live markets: indexes, crypto, energy, commodities (Yahoo Finance, no key needed)
  • Risk gauges: VIX, high-yield spread, supply chain pressure index
  • OSINT feed: 17 built-in Telegram intelligence channels
  • Sweep Delta panel: live diff of what changed this cycle
  • Nuclear watch: Safecast + EPA RadNet radiation readings
  • Space watch: CelesTrak satellite tracking — ISS, Starlink, military constellations

Common Patterns

Minimal Setup (no API keys)

# Works out of the box — sources without keys still populate:
# Yahoo Finance markets, CelesTrak satellites, GDELT news, RSS feeds,
# OpenSky flight tracking (public tier), Safecast radiation
npm run dev

Maximum Free Coverage

# Register all three free keys (~3 minutes total):
FRED_API_KEY=       # fred.stlouisfed.org — 60 sec signup
FIRMS_MAP_KEY=      # firms.modaps.eosdis.nasa.gov — 60 sec signup
EIA_API_KEY=        # eia.gov/opendata/register.php — 60 sec signup

Telegram Alerts Only (no LLM)

TELEGRAM_BOT_TOKEN=your_token_from_botfather
TELEGRAM_CHAT_ID=your_chat_id_from_userinfobot
# LLM_PROVIDER intentionally omitted — rule-based alerts still fire

Full Stack with LLM + Both Bots

FRED_API_KEY=...
FIRMS_MAP_KEY=...
EIA_API_KEY=...
LLM_PROVIDER=anthropic
LLM_API_KEY=...
TELEGRAM_BOT_TOKEN=...
TELEGRAM_CHAT_ID=...
DISCORD_BOT_TOKEN=...
DISCORD_CHANNEL_ID=...
DISCORD_GUILD_ID=...   # for instant slash command registration

Adding Extra Telegram OSINT Channels

# Comma-separated channel IDs beyond the 17 built-in channels
TELEGRAM_CHANNELS=-1001234567890,-1009876543210

Troubleshooting

Dashboard empty after startup: Normal — the first sweep takes 30–60 seconds to query all 27 sources. Wait for it to complete before expecting data.

npm run dev exits silently (especially Windows PowerShell):

node --trace-warnings server.mjs
# or run the diagnostic tool:
node diag.mjs

Port already in use:

# Default port is 3117 — check if something else is using it:
lsof -i :3117        # macOS/Linux
netstat -ano | findstr :3117   # Windows

Telegram bot not receiving commands:

  • Verify TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are both set
  • Confirm the chat ID is your personal chat, not a group (use @userinfobot)
  • Default poll interval is 5000ms — set TELEGRAM_POLL_INTERVAL=2000 for faster response

Discord slash commands not appearing:

  • Set DISCORD_GUILD_ID for instant registration (vs. up to 1 hour for global)
  • Ensure the bot invite URL includes both bot and applications.commands scopes
  • Check Message Content Intent is enabled in the Developer Portal

LLM errors crashing sweeps: They won't — LLM failures are caught and the sweep continues with rule-based fallback. Check logs for the specific provider error (invalid key, rate limit, etc.).

ACLED conflict data missing: ACLED uses OAuth2 with email/password — both ACLED_EMAIL and ACLED_PASSWORD must be set together.

Sweep data persistence: All runs are saved to ./runs/. In Docker, this is volume-mounted so data survives container restarts.