VWork バイブコーディングフレームワーク

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

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

何が表示されるのか

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

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

アーキテクチャの潔さ

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

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サービスとして外部公開する場合はソース公開義務が生じる点は把握しておく必要があります。

使いどころとしては、

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

まとめ

参考