Build A Local Intelligence Assistant With LLMs – Crucix

A free, open-source, AI-powered intelligence terminal that aggregates global data. You can monitor satellite feeds and economic indicators locally.

Crucix is a free, self-hosted open-source intelligence dashboard that aggregates 26 real-time public data feeds into a single browser-based interface.

It pulls satellite fire detections, live flight tracking, radiation monitoring, armed conflict events, economic indicators, market prices, sanctions data, and social sentiment, all updated every 15 minutes, all running on your own machine.

Pair it with an LLM, and it acts as a two-way intelligence assistant. It pushes tiered alerts to Telegram or Discord when conditions shift, responds to commands like /brief and /sweep from your phone, and generates trade ideas grounded in live cross-domain data.

Features

  • Generates a Jarvis-style HUD with a D3 world map displaying 7 marker types: fire detections, air traffic, radiation sites, maritime chokepoints, SDR receivers, OSINT events, and health alerts.
  • Queries all 26 sources in parallel and completes each sweep in approximately 30 seconds.
  • Displays live market prices for SPY, QQQ, BTC, Gold, WTI, VIX, and 9 additional tickers via Yahoo Finance.
  • Tracks risk gauges for VIX, high-yield spread, and the NY Fed Global Supply Chain Pressure Index.
  • Aggregates English-language posts from 17 curated OSINT and conflict Telegram channels into a live feed.
  • Delivers a merged news ticker from RSS, GDELT headlines, and Telegram posts with auto-scroll.
  • Computes a sweep delta after each cycle that surfaces new signals, escalations, and de-escalations with severity scores.
  • Correlates signals across satellite, economic, conflict, and social domains into a cross-source intelligence panel.
  • Monitors real-time radiation readings from Safecast citizen-science sensors and EPA RadNet government stations.
  • Supports six region filters (World, Americas, Europe, Middle East, Asia Pacific, Africa) with smooth map zoom.
  • Sends multi-tier alerts (FLASH, PRIORITY, ROUTINE) to Telegram and Discord with semantic deduplication.
  • Accepts two-way commands from Telegram and Discord bots.
  • Generates AI trade ideas from an optional LLM layer supporting Anthropic Claude, OpenAI, Google Gemini, and OpenAI Codex.
  • Falls back to a deterministic rule-based engine for alert evaluation when no LLM is configured.

Use Cases

  • Monitor global conflict zones using merged satellite fire data and social media sentiment.
  • Track supply chain disruptions through maritime vessel tracking and economic indicator updates.
  • Generate quantitative trade ideas based on real-time commodity prices and geopolitical events.
  • Receive instant Telegram alerts upon radiation level spikes near monitored nuclear facilities.
  • Analyze military aircraft movements alongside breaking news reports in specific geographic regions.
  • Correlate market movements with geopolitical events by viewing Yahoo Finance prices alongside OSINT feeds and conflict data.

Data Sources

Tier 1: Core OSINT & Geopolitical (11)

SourceData TypeAuth
GDELTGlobal news events, conflict mappingNone
OpenSkyReal-time ADS-B flight tracking across 6 regionsNone
NASA FIRMSSatellite fire/thermal anomaly detectionFree key
Maritime/AISVessel tracking, dark ships, sanctions evasionFree key
SafecastCitizen-science radiation monitoring near nuclear sitesNone
ACLEDArmed conflict events: battles, explosions, protestsFree (OAuth2)
ReliefWebUN humanitarian crisis trackingNone
WHODisease outbreaks and health emergenciesNone
OFACUS Treasury sanctions (SDN list)None
OpenSanctionsAggregated global sanctions from 30+ sourcesPartial
ADS-B ExchangeUnfiltered flight tracking including militaryPaid

Tier 2: Economic & Financial (7)

SourceData TypeAuth
FREDYield curve, CPI, VIX, fed funds, M2, 18 more indicatorsFree key
US TreasuryNational debt, yields, fiscal dataNone
BLSCPI, unemployment, nonfarm payrolls, PPINone
EIAWTI/Brent crude, natural gas, inventoriesFree key
GSCPINY Fed Global Supply Chain Pressure IndexNone
USAspendingFederal spending and defense contractsNone
UN ComtradeStrategic commodity trade flows between major powersNone

Tier 3: Weather, Environment, Tech, Social, SIGINT (7)

SourceData TypeAuth
NOAA/NWSActive US weather alertsNone
EPA RadNetUS government radiation monitoringNone
USPTO PatentsPatent filings in 7 strategic tech areasNone
BlueskySocial sentiment on geopolitical/market topicsNone
RedditSocial sentiment from key subredditsOAuth
Telegram17 curated OSINT/conflict/finance channels (web scraping)None
KiwiSDRGlobal HF radio receiver network (~600 receivers)None

Tier 4: Space & Satellites (1)

SourceData TypeAuth
CelesTrakSatellite launches, ISS tracking, military constellations, Starlink/OneWeb countsNone

Tier 5: Live Market Data (1)

SourceData TypeAuth
Yahoo FinanceReal-time prices: SPY, QQQ, BTC, Gold, WTI, VIX + 9 moreNone

How to Use It

Quick Start (Local Installation)

git clone https://github.com/calesthio/Crucix.git
cd Crucix
npm install
cp .env.example .env

Edit the .env file to add your API keys (optional but recommended for full data). Then start the server:

npm run dev

The dashboard opens at http://localhost:3117. The first sweep takes 30–60 seconds to query all sources. After that, it auto-refreshes every 15 minutes.

If npm run dev exits silently, run Node directly to see errors:

node --trace-warnings server.mjs

Or run the diagnostic script:

node diag.mjs

Docker Setup

git clone https://github.com/calesthio/Crucix.git
cd Crucix
cp .env.example .env
# Add your API keys to .env
docker compose up -d

The dashboard runs at http://localhost:3117. Sweep data persists in ./runs/ via volume mount.

Required API Keys (Free, Recommended)

KeySourceWhat It Unlocks
FRED_API_KEYFederal Reserve Economic Data22 economic indicators including yield curve, CPI, VIX, M2
FIRMS_MAP_KEYNASA FIRMSSatellite fire and thermal anomaly detection
EIA_API_KEYUS Energy Information AdministrationWTI/Brent crude, natural gas, inventories

Optional API Keys

KeySourceWhat It Unlocks
ACLED_EMAIL + ACLED_PASSWORDArmed Conflict Location & Event DataBattle, explosion, and protest data
AISSTREAM_API_KEYAISstream.ioMaritime vessel tracking, dark ship detection
ADSB_API_KEYADS-B ExchangeUnfiltered flight tracking including military aircraft

LLM Provider Configuration (Optional)

Set LLM_PROVIDER in .env to one of these values:

ProviderKey RequiredDefault Model
anthropicLLM_API_KEYclaude-sonnet-4-6
openaiLLM_API_KEYgpt-5.4
geminiLLM_API_KEYgemini-3.1-pro
openrouterLLM_API_KEYopenrouter/auto
codexNone (uses ~/.codex/auth.json)gpt-5.3-codex
minimaxLLM_API_KEYMiniMax-M2.5

For Codex, run npx @openai/codex login to authenticate via your ChatGPT subscription.

Telegram Bot Setup

VariableHow to Get
TELEGRAM_BOT_TOKENCreate a bot via @BotFather on Telegram
TELEGRAM_CHAT_IDGet your chat ID via @userinfobot
TELEGRAM_CHANNELSOptional: comma-separated extra channel IDs to monitor
TELEGRAM_POLL_INTERVALOptional: bot command polling interval in ms (default: 5000)

The bot responds to these commands from your configured chat ID:

CommandFunction
/statusShows system health, last sweep time, source status, LLM status
/sweepTriggers a manual sweep cycle
/briefShows system health, last sweep time, source status, and LLM status
/portfolioShows portfolio status if Alpaca is connected
/alertsDisplays recent alert history with tiers
/muteSilences alerts for 1 hour
/mute 2hSilences alerts for a custom duration
/unmuteResumes alerts
/helpShows all available commands

Discord Bot Setup

VariableHow to Get
DISCORD_BOT_TOKENCreate at Discord Developer Portal → Bot → Token
DISCORD_CHANNEL_IDRight-click channel (Developer Mode on) → Copy Channel ID
DISCORD_GUILD_IDOptional: right-click server → Copy Server ID for instant slash command registration
DISCORD_WEBHOOK_URLOptional: channel settings → Integrations → Webhooks → New Webhook (alert-only mode)

Install the Discord dependency:

npm install discord.js

The bot supports these slash commands:

CommandFunction
/statusSystem health, last sweep time, source status, LLM status
/sweepTrigger a manual sweep cycle
/briefCompact text summary of latest intelligence
/portfolioPortfolio status (if Alpaca connected)

Alerts appear as rich embeds with color-coded sidebars: red for FLASH, yellow for PRIORITY, blue for ROUTINE.

Environment Variables Reference

VariableDefaultDescription
PORT3117Dashboard server port
REFRESH_INTERVAL_MINUTES15Auto-refresh interval
LLM_PROVIDERdisabledanthropic, openai, gemini, codex, openrouter, or minimax
LLM_API_KEYAPI key (not needed for codex)
LLM_MODELper-provider defaultOverride model selection
TELEGRAM_BOT_TOKENdisabledFor Telegram alerts + bot commands
TELEGRAM_CHAT_IDYour Telegram chat ID
TELEGRAM_CHANNELSExtra channel IDs to monitor (comma-separated)
TELEGRAM_POLL_INTERVAL5000Bot command polling interval (ms)
DISCORD_BOT_TOKENdisabledFor Discord alerts + slash commands
DISCORD_CHANNEL_IDDiscord channel for alerts
DISCORD_GUILD_IDServer ID (instant slash command registration)
DISCORD_WEBHOOK_URLWebhook URL (alert-only fallback, no bot needed)

npm Scripts

ScriptCommandFunction
npm run devnode --trace-warnings server.mjsStart dashboard with auto-refresh
npm run sweepnode apis/briefing.mjsRun a single sweep, output JSON to stdout
npm run injectnode dashboard/inject.mjsInject latest data into static HTML
npm run brief:savenode apis/save-briefing.mjsRun sweep + save timestamped JSON
npm run diagnode diag.mjsRun diagnostics (Node version, imports, port check)

API Endpoints (When Running)

EndpointDescription
GET /Jarvis HUD dashboard
GET /api/dataCurrent synthesized intelligence data (JSON)
GET /api/healthServer status, uptime, source count, LLM status
GET /eventsSSE stream for live push updates

Pros

  • Runs entirely locally with no cloud dependencies or subscription fees.
  • Updates every 15 minutes automatically with parallel queries to all sources.
  • Works with zero API keys out of the box for 18+ sources.
  • Includes both Telegram and Discord integrations with two-way command support.
  • Provides delta tracking so you see exactly what changed between sweeps.
  • Each source module runs standalone for easy testing and debugging.

Cons

  • Initial setup requires Node.js 22+ and some comfort with the command line.
  • The three most valuable free keys (FRED, FIRMS, EIA) require separate registration.
  • Military flight tracking via ADS-B Exchange requires a paid RapidAPI subscription.

Related Resources

FAQs

Q: What happens if I don’t add any API keys?
A: Crucix still runs and pulls data from the 18+ sources that require no authentication. Sources that need keys return structured errors, and the rest of the sweep continues normally.

Q: Can I run this on a Raspberry Pi or low-power server?
A: Yes. The tool has minimal dependencies (just Express) and runs fine on low-power hardware. The Docker image makes deployment straightforward.

Q: How do I add more Telegram channels to monitor?
A: Add them to the TELEGRAM_CHANNELS variable in your .env file as a comma-separated list of channel IDs. The bot will include them in its monitoring.

Q: Does Crucix send my data anywhere?
A: No. There’s no telemetry, no cloud sync, and no external calls except to the 27 data sources you configure. Everything stays on your machine in the ./runs/ directory.

Q: Why does the dashboard show empty panels on first start?
A: The first sweep takes 30–60 seconds to query all sources in parallel. The dashboard populates automatically once the sweep completes. Check the terminal for progress logs.

Q: Can I use this for trading?
A: The dashboard includes Yahoo Finance data and economic indicators. It’s not financial advice, but the data is there if you want to correlate events with markets.

Q: What’s the difference between the Telegram bot and Discord integration?
A: Both provide alerts and respond to commands. Telegram uses a simple text interface. Discord supports rich embeds with color-coded alerts and native slash commands. You can run both simultaneously or just one.

Leave a Reply

Your email address will not be published. Required fields are marked *

Get the latest & top AI tools sent directly to your email.

Subscribe now to explore the latest & top AI tools and resources, all in one convenient newsletter. No spam, we promise!