ページ

2026年7月27日月曜日

Crucixとは?27のOSINT情報源を1画面に集約するローカル完結インテリジェンスダッシュボードを実際に構築して解説

Crucixは、衛星による火災検知、航空機トラッキング、放射線モニタリング、経済指標、市場価格、紛争データ、制裁リスト、SNSセンチメントといった27の公開情報(OSINT)ソースを15分ごとに並列取得し、1枚のダッシュボードに描画するオープンソースのインテリジェンスエンジンです。

  • リポジトリ: https://github.com/calesthio/Crucix (AGPLv3・約1万スター)
  • 公開デモ: https://www.crucix.live/

「Your own intelligence terminal. 27 sources. One command. Zero cloud.」という触れ込みどおり、クラウド課金なし・テレメトリなし・サブスクなしで、node server.mjs 一発で自分のマシン上に「ジャービス風」の情報端末が立ち上がります。本記事では、実際に自社サーバへ導入した経験(ハマりどころ含む)を基に解説します。

何が表示されるのか

初回スイープ(数十秒)が終わると、世界地図を中心に次の情報が並びます。

  • Sensor Grid: 航空活動、衛星の熱源検知(夜間の火災・爆発の兆候)、SDR受信網、海上チョークポイント監視、原子力関連サイト、紛争イベント、WHO保健アラート、宇宙活動など
  • Cross-Source Signals: 複数ソースの突き合わせによる注目シグナル。例えば「中東で高強度火災15件検出+夜間活動が急増→攻撃の可能性」といった相関が自動で提示されます
  • Nuclear Watch: ザポリージャ、チョルノービリ、福島第一などの放射線量(CPM)の定点観測
  • Macro + Markets: S&P500、NASDAQ、ダウなどの指数と経済指標
  • OSINT Stream / News Ticker: 地理タグ付きニュースとSNS発の速報

情報ソースはNASA FIRMS(衛星火災検知)、OpenSky(航空)、Safecast・EPA RADNET(放射線)、FRED・BLS・EIA(経済統計)、GDELT・ACLED(紛争・イベント)、OFAC(制裁)、Reddit・Bluesky・Telegram(センチメント)など、いずれも公開データです。「世界のリアルタイム情報の大半は公開されている。散らばっているだけだ」という思想で、それを1箇所に集めるのがCrucixの役割です。

アーキテクチャの潔さ

技術的に面白いのは構成の極端なシンプルさです。

  • ランタイム依存はExpress 1つだけ。データベースなし、ビルドなし、フロントエンドフレームワークなし
  • server.mjs の単一プロセスが27ソースを並列フェッチし、自己完結のHTMLを返す
  • 必要環境はNode.js 22以上のみ。Dockerも用意されています

APIキーはすべて任意で、キーが無いソースは自動的に縮退します(graceful degradation)。実測では、キーを1つも設定しない素の状態で27ソース中大半が取得に成功しました。FRED(経済統計)やNASA FIRMS(火災検知)などの無料キーを足すと網羅性が上がる設計です。

LLM連携も組み込みで、LLM_PROVIDER にanthropic / openai / gemini / ollama などを指定すると、TelegramやDiscordから /brief(状況要約)や /sweep(即時巡回)を叩ける双方向アシスタントになります。ローカルLLM(Ollama)を選べばこの部分もゼロコストです。

実際に構築して踏んだ地雷

自社では kcrucix(Kurage Crucix)として、常駐サービス化して導入しました。手順は README どおり git clonenpm install.env 設定 → 起動ですが、2点だけ実体験からの注意点があります。

1. 5桁ポートで起動即クラッシュする(執筆時点のバグ)

起動バナーの整形処理が4桁ポート前提になっており、PORT=18341 のような5桁ポートを指定すると String.repeat(-1) の RangeError で落ちます。該当は server.mjs の起動バナー3箇所で、' '.repeat(4 - String(port).length)' '.repeat(Math.max(0, 4 - String(port).length)) にガードすれば解決します。1024〜9999番のポートで動かす分には遭遇しません。

2. キー未設定ソースの「古いデータ」に注意

キー無しでも動くソースの中には、古いキャッシュ相当のデータを返すものがあります(画面には取得時刻・経過時間が出るので判別可能)。ダッシュボードとして眺める分には問題ありませんが、取得データを別システムの入力に使う場合は各アイテムのタイムスタンプ確認が必須です。

運用は systemd に載せるだけで、プロセスは軽く、15分間隔の巡回も本体が勝手に行います。外部公開する場合はnginxでTLS終端を挟む一般的な構成がそのまま使えます。

ライセンスと使いどころ

ライセンスはAGPLv3です。ローカルや社内で動かして「見る・データを使う」分には制約はありませんが、改造版をWebサービスとして外部公開する場合はソース公開義務が生じる点は把握しておく必要があります。

使いどころとしては、

  • 朝の市況・地政学チェックを1画面で済ませる個人用インテリジェンス端末
  • ニュース解説・市況考察など、コンテンツ制作の題材ソース(当社はこの用途で、AI VTuber Kurageの解説コンテンツの素材収集に組み込んでいます)
  • LLMと組み合わせた自分専用のアラートボット(Telegram/Discord通知)

あたりが現実的です。「OSINTの入口」としては、必要なものが一通り揃った教材的なOSSでもあります。データソースごとの取得実装が server.mjs に素直に書かれているので、公開APIの叩き方のリファレンスとしても読めます。

まとめ

  • Crucixは27の公開情報ソースを15分ごとに集約するローカル完結のOSINTダッシュボード(AGPLv3)
  • 依存はExpressのみ・Node 22+・APIキーは全部任意という導入ハードルの低さが魅力
  • 5桁ポートのクラッシュと、キー未設定ソースの鮮度には注意
  • LLM連携で「世界を監視して通知してくる自分専用アナリスト」まで拡張できる

参考

  • https://github.com/calesthio/Crucix
  • https://www.crucix.live/

Crucixとは?27のOSINT情報源を1画面に集約するローカル完結インテリジェンスダッシュボードを実際に構築して解説

Crucixは、衛星による火災検知、航空機トラッキング、放射線モニタリング、経済指標、市場価格、紛争データ、制裁リスト、SNSセンチメントといった 27の公開情報(OSINT)ソースを15分ごとに並列取得し、1枚のダッシュボードに描画する オープンソースのインテリジェンスエンジン...