
Shadowbroker v0.9.84
60以上の公開テレメトリフィード(ADS-B、AIS、衛星、CCTV)を統合マップに集約するリアルタイム地理空間OSINTプラットフォーム。サーバーサイド偵察ツールキット、AIエージェントチャンネル、分散型メッシュ通信を備えています。
🛰️ S H A D O W B R O K E R
グローバル脅威迎撃 — リアルタイム地理空間情報プラットフォーム
ShadowBrokerは、60以上のライブインテリジェンスフィードからのリアルタイム・マルチドメインOSINTテレメトリを単一のダークオプスマップインターフェースに集約する分散型インテリジェンスプラットフォームです。航空機、船舶、衛星、紛争地域、CCTVネットワーク、GPS妨害、インターネット接続デバイス、ポリースキャナー、メッシュラジオノード、そして地政学的な速報イベント — すべてが一画面でリアルタイムに更新されるほか、難読化された通信プロトコルおよび情報交換インフラストラクチャも提供します。
🛰️ プロジェクト概要
Next.js、MapLibre GL、FastAPI、Pythonで構築。SAR地表変化検出、Telegram OSINT(公開チャンネルプレビューを地図上にジオパース)、サーバーサイド偵察ツールキット(DNS、WHOIS、制裁、BGP、IPスイープなど)、サプライチェーンリスクオーバーレイ、マルウェア/C2 + CISA KEVサイバー脅威フィードなど、40以上の切り替え可能なデータレイヤー。複数の表示モード(DEFAULT / SATELLITE / FLIR / NVG / CRT)。地球上の任意の地点を右クリックすると、国の資料、元首情報、エンティティグラフの展開、最新のSentinel-2衛星写真を表示。ShadowBrokerにはアカウント、プロダクトテレメトリ、分析機能はありません。ダッシュボードは自己ホストのバックエンドと通信します。機密性の高い偵察やShodanクエリはブラウザからサードパーティAPIに直接アクセスせず、SSRFガードとローカルオペレーター認証を備えたバックエンドを経由してプロキシされます。OpenClaw / エージェントコマンドチャンネルは、同じ偵察バックエンドに加えて完全なテレメトリ検索を公開 — 別途のAPI統合は不要です。
アナリスト、研究者、無線オペレーター、そしてあらゆる公開シグナルが同じ地図上にある世界を見たいすべての人のために設計されています。
🌍 なぜこれが存在するのか
驚くほど多くのグローバルテレメトリがすでに公開されています — 航空機ADS-B放送、海上AIS信号、衛星軌道データ、地震センサー、メッシュラジオネットワーク、ポリースキャナーフィード、環境監視ステーション、インターネットインフラストラクチャテレメトリなど。このデータは多数のツールやAPIに散在しています。ShadowBrokerはそれらすべてを単一のインターフェースに統合します。
このプロジェクトは新しい監視機能を導入するものではなく、既存の公開データセットを集約・可視化するものです。完全にオープンソースであり、誰でもアクセスされるデータとその方法を監査できます。ShadowBrokerにはプロダクトテレメトリ、分析、アカウントは含まれません。オペレーターが提供するキーはローカルデプロイメントに留まりますが、ライブOSINT機能は、有効にしたりクエリしたりする公開データプロバイダーに対して必然的にアウトバウンドリクエストを行います。
📡 Shodan & Recon(セキュリティファースト)
ShadowBrokerには、オペレーターが提供するAPIアクセス(SHODAN_API_KEY)のためのオプションのShodanコネクタと、キーレスOSINTルックアップのためのRecon Toolkitパネルが含まれています。どちらもサーバーサイドのみで実行されます。ブラウザは自己ホストの/api/osint/*および/api/tools/shodan/*ルートを呼び出し、アウトバウンドリクエストはSSRF検証後にバックエンドから行われます。Reconにはローカルオペレーターアクセスが必要です(レイヤートグルや管理ルートと同じ信頼モデル)。Shodanの結果は別のマップオーバーレイとしてレンダリングされ、Shodanの利用規約に従う必要があります。
🗺️ 興味深いユースケース
- エアフォースワン、億万長者や独裁者のプライベートジェット、ADS-Bを発信するすべての軍用タンカー、ISR、戦闘機を追跡。エアフォースワンおよび付随する大統領・副大統領機は、離陸した瞬間からハイライト表示され監視されます。
- AIエージェントを共同アナリストとして接続 — ShadowBrokerのHMAC署名付きエージェントコマンドチャンネル経由で。OpenClawおよびプロトコルを話す他のエージェント(Claude、GPT、LangChain、カスタム)に対応。エージェントは40以上のデータレイヤーへの完全な読み書きアクセス、コンパクトなクロスレイヤー検索(
search_telemetry、search_news)、完全な偵察ツールキット(IP/DNS/WHOIS/制裁/CVEなどのosint_lookup)、エンティティグラフの展開、ピン配置、マップコントロール、SAR地表変化、メッシュネットワーキング、アラート配信を利用できます。オペレーターと同じものをすべて見られ、リアルタイムでマップ上でアクションを実行できます。 - InfoNetテストネットで通信 — OSINTツールに組み込まれた初の分散型インテリジェンスメッシュ。ゲートペルソナによる難読化メッセージング、Dead Dropピアツーピア交換、内蔵ターミナルCLI。アカウント不要、サインアップ不要。プライバシーはまだ保証されていません — これは実験的なテストネットですが、プロトコルは稼働中で強化が進められています。
- 地球上の任意の場所を右クリック — 国の資料(元首、人口、言語)、Wikipediaサマリー、最新のSentinel-2衛星写真(10m解像度)を表示
- KiwiSDRノードをクリック — ダッシュボード内で直接ライブ短波ラジオにチューニング。ポリースキャナーフィードをクリックするとワンクリックで傍聴。
- 6か国11,000以上のCCTVカメラを監視 — ロンドン、NYC、カリフォルニア、スペイン、シンガポールなど — ライブで地図上にストリーミング
- GPS妨害ゾーンをリアルタイムで表示 — 航空機トランスポンダデータのNAC-P劣化分析から導出
- 頭上を通過する衛星をミッションタイプ別に色分けして監視 — 軍事偵察、SIGINT、SAR、早期警戒、宇宙ステーション — SatNOGSおよびTinyGS地上局ネットワークを含む
- 海上交通を追跡 — 25,000以上のAIS船舶、Global Fishing Watchによる漁業活動、億万長者のスーパーヨット
- 地震、火山噴火、活発な山火事(NASA FIRMS)、悪天候警報、世界中の大気質データをフォロー
- 軍事基地、35,000以上の発電所、2,000以上のデータセンター、インターネット障害地域を自動クロスリファレンスでマッピング
- MeshtasticメッシュラジオノードおよびAPRSアマチュア無線ネットワークに接続 — 地図上に表示され、Mesh Chatに統合
- 雲を通過して地表変化を検出 — SAR(合成開口レーダー)を使用 — mmスケールの地盤変形、洪水範囲、植生攪乱、NASA OPERAおよびCopernicus EGMSからの被害評価。独自の監視エリアを定義し、異常アラートを取得。NASA Earthdataアカウントで無料。
- 表示モードを切り替え — DEFAULT、SATELLITE、FLIR(熱)、NVG(暗視)、CRT(レトロターミナル) — STYLEボタン経由
- 列車を追跡 — 米国(Amtrak)および欧州(DigiTraffic)でリアルタイム
- 米国航空母艦の位置を推定 — 自動化されたGDELTニューススクレイピングを使用 — 他のオープンツールではこれを行わない
- 世界中のインターネット接続デバイスをShodan経由で検索 — カメラ、SCADAシステム、データベース — ライブオーバーレイとして地図上にプロット
- 左サイドバーから完全な偵察ツールキットを実行 — IPジオロケーション、DNS、RDAP/WHOIS、証明書透明性、BGP/ASN、OFAC制裁検索、CVE検索、Tor/OTX脅威チェック、サブネットスイープ(InternetDBはサーバーサイドでプロキシ)
- エンティティグラフを展開 — 航空機、船舶、企業、IPを選択すると、Wikidata + OFAC + ライブストアのクロスリンクがEntity Graphパネルに表示
- サプライチェーンリスクを監視 — 第1/2次半導体およびバッテリー工場を、近くの地震、山火事、紛争イベントとスコアリング(SCMパネル)
- マルウェアC2ホットスポットを切り替え — abuse.ch Feodo Tracker + URLhausフィードを国別にマッピング(オプトインレイヤー)
- Telegram OSINTチャンネルを監視 — 公開
t.me/s戦争/紛争フィード(OSINTdefender、NEXTAなど)を毎時間スクレイピング、リスクスコアリング、メトロアンカーにジオパース、クリック可能なマップピンとインラインメディアでプロット - グローバル海底ケーブルをオーバーレイ — 静的なTeleGeography由来のケーブルルート(オプトインレイヤー)
⚡ クイックスタート(Docker)
GitHubから(デフォルト — GHCRイメージを使用)```bash
git clone https://github.com/bigbodycobain/Shadowbroker.git cd Shadowbroker docker compose pull docker compose up -d
### GitLabから (GitLab Container Registryを使用)```bash
git clone https://gitlab.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml pull
docker compose -f docker-compose.yml -f docker-compose.gitlab.yml up -d
どちらのパスも同一のコンテナを生成します — 同じソース、同じCI、同じイメージがバイト単位で一致します。ご自身がすでに使用しているエコシステムを選んでください。
ダッシュボードを表示するには http://localhost:3000 を開いてください! (Docker Desktop または Docker Engine が必要です)
プライベート InfoNet スウォーム (sb-testnet-0) に参加する: ダッシュボードで NODE をクリックするか、ヘッドレス参加者として
./meshnode.shを実行してください。手動のピアリストは不要です — フリートのデフォルトが自動的にシードを発見し、署名済みマニフェストをプルします。プライベートな単独ノードにするには、.envでMESH_INFONET_FLEET_JOIN=falseを設定してください。
バックエンドのポートが既に使用されていますか? ブラウザが必要とするのはポート
3000だけですが、バックエンド API もローカル診断のためにホストポート8000で公開されています。別のアプリが既に8000を使用している場合は、docker-compose.ymlの隣にある.envを作成または編集してBACKEND_PORT=8001を設定し、docker compose up -dを実行してください。
数分後にニュース/UAP/基地/廃水が空白になる? バックエンドのOOM再起動を確認するには
docker events --since 30m --filter container=shadowbroker-backend --filter event=oomを実行してください。デフォルトのcomposeファイルではバックエンドに4GBを割り当てています。ホストのメモリが少ない場合は、有効なフィードを減らすか、BACKEND_MEMORY_LIMIT=3Gを設定し、遅く/重いレイヤーのウォームアップに時間がかかることを想定してください。
Podman ユーザーへ: Podman は動作しますが、
podman composeはラッパーであり、Compose プロバイダをインストールする必要があります。Windows/WSL でlooking up compose provider failedというエラーが表示された場合、podman-composeをインストールし、クローンしたShadowbrokerフォルダ内でpodman-compose pullの後にpodman-compose up -dを実行してください。Linux/macOS/WSL シェルでは、./compose.sh --engine podman pullと./compose.sh --engine podman up -dを使用することもできます。
🔄 更新方法
ShadowBroker はビルド済みの Docker イメージを使用します — ローカルでのビルドは不要です。更新は数秒で完了します:```bash docker compose pull docker compose up -d
以上です。`pull` で最新イメージを取得し、`up -d` でコンテナを再起動します。
> **旧バージョンからの移行ですか?** 最初に最新のリポジトリコードをプルし、次にイメージをプルしてください:
>
> ```bash
> git pull origin main
> docker compose down
> docker compose pull
> docker compose up -d
> ```
>
> Podman ユーザーは、同等のプロバイダコマンドを実行してください。例:`podman-compose pull` および `podman-compose up -d`、または bash 互換シェルから `./compose.sh --engine podman pull` および `./compose.sh --engine podman up -d` を使用します。
### 更新の整合性
Docker の更新は署名付きコンテナレジストリを通じて配信されます。従来の ZIP 自己更新プログラムは、以下のチェーンに従ってリリースアーカイブを検証します。
* `MESH_UPDATE_SHA256`:オペレーターがダイジェストを明示的に固定している場合。
* `backend/data/release_digests.json`:バンドルされたリリースピン。
* GitHub 上のリリース `SHA256SUMS.txt` アセット:バンドルされたピンが存在しない場合。
リリースメンテナーは、公開前に `python backend/scripts/release_helper.py hash <ShadowBroker_vX.Y.Z.zip>` を実行し、`SHA256SUMS.txt` を公開して、ZIP 更新ターゲットを出荷する際に `backend/data/release_digests.json` を更新する必要があります。この更新プログラムは、バンドルされたダイジェストが欠落している場合でも、オペレーターのオーバーライドパスをそのまま維持し、リリースプロセスのミスによって既存のインストールが機能しなくなるのを防ぎます。
### CSP の強化
本番フロントエンドには、ハイドレーション互換の CSP と、`Content-Security-Policy-Report-Only` に厳格な nonce のみの CSP が同梱されています。デプロイメントで正確なビルドが正しくハイドレートすることを確認した後にのみ、`SHADOWBROKER_STRICT_CSP=1` を設定してください。ランタイムの Google Fonts は不要です。バンドルされた Next フォントパイプラインが、アプリビルドからダッシュボードフォントを提供します。
### ⚠️ **旧バージョンでスタックしていませんか?**
**`git pull` が失敗したり、`docker compose up` がイメージをプルせずにソースからビルドし続ける場合**、あなたのクローンは 2026 年 3 月のリポジトリ移行より前のもので、コミット履歴が書き換えられています。通常の `git pull` では修正できません。以下を実行してください:```bash
# Back up any local config you want to keep (.env, etc.)
cd ..
rm -rf Shadowbroker
git clone https://github.com/bigbodycobain/Shadowbroker.git
cd Shadowbroker
docker compose pull
docker compose up -d
影響を受けているかどうかの確認方法: docker compose up で RUN apt-get、RUN npm ci、RUN pip install が表示される場合、ビルド済みイメージをプルする代わりにソースからビルドしています。新しいクローンが必要です。
その他のトラブルシューティング:
- 強制再プル:
docker compose pull --no-cache - 古いイメージの削除:
docker image prune -f - ログの確認:
docker compose logs -f backend
☸️ Kubernetes / Helm(上級者向け)
高可用性デプロイメントやホームラボクラスターの場合、ShadowBroker は Helm を使用したデプロイメントをサポートしています。このチャートは bjw-s-labs テンプレートに基づいており、バックエンドとフロントエンドの両方に対して堅牢でモジュール化されたセットアップを提供します。
1. リポジトリを追加:```bash helm repo add bjw-s-labs https://bjw-s-labs.github.io/helm-charts/ helm repo update
**2. チャートのインストール:**```bash
# Default — pulls images from GHCR
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker
# GitLab registry variant
helm install shadowbroker ./helm/chart --create-namespace --namespace shadowbroker \
-f helm/chart/values.yaml \
-f helm/chart/values-gitlab.yaml
3. 主な機能:
- モジュラーアーキテクチャ: インテリジェンスバックエンドとHUDフロントエンドを個別にスケーリングできます。
- セキュリティコンテキスト: コンテナの強化のために制限されたUID(1001)で実行されます。
- イングレス対応: Traefik、Cert-Manager、Gateway APIと互換性があり、インテリジェンスノードへの安全な外部アクセスを提供します。
Kubernetes初期アーキテクチャに貢献してくれた @chr0n1x に特別な感謝を。
🌐 実験的テストネット — プライバシーは保証されません
ShadowBroker v0.9.7は、InfoNet(分散型インテリジェンスメッシュ + Sovereign Shellガバナンス経済)、エージェンティックAIコマンドチャンネル(OpenClawおよびHMAC署名エージェントをサポート)、Time Machineスナップショット再生、およびSAR衛星地上変化検出を搭載しています。これは実験的なテストネットであり、プライベートメッセンジャーでもプロダクションガバナンスシステムでもありません。
| チャンネル | プライバシーステータス | 詳細 |
|---|---|---|
| Meshtastic / APRS | 公開 | RF無線送信は設計上公開されており傍受可能です。 |
| InfoNet Gate Chat | 難読化 | メッセージはゲートペルソナと正規ペイロード署名で難読化されていますが、エンドツーエンド暗号化はされていません。TorとReticulumを介して設計されていますが、メタデータは隠されていません(作業中)。 |
| Dead Drop DMs | 現在最も強いレーン | トークンベースのエポックメールボックスでSASワード検証付き。このビルドでは最も強いレーンですが、まだ確信を持ってプライベートとは言えません。 |
| Sovereign Shell governance | 公開台帳 | 請願、投票、アップグレードハッシュ、紛争ステークは公開ハッシュチェーン上の署名付きイベントです。ゲートペルソナによって仮名性がありますが、ガバナンスアクションは意図的に観測可能です。 |
| Privacy primitives (RingCT / stealth / DEX) | まだ接続されていません | ロックされたプロトコルコントラクトは配置されていますが、暗号スキームはまだ選択されていません。privacy-core Rustクレートが将来のスプリントの統合ターゲットです。 |
どのチャンネルでも機密情報を送信しないでください。 当面はすべてのレーンを公開・オープンとして扱ってください。E2E暗号化とより深いネイティブ/Tauriの強化が次のマイルストーンです。このプロジェクトをフォークする場合は、これらのラベルをそのまま維持し、実装がサポートする以上のプライバシー主張をしないでください。
メッシュが実際に防御するものとしないものの全体像については、脅威モデルとクレーム調整をお読みください。上記のすべての文は、それを強制する(またはしない)コードパスにマッピングされています。
✨ 機能一覧
🧅 InfoNet — 分散型インテリジェンスメッシュ + Sovereign Shell(v0.9.7で拡張)
OSINTプラットフォームに直接組み込まれた最初の分散型インテリジェンス通信およびガバナンスレイヤー。アカウント不要、サインアップ不要、アイデンティティ不要。v0.9.7はInfoNetをチャットレイヤーから、プライバシー保護型の分散型インテリジェンスプラットフォームへの明確な道筋を持つ完全なガバナンス経済へと昇華させました。
通信レイヤー(v0.9.6以降):
- InfoNet実験的テストネット — TorとReticulumを使用したグローバルな難読化メッセージリレー。ShadowBrokerを実行している人は誰でもInfoNet上で送受信できます。メッセージは、ゲートペルソナ、Ed25519正規ペイロード署名、トランスポート難読化を備えたWormholeリレーレイヤーを通過します。
- メッシュチャットパネル — 3タブインターフェース:INFONET(難読化トランスポートを使用したゲートチャット)、MESH(Meshtastic無線統合)、DEAD DROP(トークンベースのエポックメールボックスを使用したピアツーピアメッセージ交換 — 現在最も強いレーン)。
- ゲートペルソナシステム — Ed25519署名鍵、プリキーバンドル、SASワード連絡先確認、不正報告を備えた仮名アイデンティティ。
- メッシュターミナル — 内蔵CLI:
send、dm、マーケットコマンド、ゲート状態検査。ドラッグ可能なパネルで、トップバーに最小化されます。helpと入力してすべてのコマンドを表示。 - 暗号スタック — Ed25519署名、X25519 Diffie-Hellman、HKDF鍵導出によるAESGCM暗号化、ハッシュチェーンコミットメントシステム。ダブルラチェットDMの足場は進行中。
Sovereign Shell — ガバナンス経済(v0.9.7で新規):
- 請願 + ガバナンスDSL — 署名された請願によるオンチェーンパラメータ変更。
UPDATE_PARAM、BATCH_UPDATE_PARAMS、ENABLE_FEATURE、DISABLE_FEATUREのための型安全なペイロード実行装置。調整可能なノブは投票によって変更され、コードデプロイは不要。 - アップグレードハッシュガバナンス — 新しいロジックを必要とするプロトコルアップグレード(単なるパラメータ変更ではない)は、検証済みリリースのSHA-256ハッシュに投票します。80%のスーパーマジョリティ、40%の定足数、67%のHeavy-Nodeアクティベーション。ライフサイクル:署名→投票→チャレンジウィンドウ→準備完了待ち→アクティブ化。
- 解決・紛争マーケット — マーケット解決結果(yes / no / data_unavailable)にステークし、証拠を預けて紛争を開始し、紛争の確認または取り消しにステークします。行ごとの送信状態は分離されているため、同時アクションがインフライトスロットを共有しません。
- 証拠提出 — クライアント側のSHA-256正規化(Pythonの
repr()と完全に一致)を備えた証拠バンドルの預託。ハッシュはチェーンをクリーンにラウンドトリップします。 - ゲート停止/シャットダウン/異議申し立て — ゲートの停止またはシャットダウンのための提出フォーム。再利用可能な異議申し立てフローが自動的に保留中の請願をターゲットにします。
- ブートストラップ Eligible-Node-One-Vote — 最初の100マーケットは、ステーク加重解決ではなく、適格ノードごとに1票で解決されます。適格性:アイデンティティ年齢≥3日、予測除外セットに含まれていない、有効なArgon2id PoW(Heavy-Nodeのみ)。1000ノードでステーク解決に移行。
- 2層状態 + エポック確定性 — Tier 1イベントは低レイテンシのためにCRDTスタイルで伝播。Tier 2イベントはアクションが可能になる前にエポック確定性が必要。アイデンティティローテーション、段階的ペナルティ、ランプマイルストーン、および憲法的不変条件が
MappingProxyTypeを介して強制されます。 - アダプティブポーリング — Sovereign Shellビューは、アクティブな投票/チャレンジ/アクティベーションフェーズ中は8秒ごと、アイドル時は30〜60秒ごとにポーリングします。WebSocketレイヤーなしでライブ感のある投票。
- 逐語診断 — すべての書き込みボタンがバックエンドの逐語的な拒否理由を表示します。不透明な「拒否」トーストはありません。
プライバシープリミティブランウェイ(v0.9.7で新規):
- ファンクションキー — 匿名認証情報の足場 — ナリファイア、チャレンジレスポンス、2フェーズコミットレシート、列挙された拒否コード、バッチ決済のための配管が整っています。現在のチャレンジレスポンスは統合テスト用のHMACベースのプレースホルダーであり、本番の匿名またはゼロ知識市民権証明ではありません。真のリンク不可能な発行は、プリミティブの選択(RSAブラインド署名 vs BBS+ vs U-Prove vs Idemix)を待っています。
- ロックされたプロトコルコントラクト —
services/infonet/privacy/contracts.py内の安定したインターフェース(リング署名、ステルスアドレス、Pedersenコミットメント、レンジプルーフ、DEXマッチング)。privacy-coreRustクレートが統合ターゲットであり、プライバシーモジュールの呼び出し側はどのスキームがアクティブかを知る必要はありません。 - スプリント11+の道筋 — 暗号スキームが選択されると、プリミティブはAPIの変更なしにロックされたプロトコルに配線されます。
実験的テストネット — プライバシー保証なし: InfoNetメッセージは難読化されていますが、エンドツーエンド暗号化はされていません。メッシュネットワーク(Meshtastic/APRS)はプライベートではありません — 無線送信は本質的に公開されています。プライバシープリミティブコントラクトは足場が組まれていますが、まだ配線されていません。どのチャンネルでも機密情報を送信しないでください。当面はすべてのチャンネルを公開・オープンとして扱ってください。
🔍 偵察ツールキット & Shodan(Osiris派生、セキュリティ優先)
OSIRIS偵察スタック(MIT)をShadowBrokerのプロキシモデルで適応。帰属:backend/third_party/osiris/NOTICE.md。
偵察ツールキット(左サイドバー — ローカルオペレーターのみ):
- IP / DNS / WHOIS — ip-api.comの地理位置情報、Google DNS-over-HTTPS、RDAP登録者データ(オプションのHTTPセキュリティヘッダースコアリング付き)
- 証明書 & BGP — crt.shサブドメイン発見、bgpview.io ASN/プレフィックス検索
- 脅威情報 — AlienVault OTXパルス、Tor出口ノードチェック、オプションのIP/ドメインごとのレピュテーション
- 制裁 — OpenSanctions
us_ofac_sdnインデックス(CC-BY)。WHOISエンティティおよびIP ISP/組織文字列の相互チェック。 - CVE / MAC / GitHub / リーク — MITRE CVE API、MACベンダー検索、GitHubプロファイル偵察、公開侵害チェック
- IPスイープ —
/api/osint/sweep/scanはターゲット /24–/32 の地理位置情報を取得し、Shodan InternetDBホスト発見をサーバーサイドでプロキシします(ブラウザはInternetDBに直接接触しません)。 - SSRFガード — プライベート、ループバック、リンクローカル、メタデータホスト名は、ユーザー提供のフェッチの前にブロックされます。
エンティティグラフ — マップエンティティを選択してエンティティグラフパネル(GET /api/entity/expand)を開きます。航空機、船舶、企業、人物、IP、国をノード/リンクグラフに解決します(Wikidata SPARQL + OFAC + インメモリフライト/船舶ストア)。
OpenClaw / エージェントアクセス — 同じ偵察バックエンドがHMACコマンドチャンネルで利用可能です(ブラウザのローカルオペレーターゲートは不要):osint_lookup(パッシブIP/DNS/WHOIS/certs/BGP/sanctions/CVE/MAC/GitHub/leaks/threats)、entity_expand(関係グラフ)、osint_sweep(アクティブサブネットスキャン — フルアクセスティアのみ)。osint_toolsを呼び出してサポートされているルックアップタイプを一覧表示。スキルパッケージ:openclaw-skills/shadowbroker/(SKILL.md + sb_query.py)。
Shodanオーバーレイ(変更なし):
- インターネットデバイス検索 — 自身のAPIキーでShodanをクエリ。結果がライブオーバーレイとしてプロットされます。
- 設定可能なマーカー — Shodan結果の形状、色、サイズのカスタマイズ。
🛩️ 航空追跡
- 民間航空機 — OpenSky Networkによるリアルタイム位置情報(約5,000機以上)
- プライベート航空機 — 軽量GA、ターボプロップ、ビジネスジェットを個別に追跡
- プライベートジェット — 所有者識別付きの高資産家航空機
- 軍用機 — adsb.lol軍事エンドポイントによるタンカー、ISR、戦闘機、輸送機
- 飛行軌跡蓄積 — 追跡中のすべての航空機に対する永続的なパンくず軌跡
- ホールディングパターン検出 — 旋回中の航空機を自動的にフラグ付け(総旋回角>300°)
- 航空機分類 — 形状正確なSVGアイコン:旅客機、ターボプロップ、ビジネスジェット、ヘリコプター
- 地上検出 — AGL 100フィート未満の航空機をグレーアイコンで表示
🚢 海上追跡
- AIS船舶ストリーム — aisstream.io WebSocket経由で25,000隻以上の船舶(リアルタイム)
- 船舶分類 — 貨物船、タンカー、旅客船、ヨット、軍用船舶のタイプを色分けアイコンで表示
- 空母打撃群トラッカー — 米海軍の現役空母11隻すべてをOSINT推定位置で表示。これを実現するオープンツールは他にありません。
- 自動GDELTニューススクレイピングが空母移動報告を解析して位置を推定
- 50以上の地理的領域から座標へのマッピング(例:「東地中海」→緯度/経度)
- ディスクキャッシュされた位置、UTC 00:00と12:00に自動更新
- クルーズ船・旅客船 — クルーズ船とフェリーの専用レイヤー
- 漁業活動 — Global Fishing Watch船舶イベント(新規)
- クラスター表示 — 低ズーム時に船舶がクラスター化されカウントラベル表示、ズームインでクラスター解除
🚆 鉄道追跡(v0.9.6で新規)
- Amtrak列車 — 米国全土のAmtrak列車のリアルタイム位置情報(速度、方位、路線、状態)
- 欧州鉄道 — 欧州列車位置情報のためのDigiTraffic統合
🛰️ 宇宙・衛星
- 軌道追跡 — CelesTrak TLEデータ + SGP4伝搬によるリアルタイム衛星位置(2,000基以上のアクティブ衛星、APIキー不要)
- ミッションタイプ分類 — ミッションごとに色分け:軍事偵察(赤)、SAR(シアン)、SIGINT(白)、航法(青)、早期警戒(マゼンタ)、商用画像(緑)、宇宙ステーション(金)
- SatNOGS地上局 — ライブ観測データを備えたアマチュア衛星地上局ネットワーク(新規)
- TinyGS LoRa衛星 — LoRa衛星コンステレーション追跡(新規)
🌍 地政学・紛争
- グローバルインシデント — GDELTを利用した紛争イベント集約(過去8時間、約1,000件)
- ウクライナ前線 — DeepState Mapからのライブ戦線GeoJSON
- ウクライナ空襲警報 — リアルタイム地域空襲警報(新規)
- SIGINT/RISINTニュースフィード — 複数のインテリジェンス関連ソースからのリアルタイムRSS集約。ユーザーカスタマイズ可能なフィード(最大20ソース、優先度ウェイト1-5を設定可能)
- 地域ドシエ — 地球上の任意の場所を右クリックして即座にインテリジェンスブリーフィング:
- 国のプロフィール(人口、首都、言語、通貨、面積)
- 現在の国家元首と政府のタイプ(ライブWikidata SPARQLクエリ)
- サムネイル付きの現地Wikipedia要約
- 最新Sentinel-2衛星写真(撮影日と雲量付き、10m解像度)
🛰️ 衛星画像
- NASA GIBS(MODIS Terra) — 30日間のタイムスライダー、再生/一時停止アニメーション、不透明度制御を備えたデイリー真色彩衛星画像オーバーレイ(約250m/ピクセル)
- 高解像度衛星(Esri) — Esri World Imageryによるサブメートル解像度画像。建物や地形の詳細にズームイン(ズーム18以上)
- Sentinel-2インテルカード — マップ上の任意の場所を右クリックすると浮動インテルカードが表示され、最新のSentinel-2衛星写真(撮影日、雲量%、クリック可能なフル解像度画像)を表示(10m解像度、約5日ごとに更新)
- Sentinel Hub Process API — OAuth2トークンフローによるCopernicus CDSE衛星画像(新規)
- VIIRS夜間光 — 夜間光変化検出オーバーレイ(新規)
- 5つのビジュアルモード — STYLEボタンでマップ全体の美観を切り替え:
- デフォルト — ダークCARTOベースマップ
- 衛星 — サブメートルEsri World Imagery
- FLIR — 熱画像美学(反転グレースケール)
- NVG — 暗視緑色蛍光体
- CRT — レトロターミナルスキャンラインオーバーレイ
🛰️ SAR地上変化検出(新規)
- 合成開口レーダーレイヤー — 雲を透過し、夜間でも、地球上のどこでも地上変化を検出。2つのモード、両方無料:
- モードA(カタログ) — Alaska Satellite Facilityからの無料Sentinel-1シーンメタデータ。アカウント不要。AOI上でレーダーパスがいつ発生したか、次のパスがいつ来るかを表示。
- モードB(完全異常検知) — NASA OPERA(DISP、DSWx、DIST-ALERT)およびCopernicus EGMSからのリアルタイム地上変化アラート。無料のNASA Earthdataアカウントが必要。アプリ内ウィザードが1分以内にセットアップを案内。
- 異常タイプ — 地盤変形(mm規模の沈下、地すべり)、地表水変化(洪水範囲)、植生擾乱(森林伐採、焼け跡、爆発クレーター)、被害評価(UNOSAT/Copernicus EMS検証済み)、コヒーレンス変化検出
- マップ可視化 — 種類ごとに色分けされた異常ピン(オレンジ:変形、シアン:水、緑:植生、赤:被害、紫:コヒーレンス)。AOI境界はカテゴリベースの色付けで破線ポリゴンとして描画。任意のピンをクリックすると、マグニチュード、信頼度、ソルバー、シーン数、出典リンクを含む詳細ポップアップが表示。
- AOIエディタ — マップから直接関心領域を定義。SARレイヤーがアクティブなときに「EDIT AOIs」ボタンをクリックし、クロスヘアツールを使用してマップ上にAOIセンターをクリックしてドロップ。名前、半径(1〜500 km)、カテゴリを設定。AOIはすぐにマップに表示されます。
- OpenClaw統合 — AIエージェントはSAR異常の詳細を検査し(
sar_pin_click)、オペレーターのマップを任意のAOIセンターに飛ばすことができます(sar_focus_aoi)— コラボレーティブなアナリストワークフローを実現。 - 設定パネル — 設定の専用SARタブにモードA/Bのステータス、OpenClaw統合状態が表示され、Earthdata認証情報をワンクリックで取り消せます。
📻 ソフトウェア定義無線 & SIGINT
- KiwiSDR受信機 — 世界中に500以上の公開SDR受信機がクラスター化された琥珀色のマーカーでプロット
- ライブラジオチューナー — KiwiSDRノードをクリックすると、SIGINTパネルに埋め込みSDRチューナーが直接開きます
- メタデータ表示 — ノード名、位置、アンテナタイプ、周波数帯域、アクティブユーザー
- Meshtasticメッシュ無線 — MQTTベースのメッシュ無線統合(ノードマップ付き)、メッシュチャットに統合(新規)
- APRS統合 — APRS-IS TCPフィードによるアマチュア無線測位(新規)
- GPS妨害検出 — 航空機NAC-P(航法精度カテゴリ)値のリアルタイム分析
- グリッドベースの集約で干渉ゾーンを識別
- 赤いオーバーレイ四角形に「GPS JAM XX%」の深刻度ラベル
- 無線傍受パネル — OpenMHZ警察/消防スキャナーフィードを使用したスキャナースタイルUI。任意のシステムをクリックしてライブ視聴。スキャンモードはアクティブなフィードを自動的に巡回。実際の緊急通信にクリックして盗聴。
📷 監視
- CCTVメッシュ — 10カ国21のインジェスターからの22,000台以上のライブ交通カメラ(米国、英国、カナダ、オーストラリア、オーストリア、スペイン、シンガポール、オランダ(NDWフィード稼働時)、さらにOSM):
- 🇬🇧 Transport for London JamCams
- 🇺🇸 NYC DOT、オースティンTX(TxDOT)
- 🇺🇸 カリフォルニア(Caltrans 12地区)、ワシントン州(WSDOT)、ジョージア州DOT、イリノイ州DOT、ミシガン州DOT
- 🇪🇸 スペインDGT全国(20都市)、マドリード市(357台のカメラ、KML経由)
- 🇦🇹 オーストリアASFINAG高速道路ウェブカム
- 🇸🇬 シンガポールLTA
- 🌍 Windyウェブカム
- フィードレンダリング — ビデオ、MJPEG、HLS、埋め込み、衛星タイル、画像フィードの自動検出とレンダリング
- クラスターマップ表示 — 緑のドットがカウントラベルでクラスター化、ズームインでクラスター解除
🔥 環境・災害監視
- NASA FIRMS火災ホットスポット(24時間) — NOAA-20 VIIRS衛星からの5,000以上の全球熱異常、各サイクルで更新。火炎形状のアイコンが火災放射出力(FRP)で色分け:黄(低)、橙、赤、濃赤(強い)。低ズーム時に火災形状のクラスターマーカーでクラスター化。
- 火山 — Smithsonian Global Volcanism Programの完新世火山を世界規模でプロット(新規)
- 気象警報 — 緊急度/深刻度インジケータ付きの悪天候ポリゴン(新規)
- 大気質(PM2.5) — 世界中のOpenAQステーションによるリアルタイム粒子状物質測定値(新規)
- 地震(24時間) — USGSリアルタイム地震フィード、マグニチュードスケールのマーカー
- 宇宙天気バッジ — 下部ステータスバーにライブNOAA地磁気嵐インジケータ。色分けされたKp指数:緑(静穏)、黄(活動)、赤(嵐G1〜G5)。SWPC惑星K指数1分フィードからのデータ。
🏗️ インフラストラクチャ監視* インターネット障害監視 — ジョージア工科大学IODAによる地域的なインターネット接続アラート。影響を受ける地域に重大度パーセンテージ付きの灰色マーカー。信頼できるデータソース(BGPルーティングテーブル、アクティブpingプロービング)のみを使用 — テレスコープまたは補間データは不使用。
- データセンターマッピング — 厳選されたデータセットからプロットされた2,000以上のグローバルデータセンター。サーバーラックアイコン付きのクラスター化された紫色マーカー。クリックで事業者、場所、および国別の自動インターネット障害クロスリファレンスを表示。
- 軍事基地 — グローバルな軍事施設およびミサイル施設データベース(新機能)
- 発電所 — WRIデータベースからの35,000以上のグローバル発電所(新機能)
- 海底ケーブル — 静的TeleGeography派生GeoJSON(
frontend/public/data/submarine-cables.json)からのグローバル海底ケーブルルート。オプトインのラインオーバーレイ。 - マルウェアC2レイヤー — botnet C2サーバー(Feodo Tracker)および最新のマルウェアURL(URLhaus)(abuse.ch提供)。レイヤーが有効なときにスローティアで更新。
- SCMサプライヤーリスク — ティア1/2のファブおよびバッテリー工場(TSMC、Samsung、CATLなど)と、地震、FIRMS火災、GDELT紛争近接性をクロスリファレンス。SCMパネルにアラート表示。オプションのマップレイヤー。
- サイバー脅威フィード —
/api/cyber-threatsおよびレイヤートグルで公開される最近のCISA既知の悪用された脆弱性(KEV)エントリ。 - 国別リスクインデックス — USGS地震エンリッチメント付きの静的地政学的リスクスコア(
/api/country-risk経由)。 - Telegram OSINT — 設定可能な戦争/OSINTフィードからの公開チャンネルWebプレビュー(
t.me/s/*)。毎時間のインクリメンタルマージ(冗長な再スクレイピングなし)、キーワードリスクスコアリング、キリル文字/アラビア語の場所エイリアス、メトロアンカー地理コーディング(ニュースセントロイドとは別)。インラインフォト/ビデオ(/api/telegram/mediaプロキシ経由)。レイヤーキー:telegram_osint。
🌐 追加レイヤーとツール
- 昼夜サイクル — 全球の日照/暗闇を示す太陽終端線オーバーレイ
- 世界市場ティッカー — ライブ金融市場指数(最小化可能)
- 測定ツール — マップ上のポイント間距離と方位測定
- LOCATEバー — 座標(31.8, 34.8)または地名(テヘラン、ホルムズ海峡)で検索し、任意の場所に直接フライ — OpenStreetMap Nominatim経由で地理コード化
Gaza
🤖 エージェント型AIコマンドチャンネル — OpenClaw + 互換エージェント(v0.9.7で拡張)
ShadowBrokerは双方向エージェント型AIコマンドチャンネルを公開します — 署名付き、ティアゲート付きブリッジで、互換性のあるAIエージェントにインテリジェンスプラットフォームへの完全な読み取り/書き込みアクセスを提供します。OpenClawが参照エージェントですが、チャンネルはオープンプロトコルです。HMAC-SHA256でリクエストに署名する任意のLLM駆動エージェント(Claude Code、GPT、LangChain、カスタムPython/TypeScriptクライアント、または独自の統合)は、オペレーターと同じデータを見て、マップ上でアクションを実行できるアナリストとして接続できます。ShadowBrokerはLLM、エージェントランタイム、モデルウェイトをバンドルしません — サーフェスを提供し、エージェントはユーザーが持ち込みます。
v0.9.7により、ShadowBrokerは人間が見守るダッシュボードから、あらゆるエージェントが行動できるインテリジェンスサーフェスへと変わります。
チャンネルトランスポート(v0.9.7の新機能):
- 単一コマンドチャンネル —
POST /api/ai/channel/commandは{cmd, args}を受け入れ、登録された任意のツールにディスパッチします。 - バッチ並行実行 —
POST /api/ai/channel/batchは1回のリクエストで最大20のコマンドを受け入れます。バックエンドはそれらを並行して実行し、ファンアウト結果マップを返します。逐次呼び出しと比較して、エージェントのレイテンシを1桁削減します。 - ティアゲートアクセス —
OPENCLAW_ACCESS_TIERはエージェントが呼び出せるコマンドを制御します。restrictedは読み取り専用セットを公開し、fullは書き込みと注入を追加します。ディスカバリーエンドポイントはavailable_commandsを返すため、エージェントは自身の能力を内省できます。 - HMAC-SHA256署名 — すべてのコマンドは
HMAC-SHA256(secret, METHOD|path|timestamp|nonce|sha256(body))で署名され、タイムスタンプ+ノンスのリプレイ保護とリクエスト整合性を備えます。ローカルモード(設定不要)とリモートモード(別のマシン/VPS上のエージェント)をサポート。
機能:
- 完全なテレメトリアクセス — エージェントは40以上のデータレイヤーすべてをクエリします。フライト、船舶、衛星、SIGINT、紛争イベント、地震、火災、廃水、Telegram OSINT、マルウェア/C2、CISA KEVサイバー脅威、SCMオーバーレイ、漁業活動(GFW)、予測市場など。高速および低速ティアエンドポイントは、地理座標、タイムスタンプ、ソース帰属を含むエンリッチドデータを返します。
- コンパクト検索(完全ダンプよりも推奨) —
get_summary→get_layer_slice(since_layer_versions付き。SSElayer_changedプッシュは、どのレイヤーが更新されたかをエージェントに正確に伝えます)。search_telemetryはGoogleスタイルのクロスレイヤーキーワードインデックスです。search_newsはニュース、GDELT、CrowdThreat、LiveUAMap、最前線、Telegram投稿をカバーします。entities_near、brief_area、find_flights/find_ships/find_entity、correlate_entityは、数メガバイトのプルなしで対象の質問に答えます。 - チャンネル上の偵察ツールキット —
osint_lookupは、Reconパネルと同じSSRFガードされたバックエンド(ip、dns、whois、certs、bgp、sanctions、cve、mac、github、leaks、threats、sweep_init)を実行します。entity_expandはWikidata + OFAC関係グラフを構築します。osint_sweepはShodan InternetDBサブネットディスカバリー(fullティア)を実行します。レイヤーエイリアス:telegram、malware/botnet、cyber/cisa/kev、scm/suppliers、gfw/fishing。 - AI Intelピン — カラーコードされた調査マーカーをオペレーターのマップに直接配置。14のピンカテゴリ(脅威、異常、軍事、海事、航空、SIGINT、インフラなど)に信頼度スコア、TTL有効期限、ソースURL、最大100ピンを一度に配置するバッチ配置機能。
- マップ制御 — オペレーターのマップビューを任意の座標にフライ、衛星画像ルックアップをトリガー、地域ドシエを開く。エージェントはオペレーターの注意をリアルタイムで特定の場所に向けることができます。
- SAR地上変化 — SAR異常フィードをクエリ、ピンの詳細を検査、AOIを管理、マップを監視対象エリアにフライ。エージェントは地表変形、洪水範囲、または損傷を監視し、異常をピンに昇格できます。
- ネイティブレイヤーインジェクション — カスタムデータをShadowBrokerのネイティブレイヤー(CCTVカメラ、船舶、SIGINTノード、軍事基地など)に直接プッシュし、エージェントが発見したソースを実際のフィードと一緒にレンダリングできます。
- ワームホールメッシュ参加 — エージェントは分散型InfoNetに参加し、署名付きメッセージを投稿、暗号化ゲートチャンネルに参加、暗号化DMを送受信、MeshtasticラジオおよびDead Dropsと対話 — フルメッシュピアとして動作します。
- Sovereign Shell参加(v0.9.7) — 請願書を提出し、ガバナンスの変更に署名および投票、決議および紛争にステーク、アップグレードのためのHeavy-Node準備を通知 — すべてプログラムによる、すべてティアとHMACによってゲートされます。エージェントは分散型インテリジェンス経済の第一級参加者になります。
- ジオコーディングと近接スキャン — 地名を座標に解決し、半径内のすべてのレイヤーをスキャンして完全な近接ダイジェストを取得。
- 場所付近のニュースおよびGDELT — 任意の座標付近のGDELT紛争イベントおよび集約されたニュース記事をプルし、地域の状況認識を提供。
- アラート配信 — ブランド化されたインテリジェンスブリーフ、警告、脅威通知をDiscord WebhookおよびTelegramチャンネルに送信。
- インテリジェンスレポート — サマリー統計、主要な軍事フライト、相関関係、地震活動、SIGINTカウント、ピンインベントリを含む構造化レポートを生成。
- 監査可能 — すべてのチャンネル呼び出しが記録されます。オペレーターはエージェントが実行した内容を内省できます。
エージェントを接続する: 左サイドバーのAI Intelパネルを開き、Connect Agentをクリックし、HMACシークレットをコピーします。そこから、互換性のあるエージェントをチャンネルにポイントします。OpenClawの場合は、openclaw-skills/shadowbroker/sb_query.py から ShadowBrokerClient をインポートします(例については SKILL.md を参照)。他のエージェントの場合は、上記で文書化されたものと同じHMACコントラクト(タイムスタンプ+ノンス+ボディダイジェスト、ティアゲート)を使用します。ディスカバリー: GET /api/ai/tools および GET /api/ai/capabilities。チャンネルはプロトコルであり、エージェントではありません。
Docker Compose + リモートエージェント: ダッシュボードUIは、Dockerのプライベートブリッジを介してバックエンドと通信します(自動的に信頼されます)。ホスト(コンテナ外)で実行されているOpenClawエージェントは、DockerゲートウェイIPから http://localhost:8000 にアクセスします — そこではHMACが必要です。AI Intel → Connect Agentで、Bootstrapをクリックし、Revealをクリックし、SHADOWBROKER_HMAC_SECRET をエージェントのenvにコピーし、バックエンドを1回再起動して、backend_data ボリューム上の data/openclaw.env がロードされるようにします。スモークテストは次のコマンドで行います。```bash
export SHADOWBROKER_URL=http://127.0.0.1:8000
export SHADOWBROKER_HMAC_SECRET=
python openclaw-skills/shadowbroker/verify_hmac.py
バックエンドのポート(`:8000`)を使用し、Next.jsダッシュボードのポート(`:3000`)は使用しないでください。手動の署名者は、正確なPOSTバイトをハッシュする必要があります: `json.dumps(payload, separators=(",", ":"), sort_keys=True)`。
### ⏱️ タイムマシン — スナップショット再生(v0.9.7の新機能)
テレメトリフィード全体のメディアスタイルのトランスポート。ライブマップをスクラブ、一時停止、再生可能な録画として扱います。
* **ライブ ↔ スナップショット切り替え** — スナップショットモードに切り替えると、グローバルポーリングループが即座に一時停止します;ライブに戻すとETagが無効化され、高速および低速の両方のティアが強制リフレッシュされるため、ダッシュボードは古いフレームのちらつきなく追いつきます。
* **時間別インデックス** — キャプチャされた各スナップショットは時間バケットごとにインデックス化され、`count`、`latest_id`、`latest_ts`、および完全な`snapshot_ids`リストを持ちます。タイムラインスクラバーから直接、任意のキャプチャタイムスタンプにジャンプできます。
* **フレーム補間** — 移動するエンティティ(航空機、船舶、衛星、軍用機)は再生中に記録されたフレーム間で滑らかに補間されるため、スナップショットがまばらでも動きが連続的に保たれます。
* **可変再生速度** — 保存されたテレメトリを調整可能な速度でステップ、再生、早送り、巻き戻しできます。
* **プロファイル対応** — 各スナップショットはキャプチャ時にアクティブだったプライバシープロファイルを記録するため、そのプロファイルのオペレーターが見ていたであろう内容を忠実に再生します。
* **オペレーター側、サーバー側ではない** — スナップショットはバックエンドにローカルに保存されます;サードパーティが再生タイムラインを見ることは決してありません。
### 📦 APIキーパネル — パス優先、読み取り専用(v0.9.7の新機能)
設定 → APIキーは読み取り専用のレジストリになりました。キーの値はブラウザプロセスに決して到達しません — 難読化されたプレフィックスでさえも。パネルは以下を表示します:
* `Path(__file__).resolve()` によって解決されたバックエンド `.env` ファイルへの絶対パス — すべてのOS、すべてのドライブ、すべてのインストール場所(Linux `/home/...`、macOS `/Users/...`、任意のドライブ上のWindows、Dockerコンテナ、クラウドVM)で動作します。
* パス自体に `[exists]` / `[will be created on first save]` / `[NOT WRITABLE — edit by hand]` のインジケーターが表示されます。
* ユーザーがコピーしてキーを入力できるように、`.env.example` テンプレートへのパス。
* キーごとに `CONFIGURED` / `NOT CONFIGURED` のバイナリバッジ、およびユーザーが手動でファイルに追加できるコピー&ペースト可能なenv行(例:`OPENSKY_CLIENT_ID=YOUR_VALUE`)。
OpenSky API認証情報は現在、**重大警告**の環境要件です:起動時の環境チェックは、欠落しているOpenSky OAuth2認証情報を強い警告でフラグ付けし、変更ログモーダルは無料登録ページに直接リンクします。これがないと、フライトレイヤーはADS-Bのみのカバレッジにフォールバックし、アフリカ、アジア、ラテンアメリカで顕著なギャップが生じます。
</details>
---
<details>
<summary>🏗️ アーキテクチャ</summary>
ShadowBroker v0.9.7は、3つの垂直に積み重ねられたプレーン — **Operator UI**、**Backend Service Plane**、**Decentralized Layer (InfoNet)** — に加えて、2つの横断的ブリッジ(**Time Machine**と**Agentic AI Channel**。これはOpenClawおよびその他の互換性のあるエージェントが接続するプロトコルです)と、レガシーメッシュと将来のシールドコイン/DEX作業の両方をバックストップする**Privacy Core** Rustクレートで構成されています。```
╔═════════════════════════════════════════════════════════════════════════════╗
║ OPERATOR UI (Next.js + MapLibre) ║
║ ║
║ ┌────────────────┐ ┌──────────┐ ┌────────────────┐ ┌────────────────┐ ║
║ │ MapLibre GL │ │ NewsFeed │ │ Sovereign Shell│ │ Mesh Chat │ ║
║ │ WebGL render │ │ SIGINT │ │ Petitions / │ │ + Mesh Term. │ ║
║ │ + clusters │ │ GDELT │ │ Upgrades / │ │ (Infonet / │ ║
║ │ │ │ Threat │ │ Disputes / │ │ Mesh / │ ║
║ │ │ │ │ │ Gates / │ │ Dead Drop) │ ║
║ │ │ │ │ │ Bootstrap / │ │ │ ║
║ │ │ │ │ │ Function Keys │ │ │ ║
║ └──────┬─────────┘ └────┬─────┘ └────────┬───────┘ └────────┬───────┘ ║
║ │ │ │ │ ║
║ ┌──────┴─────────────────┴─────────────────┴───────────────────┴───────┐ ║
║ │ Time Machine ◀── snapshot playback ── snapshotMode toggle ──▶ Live │ ║
║ │ hourly index │ frame interpolation │ profile-aware │ per-tier ETag │ ║
║ └──────────────────────────────────┬───────────────────────────────────┘ ║
║ │ REST + /api/[...path] proxy ║
╠═════════════════════════════════════╪═══════════════════════════════════════╣
║ BACKEND SERVICE PLANE (FastAPI) ║
║ │ ║
║ ┌──────────────────────────────────┴────────────────────────────────────┐ ║
║ │ Data Fetcher (APScheduler — fast / slow tiers) │ ║
║ │ │ ║
║ │ ┌───────────┬───────────┬───────────┬───────────┬───────────┐ │ ║
║ │ │ OpenSky* │ adsb.lol │ CelesTrak │ USGS │ AIS WS │ │ ║
║ │ │ Flights │ Military │ Sats │ Quakes │ Ships │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Carrier │ GDELT │ CCTV (12) │ DeepState │ NASA │ │ ║
║ │ │ Tracker │ Conflict │ Cameras │ Frontline │ FIRMS │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ GPS │ KiwiSDR │ Shodan │ Amtrak │ SatNOGS │ │ ║
║ │ │ Jamming │ Radios │ Devices │ DigiTraf │ TinyGS │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Volcanoes │ Weather │ Fishing │ Mil Bases │ IODA │ │ ║
║ │ │ Air Qual │ Alerts │ Activity │ PwrPlants │ Outages │ │ ║
║ │ ├───────────┼───────────┼───────────┼───────────┼───────────┤ │ ║
║ │ │ Sentinel │ MODIS │ VIIRS │ Data │ Meshtastic│ │ ║
║ │ │ Hub/STAC │ Terra │ Nightlts │ Centers │ APRS │ │ ║
║ │ ├───────────┴───────────┴───────────┴───────────┴───────────┤ │ ║
║ │ │ SAR (NEW v0.9.7) │ │ ║
║ │ │ Mode A: ASF Search catalog (free, no account) │ │ ║
║ │ │ Mode B: NASA OPERA / Copernicus EGMS / GFM / EMS / │ │ ║
║ │ │ UNOSAT ground-change anomalies (opt-in) │ │ ║
║ │ └───────────────────────────────────────────────────────────┘ │ ║
║ │ * OpenSky: REQUIRED for global flight coverage │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
║ │ ║
║ ┌──────────────────────────────────┴────────────────────────────────────┐ ║
║ │ Snapshot Store (Time Machine source) │ ║
║ │ Hourly index │ per-snapshot layer manifest │ profile metadata │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
║ ║
║ ┌───────────────────────────────────────────────────────────────────────┐ ║
║ │ Agentic AI Channel (HMAC-SHA256, tier-gated — OpenClaw + others) │ ║
║ │ │ ║
║ │ POST /api/ai/channel/command → one tool call │ ║
║ │ POST /api/ai/channel/batch → up to 20 concurrent tool calls │ ║
║ │ │ ║
║ │ Tier: restricted (read-only) │ full (read + write + inject) │ ║
║ │ Auth: X-SB-Timestamp + X-SB-Nonce + X-SB-Signature │ ║
║ │ Sig = HMAC-SHA256(secret, METHOD|path|ts|nonce|sha256(body)) │ ║
║ └───────────────────────────────────────────────────────────────────────┘ ║
╠═════════════════════════════════════════════════════════════════════════════╣
║ DECENTRALIZED LAYER (InfoNet Testnet — signed events) ║
║ ║
║ ┌────────────────────────────┐ ┌──────────────────────────────────┐ ║
║ │ Mesh Hashchain │ │ Sovereign Shell Governance │ ║
║ │ │ │ │ ║
║ │ Ed25519 signed events │ │ Petitions (DSL: UPDATE_PARAM, │ ║
║ │ Public-key binding │ │ ENABLE_FEATURE …) │ ║
║ │ Replay / sequence guard │ │ Upgrade-Hash voting (80% / 40% │ ║
║ │ Two-tier finality │ │ quorum / 67% Heavy) │ ║
║ │ ├ Tier 1 (CRDT, fast) │ │ Resolution & Dispute markets │ ║
║ │ └ Tier 2 (epoch finality)│ │ Gate suspend / shutdown / appeal│ ║
║ │ Identity rotation │ │ Bootstrap eligible-node-1-vote │ ║
║ │ Constitutional invariants │ │ (Argon2id PoW, Heavy-Node only)│ ║
║ │ (MappingProxyType) │ │ Function Keys (5 of 6 pieces) │ ║
║ └─────────────┬──────────────┘ └─────────────┬────────────────────┘ ║
║ │ │ ║
║ └──────────────┬──────────────────┘ ║
║ │ ║
║ ┌────────────────────────────┴──────────────────────────────────────┐ ║
║ │ Wormhole / InfoNet Relay (transport layer) │ ║
║ │ Gate personas │ canonical signing │ Dead Drop epoch mailboxes │ ║
║ └───────────────────────────────────────────────────────────────────┘ ║
╠═════════════════════════════════════════════════════════════════════════════╣
║ PRIVACY CORE (Rust crate — locked Protocol contracts) ║
║ ║
║ privacy-core/ ─► Argon2id │ Ed25519/X25519 │ AESGCM │ HKDF ║
║ Ring sigs* │ Stealth addrs* │ Pedersen* │ Bulletproofs*║
║ Blind-sig issuance* (RSA / BBS+ / U-Prove / Idemix) ║
║ ║
║ * = locked Protocol contract; cryptographic primitive lands Sprint 11+ ║
╚═════════════════════════════════════════════════════════════════════════════╝
Distribution
────────────
GitHub (primary): ghcr.io/bigbodycobain/shadowbroker-{backend,frontend}
GitLab (mirror): registry.gitlab.com/bigbodycobain/shadowbroker/{backend,frontend}
Multi-arch: linux/amd64 + linux/arm64 (Raspberry Pi 5 supported)
Desktop: Tauri shell → packaged backend-runtime + Next.js frontend
📊 データソースとAPI
| ソース | データ | 更新頻度 | APIキー必要 |
|---|---|---|---|
| OpenSky Network | 商用機およびプライベート機のフライト | ~60s | はい |
| adsb.lol | 軍用機 | ~60s | いいえ |
| aisstream.io | AIS船舶位置 | リアルタイムWebSocket | はい |
| CelesTrak | 衛星軌道位置(TLE + SGP4) | ~60s | いいえ |
| USGS Earthquake | 世界の地震イベント | ~60s | いいえ |
| GDELT Project | 世界の紛争イベント | ~6h | いいえ |
| DeepState Map | ウクライナ戦線 | ~30min | いいえ |
| Shodan | インターネット接続デバイス検索 | オンデマンド | はい |
| OpenSanctions | OFAC SDN制裁インデックス(偵察+エンティティグラフ) | 24hキャッシュ | いいえ |
| abuse.ch Feodo + URLhaus | マルウェアC2 / 配布URL | ~5min(オプトインレイヤー) | いいえ |
| CISA KEV | 既知の悪用CVE | ~5min(オプトインレイヤー) | いいえ |
| ip-api.com | IP地理位置情報(偵察、エンティティグラフ) | オンデマンド | いいえ |
| Google Public DNS | DNS-over-HTTPSルックアップ(偵察) | オンデマンド | いいえ |
| RDAP.org | ドメイン登録データ(偵察) | オンデマンド | いいえ |
| crt.sh | 証明書透過性(偵察) | オンデマンド | いいえ |
| bgpview.io | BGP/ASNルーティング(偵察) | オンデマンド | いいえ |
| TeleGeography (static) | 海底ケーブルルート | 静的 | いいえ |
| ASFINAG | オーストリア高速道路ウェブカメラ | ~10min | いいえ |
| Amtrak | 米国列車位置 | ~60s | いいえ |
| DigiTraffic | 欧州鉄道位置 | ~60s | いいえ |
| Global Fishing Watch | 漁船活動イベント | ~1hr | はい(GFW_API_TOKEN) |
| Telegram public previews | 戦争/OSINTチャンネル投稿(telegram_osint) | ~1hr | いいえ(オプション TELEGRAM_OSINT_CHANNELS) |
| Transport for London, NYC DOT, TxDOT | CCTVカメラ(英国、米国) | ~10min | いいえ |
| Caltrans, WSDOT, GDOT, IDOT, MDOT | CCTVカメラ(米国5州) | ~10min | いいえ |
| Spain DGT, Madrid City | CCTVカメラ(スペイン) | ~10min | いいえ |
| Singapore LTA | シンガポール交通カメラ | ~10min | はい |
| Windy Webcams | 世界中のウェブカメラ | ~10min | いいえ |
| SatNOGS | アマチュア衛星地上局 | ~30min | いいえ |
| TinyGS | LoRa衛星地上局 | ~30min | いいえ |
| Meshtastic MQTT | メッシュ無線ノード位置 | リアルタイム | いいえ |
| APRS-IS | アマチュア無線位置 | リアルタイムTCP | いいえ |
| KiwiSDR | 公開SDR受信機位置 | ~30min | いいえ |
| OpenMHZ | 警察/消防スキャナーフィード | リアルタイム | いいえ |
| Smithsonian GVP | 世界の完新世火山 | 静的(キャッシュ済み) | いいえ |
| OpenAQ | 大気質PM2.5観測所 | ~120s | いいえ |
| NOAA / NWS | 悪天候警報とポリゴン | ~120s | いいえ |
| WRI Global Power Plant DB | 35,000以上の発電所 | 静的(キャッシュ済み) | いいえ |
| Military base datasets | 世界中の軍事施設 | 静的(キャッシュ済み) | いいえ |
| NASA FIRMS | NOAA-20 VIIRS火災/熱ホットスポット | ~120s | いいえ |
| NOAA SWPC | 宇宙天気Kp指数と太陽イベント | ~120s | いいえ |
| IODA (Georgia Tech) | 地域インターネット障害アラート | ~120s | いいえ |
| DC Map (GitHub) | 世界中のデータセンター位置 | 静的(7日間キャッシュ) | いいえ |
| NASA GIBS | MODIS Terra日次衛星画像 | 日次(24-48時間遅延) | いいえ |
| Esri World Imagery | 高解像度衛星ベースマップ | 静的(定期的に更新) | いいえ |
| MS Planetary Computer | Sentinel-2 L2Aシーン(右クリック) | オンデマンド | いいえ |
| Copernicus CDSE | Sentinel Hub画像(Process API) | オンデマンド | はい(無料) |
| VIIRS Nightlights | 夜間光変化検出 | 静的 | いいえ |
| RestCountries | 国のプロファイルデータ | オンデマンド(24時間キャッシュ) | いいえ |
| Wikidata SPARQL | 国家元首データ | オンデマンド(24時間キャッシュ) | いいえ |
| Wikipedia API | 場所の概要と航空機画像 | オンデマンド(キャッシュ済み) | いいえ |
| OSM Nominatim | 地名ジオコーディング(LOCATEバー) | オンデマンド | いいえ |
| CARTO Basemaps | ダークマップタイル | 継続的 | いいえ |
送信先プライバシーと監査(#348–#366): 各セルフホストインストールは独自のバックエンドIPとインストールごとのUser-Agentハンドルを使用します。第三者に連絡する内容、オプトイン/環境変数制御、および許容されるトレードオフ(CCTV Referer、ベースマップCDN、LiveUAMapなど)については、docs/OUTBOUND_DATA.mdを参照してください。
🚀 はじめに
🐳 Dockerセットアップ(セルフホスティング推奨)
リポジトリには、GitHub Container Registryからプレビルドイメージをプルするdocker-compose.ymlが含まれています。```bash
git clone https://github.com/BigBodyCobain/Shadowbroker.git
cd Shadowbroker
Add your API keys in a repo-root .env file (optional — see Environment Variables below)
docker compose pull docker compose up -d
ダッシュボードを表示するには `http://localhost:3000` を開いてください。
> **パブリックまたはLANでデプロイする場合?** ほとんどのセットアップでは設定は不要です。
> フロントエンドはすべてのAPI呼び出しをNext.jsサーバーを介して `BACKEND_URL` にプロキシします。
> デフォルトは `http://backend:8000` (Docker内部ネットワーク)です。
> ホストポート `8000` はローカルAPI/デバッグアクセス用にのみ公開されています (`127.0.0.1:8000`
> `docker-compose.yml` 内)。別のサービスと競合する場合は、
> `.env` の `BACKEND_PORT=8001` を設定し、`BACKEND_URL` は `http://backend:8000` のままにしておきます。
> これはDocker内部ポートだからです。
>
> **Docker外部でバックエンドを実行する場合** (`cd backend && python main.py`):
> 開発サーバーは**ループバックのみ**にバインドするため (`127.0.0.1:8000`)、LAN上の他のマシンからは
> 空の `ADMIN_KEY` ではadmin/local-trustルートにアクセスできません。
> `.env` に `SHADOWBROKER_DEV_BIND_ALL=true` を設定するのは、意図的に
> `0.0.0.0` が必要で、かつ非ローカルの呼び出し元に対して強力な `ADMIN_KEY` を使用する場合のみにしてください。
> バックエンドのメモリ上限は `BACKEND_MEMORY_LIMIT` で制御され、デフォルトは
> `4G` です。DockerがOOMイベントを報告すると、バックエンドは再起動され、
> レイヤーは再入力されるまで空に見えることがあります。
>
> バックエンドが**別のホストまたはポート**で実行されている場合は、実行時に `BACKEND_URL` を設定してください — 再ビルドは不要です。
```bash
# Linux / macOS
BACKEND_URL=http://myserver.com:9096 docker compose up -d
# Podman (via compose.sh wrapper)
BACKEND_URL=http://192.168.1.50:9096 ./compose.sh up -d
# Windows (PowerShell)
$env:BACKEND_URL="http://myserver.com:9096"; docker compose up -d
# Or add to a .env file next to docker-compose.yml:
# BACKEND_URL=http://myserver.com:9096
Podmanユーザー: GitHub URLを podman compose pull に渡さないでください。まずリポジトリをクローンし、cd Shadowbroker でそのフォルダに移動してからcomposeを実行してください。podman compose はComposeプロバイダーも必要とします。Podmanが looking up compose provider failed と報告した場合は、一つインストールしてください:```bash
Linux / macOS / WSL
python3 -m pip install --user podman-compose podman-compose pull podman-compose up -d
Only the tool content is intended for translation. Since the provided INPUT field is empty, there is no content to translate. The response should be empty.```powershell
# Windows PowerShell
py -m pip install --user podman-compose
podman-compose pull
podman-compose up -d
bash互換のシェルを使用している場合、含まれているラッパーがDockerまたはPodmanを自動検出できます:```bash ./compose.sh --engine podman pull ./compose.sh --engine podman up -d
</details>
---
<details>
<summary>🐋 スタンドアロンデプロイ(Portainer、Uncloud、NASなど)</summary>
リポジトリをクローンする必要はありません。GitHub Container Registryのビルド済みイメージを使用してください。GitLabレジストリのイメージをミラーとして使用することもできます(公開している場合)。
以下の内容で`docker-compose.yml`を作成し、直接デプロイします — Portainerのスタックエディタ、`uncloud deploy`、または任意のDockerホストに貼り付けてください。```yaml
## Image registry — uncomment ONE line per service:
## GitHub (primary): ghcr.io/bigbodycobain/shadowbroker-backend:latest
## GitLab (mirror): registry.gitlab.com/bigbodycobain/shadowbroker/backend:latest
services:
backend:
image: ghcr.io/bigbodycobain/shadowbroker-backend:latest
# image: registry.gitlab.com/bigbodycobain/shadowbroker/backend:latest
container_name: shadowbroker-backend
ports:
- "${BACKEND_PORT:-8000}:8000"
environment:
- AIS_API_KEY=your_aisstream_key # Required — get one free at aisstream.io
- OPENSKY_CLIENT_ID= # Optional — higher flight data rate limits
- OPENSKY_CLIENT_SECRET= # Optional — paired with Client ID above
- LTA_ACCOUNT_KEY= # Optional — Singapore CCTV cameras
- SHODAN_API_KEY= # Optional — Shodan device search overlay
- SH_CLIENT_ID= # Optional — Sentinel Hub satellite imagery
- SH_CLIENT_SECRET= # Optional — paired with Sentinel Hub ID
- CORS_ORIGINS= # Optional — comma-separated allowed origins
volumes:
- backend_data:/app/data
restart: unless-stopped
frontend:
image: ghcr.io/bigbodycobain/shadowbroker-frontend:latest
# image: registry.gitlab.com/bigbodycobain/shadowbroker/frontend:latest
container_name: shadowbroker-frontend
ports:
- "3000:3000"
environment:
- BACKEND_URL=http://backend:8000 # Docker internal networking — no rebuild needed
depends_on:
- backend
restart: unless-stopped
volumes:
backend_data:
仕組み: フロントエンドコンテナは、すべての
/api/*リクエストをNext.jsサーバー経由でBACKEND_URLにプロキシします(Docker内部ネットワーク使用)。ブラウザはポート3000とのみ通信します。バックエンドのホストポートはローカルAPI/デバッグアクセス用であり、BACKEND_PORT=8001のように変更してもBACKEND_URLを変更する必要はありません。
BACKEND_URLは単なるランタイム環境変数です(ビルド時のNEXT_PUBLIC_*ではありません)。そのため、Portainer、Uncloud、または任意のComposeエディタでイメージを再ビルドせずに変更できます。Dockerネットワーク内部からBackendに到達可能なアドレスを設定してください(例:http://backend:8000、http://192.168.1.50:8000)。
📦 クイックスタート(コード不要)
ターミナルコマンドを使わずにダッシュボードを実行したい場合:
- このリポジトリページ右側の Releases タブに移動します。
- リリースから最新の
.zipファイルをダウンロードします。 - フォルダをコンピュータに解凍します。
- Windows:
start.batをダブルクリックします。 Mac/Linux: ターミナルを開き、chmod +x start.sh、dos2unix start.shと入力し、./start.shを実行します。 - 自動ですべてがインストールされ、ダッシュボードが起動します!
ローカルランチャーの注意事項:
start.bat/start.shはDockerを使用せずにアプリを実行します — 依存関係をインストールし、両方のサーバーを直接起動します。- アップグレード後にWormhole IDまたはDMコンタクトエンドポイントが動作しない場合は、
docs/mesh/フォルダのトラブルシューティングを確認してください。 - DMルートウィットネス、透明性、オペレーターモニタリングのロールアウトについては、
docs/mesh/wormhole-dm-root-operations-runbook.mdから始めてください。 - サンプルのDMルートopsブリッジアセットについては、
scripts/mesh/poll-dm-root-health-alerts.mjs、scripts/mesh/export-dm-root-health-prometheus.mjs、scripts/mesh/publish-external-root-witness-package.mjs、scripts/mesh/smoke-external-root-witness-flow.mjs、scripts/mesh/smoke-root-transparency-publication-flow.mjs、scripts/mesh/smoke-dm-root-deployment-flow.mjs、scripts/mesh/sync-dm-root-external-assurance.mjs、およびdocs/mesh/examples/も参照してください。
💻 開発者セットアップ
コードを変更したり、ソースから実行したい場合:
前提条件
- Node.js 18+ と npm — nodejs.org
- Python 3.10、3.11、または 3.12 と
pip— python.org(インストール時に 「PATHに追加」にチェック を入れてください)- ⚠️ Python 3.13+ は一部の依存関係と互換性の問題が生じる可能性があります。3.11 または 3.12 を推奨します。
- APIキー:
aisstream.io(必須)、オプションでopensky-network.org(OAuth2)、lta.gov.sg
インストール```bash
Clone the repository
git clone https://github.com/BigBodyCobain/Shadowbroker.git cd Shadowbroker
Backend setup
cd backend python -m venv venv venv\Scripts\activate # Windows
source venv/bin/activate # macOS/Linux
pip install .
Optional helper scripts (creates venv + installs dev deps)
Windows PowerShell
.\backend\scripts\setup-venv.ps1
macOS/Linux
./backend/scripts/setup-venv.sh
Optional env check (prints warnings for missing keys)
Windows PowerShell
.\backend\scripts\check-env.ps1
macOS/Linux
./backend/scripts/check-env.sh
Create .env with your API keys
echo "AIS_API_KEY=your_aisstream_key" >> .env echo "OPENSKY_CLIENT_ID=your_opensky_client_id" >> .env echo "OPENSKY_CLIENT_SECRET=your_opensky_secret" >> .env
Frontend setup
cd ../frontend npm ci
### 実行```bash
# From the frontend directory — starts both frontend & backend concurrently
npm run dev
- Next.js フロントエンド(
http://localhost:3000上) - FastAPI バックエンド(
http://localhost:8000上)
Pre-commit(オプション)
pre-commit を使用する場合は、リポジトリルートから一度フックをインストールしてください:```bash pre-commit install
### ローカルAISレシーバー(オプション)
RTL-SDRドングルとオープンソースのAISデコーダである[AIS-catcher](https://github.com/jvde-github/AIS-catcher)を使用して、独自のAIS船舶データをShadowBrokerに取り込むことができます。これにより、ローカルエリアの船舶をリアルタイムでカバーできます。APIキーは不要です。
1. RTL-SDRドングルを接続します
2. AIS-catcherをインストールするか([リリース](https://github.com/jvde-github/AIS-catcher/releases))、Dockerイメージを使用します: ```bash
docker run -d --device /dev/bus/usb \
ghcr.io/jvde-github/ais-catcher -H http://host.docker.internal:4000/api/ais/feed interval 10
- またはネイティブで実行する: ```bash
AIS-catcher -H http://localhost:4000/api/ais/feed interval 10
AIS-catcherは、161.975 MHzおよび162.025 MHzのVHF無線信号を復号し、10秒ごとに復号された船舶データをShadowBrokerにPOSTします。SDRアンテナで検出された船舶は、グローバルAISストリームと並んで表示されます。
Docker (ARM/Raspberry Pi): ARM向けに最適化された本番環境対応のDockerイメージについては、docker-shipfeederを参照してください。
注: AISの到達範囲はアンテナに依存します。基本的な設定では通常20~40海里、高所に設置したマリンブイのVHFアンテナでは60海里以上になります。
🎛️ データレイヤー
41のレイヤーはすべて左パネルから個別に切り替え可能です:
| レイヤー | デフォルト | 説明 |
|---|---|---|
| 民間航空機 | ✅ ON | 航空会社、貨物、一般航空機 |
| プライベート機 | ✅ ON | 非商用の自家用航空機 |
| プライベートジェット | ✅ ON | 所有者データ付き高価値ビジネスジェット |
| 軍用機 | ✅ ON | 軍・政府航空機 |
| 追跡航空機 | ✅ ON | 特別関心の監視リスト |
| GPS妨害 | ✅ ON | NAC-P劣化ゾーン |
| 空母・軍艦・貨物船 | ✅ ON | 海軍空母、貨物船、タンカー |
| 民間船舶 | ✅ ON | ヨット、漁船、レジャー船 |
| クルーズ・旅客船 | ✅ ON | クルーズ船とフェリー |
| 追跡ヨット | ✅ ON | 億万長者・オリガークのスーパーヨット |
| 漁業活動 | ✅ ON | Global Fishing Watchの船舶イベント |
| 列車 | ✅ ON | Amtrak + 欧州鉄道の位置 |
| 衛星 | ✅ ON | ミッションタイプ別軌道資産 |
| SatNOGS | ✅ ON | アマチュア衛星地上局 |
| TinyGS | ✅ ON | LoRa衛星地上局 |
| 地震(24時間) | ✅ ON | USGS地震イベント |
| 火災ホットスポット(24時間) | ✅ ON | NASA FIRMS VIIRS熱異常 |
| 火山 | ✅ ON | スミソニアン完新世火山 |
| 天気警報 | ✅ ON | 悪天候ポリゴン |
| 大気質(PM2.5) | ✅ ON | OpenAQ世界の観測局 |
| ウクライナ前線 | ✅ ON | リアルタイム戦線位置 |
| ウクライナ空襲警報 | ✅ ON | 地域別空襲警報 |
| 世界のインシデント | ✅ ON | GDELT紛争イベント |
| CCTVメッシュ | ✅ ON | 13ソース、6カ国にわたる11,000以上のカメラ |
| インターネット障害 | ✅ ON | IODA地域接続アラート |
| データセンター | ✅ ON | 世界のデータセンター所在地(2,000以上) |
| 軍事基地 | ✅ ON | 世界の軍事施設 |
| KiwiSDR受信機 | ✅ ON | 公開SDR無線受信機 |
| Meshtasticノード | ✅ ON | メッシュ無線ノード位置 |
| APRS | ✅ ON | アマチュア無線測位 |
| スキャナー | ✅ ON | 警察・消防スキャナーフィード |
| 昼/夜サイクル | ✅ ON | 太陽ターミネーターオーバーレイ |
| MODIS Terra(日次) | ❌ OFF | NASA GIBS日次衛星画像 |
| 高解像度衛星 | ❌ OFF | Esriサブメートル衛星画像 |
| Sentinel Hub | ❌ OFF | Copernicus CDSE Process API |
| VIIRS夜間光 | ❌ OFF | 夜間光変化検出 |
| 発電所 | ❌ OFF | 35,000以上の世界の発電所 |
| Shodanオーバーレイ | ❌ OFF | インターネットデバイス検索結果 |
| 道路貨物トレンド | ❌ OFF | Sentinel-2による幹線道路のトラック動向(ここで分析) |
| 海底ケーブル | ❌ OFF | 世界の海底ケーブルルート(静的GeoJSON) |
| マルウェアC2 | ❌ OFF | abuse.ch Feodo + URLhaus脅威ポイント |
| SCMサプライヤー | ❌ OFF | ティア1/2サプライチェーンリスクマーカー + パネルアラート |
| サイバー脅威 | ❌ OFF | 最近のCISA KEVエントリ(低速階層ペイロード内の統計) |
| Telegram OSINT | ✅ ON | 公開戦争/OSINT Telegramチャンネル — 1時間ごとにスクレイピング、ジオパースされたピン |
| SAR | ✅ ON | 合成開口レーダーカタログ + 異常アラート |
偵察およびエンティティツール(マップレイヤーではありません — 左サイドバー/選択):
| ツール | ダッシュボードアクセス | OpenClawコマンド | 説明 |
|---|---|---|---|
| Recon Toolkit | ローカルオペレーター(/api/osint/*) | osint_lookup, osint_sweep† | IP、DNS、WHOIS、証明書、BGP、制裁、CVE、MAC、GitHub、リーク、脅威、サブネットスイープ |
| Entity Graph | ローカルオペレーター(/api/entity/expand) | entity_expand | Wikidata + OFAC + ライブストアの関係グラフ |
| SCMリスクパネル | ローカルオペレーター(/api/scm-suppliers) | get_layer_slice(["scm_suppliers"]) | サプライヤー脅威ロールアップ + マップマーカー |
| ツール検出 | — | osint_tools | 偵察ルックアップタイプとentity-expandスキーマの一覧表示 |
† osint_sweep(アクティブInternetDBスキャン)には OPENCLAW_ACCESS_TIER=full が必要です。
🔧 パフォーマンス
このプラットフォームは、大規模なリアルタイムデータセットを処理するために最適化されています。
- Gzip圧縮 — APIペイロードを約92%圧縮(11.6 MB → 915 KB)
- ETagキャッシュ —
304 Not Modified応答により冗長なJSON解析をスキップ - ビューポートカリング — 表示中のマップ境界内(+20%バッファ)のフィーチャのみをレンダリング
- 命令型マップ更新 — 高ボリュームレイヤー(航空機、衛星、火災)は、Reactの再調整を迂回し、直接
setData()呼び出しで更新 - クラスタリングレンダリング — 船舶、CCTV、地震、データセンターはMapLibreクラスタリングを使用してフィーチャ数を削減
- デバウンスされたビューポート更新 — パン/ズーム時のGeoJSON再構築のスラッシングを防ぐために300msデバウンス、高密度レイヤー(衛星、火災)では2秒デバウンス
- 位置補間 — データ更新間のスムーズな10秒ティックアニメーション
- React.memo — 重いコンポーネントをラップして不要な再レンダリングを防止
- 座標精度 — 緯度/経度を小数点第5位(約1m)に丸めてJSONサイズを削減
📁 プロジェクト構造
新規コントリビューターは、短い案内ガイドとして docs/contributor-map.md を参照してください。``` Shadowbroker/ ├── openclaw-skills/shadowbroker/ # OpenClaw skill — SKILL.md, sb_query.py client, alerts/monitor helpers ├── backend/ │ ├── main.py # FastAPI app, middleware, API routes (~4,000 lines) │ ├── cctv.db # SQLite CCTV camera database (auto-generated) │ ├── config/ │ │ └── news_feeds.json # User-customizable RSS feed list │ ├── services/ │ │ ├── data_fetcher.py # Core scheduler — orchestrates all data sources │ │ ├── ais_stream.py # AIS WebSocket client (25K+ vessels) │ │ ├── carrier_tracker.py # OSINT carrier position estimator (GDELT news scraping) │ │ ├── cctv_pipeline.py # 14-source CCTV camera ingestion pipeline │ │ ├── ssrf_guard.py # SSRF validation for operator recon fetches │ │ ├── sanctions/ofac.py # OpenSanctions OFAC SDN index │ │ ├── osint/lookups.py # Server-side recon lookups (Osiris port) │ │ ├── osint/openclaw_recon.py # OpenClaw dispatch for recon + entity_expand │ │ ├── osint_intel/resolve.py # Entity graph resolver (Wikidata + OFAC) │ │ ├── scm/suppliers.py # Supply-chain risk overlay │ │ ├── intel_feeds/ # Country risk index helpers │ │ ├── fetchers/malware.py # abuse.ch Feodo + URLhaus │ │ ├── fetchers/cyber_status.py # CISA KEV feed │ │ ├── fetchers/telegram_osint.py # Public Telegram channel scrape + geoparse │ │ ├── third_party/osiris/ # MIT attribution for Osiris-derived code │ │ ├── geopolitics.py # GDELT + Ukraine frontline + air alerts │ │ ├── region_dossier.py # Right-click country/city intelligence │ │ ├── radio_intercept.py # Police scanner feeds + OpenMHZ │ │ ├── kiwisdr_fetcher.py # KiwiSDR receiver scraper │ │ ├── sentinel_search.py # Sentinel-2 STAC imagery search │ │ ├── shodan_connector.py # Shodan device search connector │ │ ├── sigint_bridge.py # APRS-IS TCP bridge │ │ ├── network_utils.py # HTTP client with curl fallback │ │ ├── api_settings.py # API key management │ │ ├── news_feed_config.py # RSS feed config manager │ │ ├── fetchers/ │ │ │ ├── flights.py # OpenSky, adsb.lol, GPS jamming, holding patterns │ │ │ ├── geo.py # AIS vessels, carriers, GDELT, fishing activity │ │ │ ├── satellites.py # CelesTrak TLE + SGP4 propagation │ │ │ ├── earth_observation.py # Quakes, fires, volcanoes, air quality, weather │ │ │ ├── infrastructure.py # Data centers, power plants, military bases │ │ │ ├── trains.py # Amtrak + DigiTraffic European rail │ │ │ ├── sigint.py # SatNOGS, TinyGS, APRS, Meshtastic │ │ │ ├── meshtastic_map.py # Meshtastic MQTT + map node aggregation │ │ │ ├── military.py # Military aircraft classification │ │ │ ├── news.py # RSS intelligence feed aggregation │ │ │ ├── financial.py # Global markets data │ │ │ └── ukraine_alerts.py # Ukraine air raid alerts │ │ └── mesh/ # InfoNet / Wormhole protocol stack │ │ ├── mesh_protocol.py # Core mesh protocol + routing │ │ ├── mesh_crypto.py # Ed25519, X25519, AESGCM primitives │ │ ├── mesh_hashchain.py # Hash chain commitment system (~1,400 lines) │ │ ├── mesh_router.py # Multi-transport router (APRS, Meshtastic, WS) │ │ ├── mesh_wormhole_persona.py # Gate persona identity management │ │ ├── mesh_wormhole_dead_drop.py # Dead Drop token-based DM mailbox │ │ ├── mesh_wormhole_ratchet.py # Double-ratchet DM scaffolding │ │ ├── mesh_wormhole_gate_keys.py # Gate key management + rotation │ │ ├── mesh_wormhole_seal.py # Message sealing + unsealing │ │ ├── mesh_merkle.py # Merkle tree proofs for data commitment │ │ ├── mesh_reputation.py # Node reputation scoring │ │ ├── mesh_oracle.py # Oracle consensus protocol │ │ └── mesh_secure_storage.py # Secure credential storage │ ├── routers/ │ │ ├── osint.py # /api/osint/* recon routes (local operator) │ │ ├── entity_graph.py # /api/entity/expand │ │ ├── scm.py # /api/scm-suppliers │ │ └── intel_feeds.py # /api/malware, /api/cyber-threats, /api/telegram-feed, /api/country-risk ├── frontend/ │ ├── public/data/ │ │ └── submarine-cables.json # Static undersea cable GeoJSON │ ├── src/ │ │ ├── app/ │ │ │ └── page.tsx # Main dashboard — state, polling, layout │ │ └── components/ │ │ ├── MaplibreViewer.tsx # Core map — all GeoJSON layers │ │ ├── MeshChat.tsx # InfoNet / Mesh / Dead Drop chat panel │ │ ├── MeshTerminal.tsx # Draggable CLI terminal │ │ ├── NewsFeed.tsx # SIGINT feed + entity detail panels │ │ ├── WorldviewLeftPanel.tsx # Data layer toggles (40+ layers) │ │ ├── ShodanPanel.tsx # Shodan device search overlay │ │ ├── ReconPanel.tsx # Server-side OSINT recon toolkit │ │ ├── ScmPanel.tsx # Supply-chain risk command panel │ │ ├── EntityGraphPanel.tsx # Entity graph on map selection │ │ ├── MaplibreViewer/popups/TelegramOsintPopup.tsx # Threat-intercept styled Telegram pin popups │ │ ├── WorldviewRightPanel.tsx # Search + filter sidebar │ │ ├── AdvancedFilterModal.tsx # Airport/country/owner filtering │ │ ├── MapLegend.tsx # Dynamic legend with all icons │ │ ├── MarketsPanel.tsx # Global financial markets ticker │ │ ├── RadioInterceptPanel.tsx # Scanner-style radio panel │ │ ├── FindLocateBar.tsx # Search/locate bar │ │ ├── ChangelogModal.tsx # Version changelog popup (auto-shows on upgrade) │ │ ├── SettingsPanel.tsx # API Keys + News Feed + Shodan config │ │ ├── ScaleBar.tsx # Map scale indicator │ │ └── ErrorBoundary.tsx # Crash recovery wrapper │ └── package.json
</details>
---
<details>
<summary>🔑 環境変数</summary>
### バックエンド (`backend/.env`)```env
# Required for airplane telemetry (NEW in v0.9.7 — startup env check flags these as critical)
# Free registration: https://opensky-network.org/index.php?option=com_users&view=registration
OPENSKY_CLIENT_ID=your_opensky_client_id # OAuth2 — global flight state vectors
OPENSKY_CLIENT_SECRET=your_opensky_secret # OAuth2 — paired with Client ID above
# Optional (enhances data quality)
AIS_API_KEY=your_aisstream_key # Maritime vessel tracking (aisstream.io) — ships layer empty without it
LTA_ACCOUNT_KEY=your_lta_key # Singapore CCTV cameras
SHODAN_API_KEY=your_shodan_key # Shodan device search overlay
SH_CLIENT_ID=your_sentinel_hub_id # Copernicus CDSE Sentinel Hub imagery
SH_CLIENT_SECRET=your_sentinel_hub_secret # Paired with Sentinel Hub Client ID
MESH_SAR_EARTHDATA_USER= # NASA Earthdata user (SAR Mode B — OPERA products)
MESH_SAR_EARTHDATA_TOKEN= # NASA Earthdata token (paired with user above)
MESH_SAR_COPERNICUS_USER= # Copernicus Data Space user (SAR Mode B — EGMS / EMS)
MESH_SAR_COPERNICUS_TOKEN= # Copernicus token (paired with user above)
OPENCLAW_ACCESS_TIER=restricted # OpenClaw agent tier: "restricted" (read-only) or "full"
# OPENCLAW_HMAC_SECRET= # Optional; UI Bootstrap persists to data/openclaw.env in Docker
GFW_API_TOKEN=your_gfw_token # Global Fishing Watch — fishing_activity layer (Settings → Maritime)
TELEGRAM_OSINT_ENABLED=true # Telegram OSINT layer (default on)
TELEGRAM_OSINT_CHANNELS=osintdefender,... # Comma-separated public channel slugs (see .env.example)
# Private-lane privacy-core pinning (required when Arti or RNS is enabled)
PRIVACY_CORE_MIN_VERSION=0.1.0
PRIVACY_CORE_ALLOWED_SHA256=your_privacy_core_sha256
# Optional override if you load a non-default shared library path
PRIVACY_CORE_LIB=
MESH_ARTI_ENABLED=true または MESH_RNS_ENABLED=true の場合、読み込まれた privacy-core アーティファクトが PRIVACY_CORE_MIN_VERSION 以上のパース可能なバージョンを報告し、かつ PRIVACY_CORE_ALLOWED_SHA256 内のいずれかのハッシュと一致しない限り、バックエンドの起動はクローズドに失敗します。
出荷予定のアーティファクトからハッシュを生成します:```powershell Get-FileHash .\privacy-core\target\release\privacy_core.dll -Algorithm SHA256
入力:```bash
sha256sum ./privacy-core/target/release/libprivacy_core.so
次に、認証済みの GET /api/wormhole/status または GET /api/settings/wormhole-status で、同じ privacy_core.version、privacy_core.library_path、privacy_core.library_sha256 が表示されることを確認します。
Frontend
| 変数 | 設定場所 | 目的 |
|---|---|---|
BACKEND_URL | docker-compose.yml の environment、またはシェル環境変数 | Next.jsサーバーがAPI呼び出しをバックエンドにプロキシするために使用するURL。デフォルトは http://backend:8000。ランタイム変数 — リビルド不要。 |
BACKEND_PORT | リポジトリルートの .env または docker compose up 前のシェル環境変数 | ローカル診断用にバックエンドAPIを公開するホストポート。デフォルトは 8000。ポート8000が既に使用中の場合は BACKEND_PORT=8001 を設定。Docker内部の BACKEND_URL は変更しません。 |
仕組み: フロントエンドは、すべての /api/* リクエストをNext.jsサーバーを介して BACKEND_URL にプロキシし、Dockerの内部ネットワークを使用します。ブラウザはポート3000とのみ通信します。バックエンドのホストポートはローカル診断専用です。Dockerを使わないローカル開発では、BACKEND_URL のデフォルトは http://localhost:8000 になります。
🤝 コントリビューター
ShadowBrokerはオープンに開発されています。実際にコードを提供した方々です:
| 誰 | 内容 | PR |
|---|---|---|
| @Alienmajik | Raspberry Pi 5対応 — ARM64パッケージ、ヘッドレスデプロイメントノート、Piクラスハードウェア向けランタイムチューニング | — |
| @wa1id | CCTV取り込み修正 — スレッド化SQLite、永続DB、起動時ハイドレーション、クラスタのクリック対応 | #92 |
| @AlborzNazari | スペインDGT+マドリッドCCTVソース、STIX 2.1脅威インテリジェンスエクスポート | #91 |
| @adust09 | 発電所レイヤー、東アジア情報カバレッジ(JSDF基地、ICAO補完、台湾ニュース、軍事分類) | #71, #72, #76, #77, #87 |
| @Xpirix | LocateBarのスタイルとインタラクションの改善 | #78 |
| @imqdcr | 船舶トグル分割(4カテゴリ)+安定したMMSI/コールサインエンティティID | — |
| @csysp | 解消可能な脅威アラート+GDELT&ニュース向け安定エンティティID | #48, #63 |
| @suranyami | 並列マルチアーキテクチャDockerビルド(11分→3分)+ランタイムBACKEND_URL修正 | #35, #44 |
| @chr0n1x | HAデプロイメント向けKubernetes/Helmチャートアーキテクチャ | — |
⚠️ 免責事項
このツールは、完全に公開されているオープンソースインテリジェンス(OSINT)データに基づいて構築されています。機密情報、制限情報、非公開データは一切使用されていません。キャリアの位置は公開レポートに基づく推定値です。軍事的なテーマのUIは純粋に美的なものです。
📜 ライセンス
このプロジェクトは教育および個人研究目的です。データ使用制限については、各APIプロバイダーの利用規約を参照してください。
☕と多すぎるAPI呼び出しで作られました