A dazzling front end for scattered public data
Crucix takes a problem familiar to researchers and news obsessives, dozens of useful feeds in dozens of formats, and compresses it into one cinematic dashboard. Its recurring sweep covers sources for conflicts, fires, flights, radiation, markets, economic indicators, sanctions, health alerts, weather, satellites, news, and social posts. The browser gets a flat map or WebGL globe, risk gauges, a ticker, source status, and a panel of changes since the previous run.
Instead of opening GDELT, FRED, NASA FIRMS, OpenSky, Safecast, WHO, and market pages, a user can leave one screen running. Server-Sent Events are intended to refresh browsers after each sweep. Optional Telegram and Discord bots deliver alerts and accept commands. A language model can generate trade ideas and evaluate alerts.
This is best understood as an exploratory monitor, not an intelligence authority. Crucix aggregates and correlates other people's data, often using heuristics. A polished globe can make uncertain, delayed, inferred, or failed inputs look equally definite. The project needs especially strong freshness and provenance controls because its visual confidence is part of its charm. Those controls are currently where the most serious problems sit.
The architecture is pleasantly readable
Crucix requires Node 22 and has Express as its single required package. Source connectors are plain ESM modules, an orchestrator runs them in parallel with Promise.allSettled(), and a shared fetch helper applies timeouts and retries. One failed provider should therefore produce structured error data rather than stop the whole sweep. Runtime results are kept under runs, including recent state for delta calculations and daily archives.
The minimal dependency choice helps auditing. LLM integrations avoid large SDKs, and each data source can run alone during debugging. Configuration exposes the port, refresh interval, model, bots, and change thresholds. Docker adds persistent storage and a health check.
The quick start is believable, but the zero-cloud slogan needs interpretation. The program runs locally, yet its value arrives over third-party services. Better coverage asks for several data credentials. LLM analysis sends synthesized context to the selected provider unless local Ollama is used. Discord's full bot needs an optional package.
Documentation is unusually extensive for a young project, including source tables, environment settings, troubleshooting, architecture, bot commands, provider selection, and deployment options. There is some drift: the README describes Discord variables absent from the checked environment template, and advertised rule-based idea fallback does not match the current execution path.
Data trust is the deciding problem
Several open issues are not cosmetic bugs. Issue 113 documents the OpenSky fallback searching earlier run files for a nonempty flight snapshot when current data is missing, then presenting that historical information in the current dashboard. The output includes fallback metadata, but the behavior is still hazardous on a screen meant to answer what is happening now. No data would be more honest.
Issue 112 finds that news markers receive random latitude and longitude offsets after a title or source has been geotagged. The apparent purpose is visual separation, but it turns a geographic display into an imprecise rendering without a clear warning. Issue 115 separately reports rewritten GDELT times. Together, these defects mean users cannot treat position and time as reliable evidence.
The live path has its own failure. Issue 119 reports that injected initial data prevents the dashboard from connecting to the SSE endpoint, leaving the page frozen on bundled data even as server sweeps continue. Pull requests propose fixes for this and other ingestion errors, including a NOAA query that returns no alerts and stale property names passed into model prompts. They are useful community work, but an open patch is not protection for someone cloning the default branch.
The OFAC connector shows the operational cost of broad aggregation. Pull request 130 measures three full downloads totaling about 267 MB during every default 15-minute sweep, only to discard almost all content and exceed the source timeout. Its proposed ranged-read fix reduces that dramatically, but it was still unmerged. Until fixed, one nominally free source can waste bandwidth and memory all day.
Do not publish the dashboard unchanged
Issue 134 is the strongest reason to keep Crucix on a trusted local machine. It traces feed fields and model-generated text into multiple innerHTML assignments without output escaping. It also identifies a script-block breakout path in the standalone HTML injector. Since headlines, Telegram posts, locations, satellite names, and model output originate outside the application, a hostile string could execute in a viewer's browser.
A focused pull request adds escaping and tests, but it remains open. Authentication would reduce exposure, not remove a poisoned-feed path for authorized viewers. Operators should reproduce the fix and review all HTML sinks before hosting Crucix.
Testing does not yet provide much reassurance outside model adapters. The repository includes Node tests for several LLM providers, but package scripts do not define a general test command, and there is no obvious automated suite covering all sources, synthesis, SSE behavior, or dashboard rendering. With 27 advertised feeds changing upstream, integration checks are not optional maintenance.
Active interest, slow default-branch movement
The default branch was last pushed on May 20, 2026. Issues and pull requests continued through August, including concrete fixes for security, bandwidth, source queries, and fallback behavior. That combination shows active external scrutiny but limited integration: people are finding and repairing problems faster than the maintained branch is absorbing them. The open count combines issues and pull requests, and there are no GitHub releases to provide a known stable checkpoint.
Crucix is still worthwhile for a careful hobbyist. It gives developers a readable tour of multi-source collection, delta detection, alerting, and an ambitious browser visualization with very little framework machinery. For journalism, trading, security decisions, or public deployment, the present defects are disqualifying until repaired and tested. Use the dashboard to notice questions, then follow links and verify facts elsewhere. That habit turns Crucix into a useful radar rather than a dangerously persuasive answer machine.