npx skills add ...
npx skills add reason-machines/trending-skills --skill crucix-intelligence-dashboard
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.
npx skills add reason-machines/trending-skills --skill 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.
Docker:
Requirements: Node.js 22+ (uses native fetch, top-level await, ESM modules)
If npm run dev exits silently:
.env)| Command | Description |
|---|---|
npm run dev | Start dashboard with auto-reload |
node server.mjs | Start directly (bypasses npm script runner) |
node diag.mjs | Diagnose setup issues |
docker compose up -d | Run in background with Docker |
npx @openai/codex login | Authenticate Codex LLM via ChatGPT subscription |
Once TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are set, the bot responds to:
| Command | What It Does |
|---|---|
/status | System health, last sweep time, source/LLM status |
/sweep | Trigger a manual intelligence sweep immediately |
/brief | Compact text summary: direction, key metrics, top OSINT |
/portfolio | Portfolio status (requires Alpaca keys) |
/alerts | Recent alert history with tier labels |
/mute / /mute 2h | Silence alerts for 1h or custom duration |
/unmute | Resume alerts |
/help | List all commands |
Install discord.js for full bot mode; otherwise Crucix auto-falls back to webhook-only:
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):
LLM failures are non-fatal — Crucix automatically falls back to rule-based alert evaluation without crashing the sweep cycle.
Each 15-minute sweep cycle:
./runs/ directoryDashboard 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):
Port already in use:
Telegram bot not receiving commands:
TELEGRAM_BOT_TOKEN and TELEGRAM_CHAT_ID are both setTELEGRAM_POLL_INTERVAL=2000 for faster responseDiscord slash commands not appearing:
DISCORD_GUILD_ID for instant registration (vs. up to 1 hour for global)bot and applications.commands scopesLLM 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.