crucix-intelligence-dashboard by aradotso/trending-skills
npx skills add https://github.com/aradotso/trending-skills --skill crucix-intelligence-dashboardSkill by ara.so — Daily 2026 Skills collection.
Crucix 是一个自托管的智能终端,每 15 分钟从 27 个开源数据源(卫星火灾探测、航班追踪、辐射监测、冲突数据、市场价格、海事 AIS、经济指标等)拉取数据,在 WebGL 地球仪表板上渲染所有内容,并可选择性地将带有 LLM 增强分析的警报推送到 Telegram/Discord。
git clone https://github.com/calesthio/Crucix.git
cd crucix
npm install # 安装 Express(唯一的硬依赖)
cp .env.example .env # 然后用你的 API 密钥编辑 .env 文件
npm run dev # 仪表板地址:http://localhost:3117
Docker:
cp .env.example .env
docker compose up -d
# 扫描数据通过卷挂载持久保存在 ./runs/ 目录中
要求: Node.js 22+(使用原生 fetch、顶层 await、ESM 模块)
如果 npm run dev 静默退出:
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
node --trace-warnings server.mjs # 绕过 npm 脚本运行器(在 Windows PowerShell 上很有用)
node diag.mjs # 诊断 Node 版本、模块导入、端口可用性
.env)# ── 核心免费 API(强烈推荐) ──────────────────────────────────────
FRED_API_KEY= # 美联储经济数据 — fred.stlouisfed.org
FIRMS_MAP_KEY= # NASA 卫星火灾探测 — firms.modaps.eosdis.nasa.gov
EIA_API_KEY= # 美国能源信息署 — eia.gov/opendata/register.php
# ── 可选数据源 ─────────────────────────────────────────────────────
ACLED_EMAIL= # 武装冲突数据 — acleddata.com/register
ACLED_PASSWORD=
AISSTREAM_API_KEY= # 海事船舶追踪 — aisstream.io (免费)
ADSB_API_KEY= # 未过滤的航班追踪 — RapidAPI (~$10/月)
# ── LLM 提供商(选择一个) ───────────────────────────────────────────────────
LLM_PROVIDER= # anthropic | openai | gemini | codex
LLM_API_KEY= # codex 不需要(使用 ~/.codex/auth.json)
# ── Telegram 机器人 ─────────────────────────────────────────────────────────────
TELEGRAM_BOT_TOKEN= # 来自 @BotFather
TELEGRAM_CHAT_ID= # 来自 @userinfobot
TELEGRAM_CHANNELS= # 可选:额外的频道 ID,超出 17 个内置频道
TELEGRAM_POLL_INTERVAL= # 命令轮询间隔(毫秒),默认 5000
# ── Discord 机器人 ───────────────────────────────────────────────────────────────
DISCORD_BOT_TOKEN= # Discord 开发者门户 → Bot → Token
DISCORD_CHANNEL_ID= # 右键点击频道 → 复制频道 ID
DISCORD_GUILD_ID= # 可选:即时斜杠命令注册
DISCORD_WEBHOOK_URL= # 可选:仅警报模式,无需 discord.js
# ── 交易(可选) ────────────────────────────────────────────────────────
ALPACA_API_KEY=
ALPACA_SECRET_KEY=
| 命令 | 描述 |
|---|---|
npm run dev | 启动仪表板并自动重载 |
node server.mjs | 直接启动(绕过 npm 脚本运行器) |
node diag.mjs | 诊断设置问题 |
docker compose up -d | 使用 Docker 在后台运行 |
npx @openai/codex login | 通过 ChatGPT 订阅认证 Codex LLM |
一旦设置了 TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID,机器人将响应以下命令:
| 命令 | 功能 |
|---|---|
/status | 系统状态、上次扫描时间、数据源/LLM 状态 |
/sweep | 立即触发手动智能扫描 |
/brief | 紧凑文本摘要:方向、关键指标、顶级 OSINT |
/portfolio | 投资组合状态(需要 Alpaca 密钥) |
/alerts | 带有层级标签的近期警报历史 |
/mute / /mute 2h | 静默警报 1 小时或自定义时长 |
/unmute | 恢复警报 |
/help | 列出所有命令 |
安装 discord.js 以启用完整机器人模式;否则 Crucix 会自动回退到仅 Webhook 模式:
npm install discord.js # 可选:启用斜杠命令 + 富文本嵌入
可用的斜杠命令:/status, /sweep, /brief, /portfolio
警报嵌入颜色编码:🔴 红色 = FLASH, 🟡 黄色 = PRIORITY, 🔵 蓝色 = ROUTINE。
仅 Webhook 模式(无需 discord.js,无斜杠命令):
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/YOUR_ID/YOUR_TOKEN
LLM_PROVIDER=anthropic
LLM_API_KEY=$ANTHROPIC_API_KEY
LLM_PROVIDER=openai
LLM_API_KEY=$OPENAI_API_KEY
LLM_PROVIDER=gemini
LLM_API_KEY=$GEMINI_API_KEY
npx @openai/codex login # 认证一次
LLM_PROVIDER=codex
# LLM_API_KEY 不需要
LLM 故障不会导致致命错误 — Crucix 会自动回退到基于规则的警报评估,而不会中断扫描周期。
每个 15 分钟的扫描周期:
./runs/ 目录# 开箱即用 — 没有密钥的数据源仍会填充:
# Yahoo Finance 市场、CelesTrak 卫星、GDELT 新闻、RSS 订阅源、
# OpenSky 航班追踪(公共层级)、Safecast 辐射
npm run dev
# 注册所有三个免费密钥(总共约 3 分钟):
FRED_API_KEY= # fred.stlouisfed.org — 60 秒注册
FIRMS_MAP_KEY= # firms.modaps.eosdis.nasa.gov — 60 秒注册
EIA_API_KEY= # eia.gov/opendata/register.php — 60 秒注册
TELEGRAM_BOT_TOKEN=your_token_from_botfather
TELEGRAM_CHAT_ID=your_chat_id_from_userinfobot
# 故意省略 LLM_PROVIDER — 基于规则的警报仍会触发
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=... # 用于即时斜杠命令注册
# 逗号分隔的频道 ID,超出 17 个内置频道
TELEGRAM_CHANNELS=-1001234567890,-1009876543210
启动后仪表板为空: 正常 — 第一次扫描需要 30–60 秒来查询所有 27 个数据源。请等待其完成后再期待数据。
npm run dev 静默退出(尤其是 Windows PowerShell):
node --trace-warnings server.mjs
# 或者运行诊断工具:
node diag.mjs
端口已被占用:
# 默认端口是 3117 — 检查是否有其他程序正在使用它:
lsof -i :3117 # macOS/Linux
netstat -ano | findstr :3117 # Windows
Telegram 机器人未接收命令:
TELEGRAM_BOT_TOKEN 和 TELEGRAM_CHAT_ID 均已设置TELEGRAM_POLL_INTERVAL=2000 以获得更快的响应Discord 斜杠命令未出现:
DISCORD_GUILD_ID 以进行即时注册(相对于全局注册最多 1 小时)bot 和 applications.commands 权限范围LLM 错误导致扫描崩溃: 不会 — LLM 故障会被捕获,扫描会继续使用基于规则的回退。检查日志以获取特定提供商的错误(无效密钥、速率限制等)。
ACLED 冲突数据缺失: ACLED 使用带有电子邮件/密码的 OAuth2 — ACLED_EMAIL 和 ACLED_PASSWORD 必须同时设置。
扫描数据持久化: 所有运行都保存在 ./runs/ 中。在 Docker 中,这是通过卷挂载的,因此数据在容器重启后仍然存在。
每周安装
340
仓库
GitHub Stars
10
首次出现
8 天前
安全审计
安装于
gemini-cli336
github-copilot336
codex336
amp336
cline336
kimi-cli336
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.
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)
Ifnpm 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
.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=
| 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 |
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=anthropic
LLM_API_KEY=$ANTHROPIC_API_KEY
LLM_PROVIDER=openai
LLM_API_KEY=$OPENAI_API_KEY
LLM_PROVIDER=gemini
LLM_API_KEY=$GEMINI_API_KEY
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.
Each 15-minute sweep cycle:
./runs/ directory# 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
# 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_BOT_TOKEN=your_token_from_botfather
TELEGRAM_CHAT_ID=your_chat_id_from_userinfobot
# LLM_PROVIDER intentionally omitted — rule-based alerts still fire
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
# Comma-separated channel IDs beyond the 17 built-in channels
TELEGRAM_CHANNELS=-1001234567890,-1009876543210
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:
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.
Weekly Installs
340
Repository
GitHub Stars
10
First Seen
8 days ago
Security Audits
Gen Agent Trust HubFailSocketPassSnykWarn
Installed on
gemini-cli336
github-copilot336
codex336
amp336
cline336
kimi-cli336
网站审计工具 - 使用 squirrelscan CLI 全面检测 SEO、性能、安全及技术问题
39,800 周安装
| Silence alerts for 1h or custom duration |
/unmute | Resume alerts |
/help | List all commands |