本地开发必须用 Node.js 24,Debian 12 等自带 Node 18 会导致 npm install 报 Invalid comparator 失败;部分功能数据源需要额外配置凭据,见 .env.example;自托管默认端口 3000,可用 --port 覆盖。
worldmonitor
koala73AGPL-3.0活跃维护实时全球情报仪表盘,用 AI 聚合新闻、监控地缘政治与基础设施动态,把分散信息整合进统一的态势感知界面。
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
curl -fsSL https://www.worldmonitor.app/install.sh | bashREADME 未说明显存或 GPU 要求;本地开发需 Node.js 24,桌面端支持 macOS、Windows、Linux。
实时全球情报仪表盘,聚合新闻、地缘政治与基础设施动态,一屏掌握态势
实时全球情报仪表盘,用 AI 聚合新闻、监控地缘政治与基础设施动态,把分散信息整合进统一的态势感知界面。
核心能力
- AI 聚合全球与区域新闻并生成简报
- 双地图引擎:3D 地球与 WebGL 平面地图共享图层
- 跨数据流关联军事、经济、灾害与升级信号
- 提供 31 个一级国家的国家不稳定指数 CII
- 支持 Ollama 本地 AI 运行,无需 API 密钥
容易踩的坑
- v2.11.8World Monitor v2.11.8最新正式版2026-11-04 · 2026-11-04 19:23 UTC
What's Changed
- chore(release): bump desktop to 2.11.8 (#10150)
- perf(blog): self-host subset web fonts with a preloaded core and on-demand extended files (#10145)
- fix(panels): make table status and severity badges readable in both themes (#10144)
- fix(panels): make price and stock table state colours readable in both themes (#10143)
- fix(panels): collapse the badge and watchlist button in market headers up to 420px (#10142)
- feat(self-host): unlock Pro on self-hosted dashboards with the user's own desktop key (#10137)
- ci(deploy-gate): stop holding runners for waits and history the evaluation does not need (#10141)
- fix(panels): move the last inline-styled panel tables to the shared table style (#10131)
- ci(test): rebalance smoke shards and trim the built-output job (#10140)
- fix(panels): move the price, radiation and oil-stock tables to the shared table style (#10130)
- fix(energy): style the oil-stock badges and regional summary rows (#10132)
- chore(open-data): refresh chokepoint status snapshot 2026-11-04 (#10135)
- fix(styles): make blue semantic text readable in the light theme (#10133)
- fix(panels): move the energy, FX, ETF and watchlist tables to the shared table style (#10129)
- fix(panels): give panel tables one shared header and cell style (#10128)
- fix(styles): stop TypeScript styles reading undefined colour tokens (#10127)
- fix(panels): stop four panels scrolling sideways in narrow sidebar columns (#10126)
- perf(welcome): serve phones the 640w hero screenshot and preload it (#10136)
- fix(portwatch): retry ArcGIS's intermittent Invalid URL answers per page (#10134)
- fix(settings): cue the phone tab strip and keep the selected tab in view (#10117)
- fix(regional-intelligence): style the region picker like the dashboard's (#10116)
- fix(panels): stop wide panels adding sidebar columns the grid has no room for (#10119)
- fix(self-host): pin military-bases EVALs, add bind-host settings, send a User-Agent to Overpass (#10124)
- docs(solutions): GDACS F5 challenge answers browser User-Agents with HTML (#10123)
- fix(panels): give long header titles a second line and touch controls a 24px tap area (#10121)
- fix(hormuz): stretch the shipment bar charts to the panel body (#10120)
- fix(panels): keep prediction labels in their segment and wrap SEC filer names (#10115)
- fix(resilience): regenerate the docs date manifest before the refresh's data tests (#10118)
- feat(food-prices): read Thailand's daily farm prices from the NABC dashboard (#10109)
- fix(energy): keep disruptions log values whole and stack rows in narrow columns (#10107)
- fix(panels): keep panel header titles readable on phones and 375px columns (#10106)
- docs(intel-history): write the embedding-model migration runbook (#5742) (#9886)
Full Changelog: https://github.com/koala73/worldmonitor/compare/convex-deployed...v2.11.8
- v2.11.7World Monitor v2.11.72026-11-01 · 2026-11-01 19:37 UTC
查看更新说明
What's Changed
- chore(release): bump desktop to 2.11.7 and CLI to 0.2.2 (#10005)
- docs(mcp): document per-outlet provenance on get_news_clusters (#9722) (#10004)
- fix(portwatch): start no ArcGIS query after the fetch deadline (#10003)
- fix(portwatch): read chokepoints from the Hub CSV export (#10001)
- test(sanctions): freeze the clock in the OFAC deadline-cap tests (#10002)
- feat(procurement): add EPADS, Georgia and Armenia tenders (#9999)
- fix(sanctions): give the OFAC SDN body its own download budget (#10000)
- feat(food-prices): add 11 batch-2 official food-price sources (#9892) (#9993)
- fix(tech): load Internet Disruptions when its own panel mounts (#9998)
- feat(food-prices): add official local prices and weekly comparisons (#9853)
- docs(solutions): NZ fuel moved to the Commerce Commission XLSX, which ExcelJS cannot read (#4010) (#9997)
- fix(news): mark home and intel panels CACHED when their digest is old (#9996)
- fix(fuel): read New Zealand prices from the Commerce Commission (#4010) (#9995)
- chore(news): delete /api/fwdstart and the unused tech/finance variant FEEDS (#9835)
- refactor(news): panels read only digests; desktop-only outage fallback replaces direct feed fetching (U7) (#9823)
- fix(energy): keep EUR inside the cold-cache FX request budget (#9994)
- feat(gemini): serve the Google Connected Apps domain verification file (#9991)
- docs(solutions): semantic colors need text-only light shades, judged on their tints (#9988) (#9992)
- feat(energy): show the national energy feeds in the fuel panel and country brief (#9989)
- fix(styles): darker light-theme shades for semantic text only (#9988)
- fix(portwatch): recheck retained coverage at run completion (#9990)
- docs(solutions): localized MCP spoken answers share one data path (#9722) (#9987)
- fix(styles): replace 23 undefined CSS tokens and guard against new ones (#9982)
- feat(mcp): Arabic spoken answers with spoken_language "ar" (#9722) (#9986)
- test(mcp): guard every published MCP URL against the 410 alias forms (#9722) (#9985)
- feat(energy): add Guatemala MEM fuel prices to the regional feeds (#9984)
- feat(mcp): add a Gemini CLI extension manifest (#9981)
Full Changelog: https://github.com/koala73/worldmonitor/compare/convex-deployed...v2.11.7
- v2.11.6World Monitor v2.11.62026-10-25 · 2026-10-25 18:43 UTC
查看更新说明
What's Changed
- chore(release): bump version to 2.11.6 (#9683)
- fix(aviation): stop reading Riyadh's late-night page as most flights cancelled (#9682)
- fix(desktop): bundle the Node runtime on Windows, where the v2.11.5 build failed (#9681)
- test(seo): guard noindex on new data header sources (#9680)
- docs(cli): document brew install worldmonitor now that the formula is in homebrew-core (#9679)
- test(webmcp): retry the post-reload observation read when navigation destroys it (#9678)
- fix(tps): retain classified fetch failures in worker logs (#9677)
Full Changelog: https://github.com/koala73/worldmonitor/compare/v2.11.5...v2.11.6
- v2.11.4World Monitor v2.11.42026-10-24 · 2026-10-24 19:44 UTC
查看更新说明
What's Changed
- chore: bump version 2.11.3 → 2.11.4 (#9650)
- feat(tensions): pin Iran–GCC, score pairs live on the last 168 hours; drop the BestTime credit (#9645)
- chore(aviation): activate seed-notam-nms on FAA production (#9635) (#9648)
Full Changelog: https://github.com/koala73/worldmonitor/compare/convex-deployed...v2.11.4
- v2.11.3World Monitor v2.11.32026-10-23 · 2026-10-23 03:27 UTC
查看更新说明
What's Changed
- chore: bump version 2.11.2 → 2.11.3 (#9556)
- perf(ci): install cached browser fonts with dpkg, not apt (#9554)
- fix(aaii): read sentiment.xls through the OLE2 FAT chain and parse the redesigned page (#9557)
- chore(deps): bump the npm-security group across 4 directories with 4 updates (#9553)
- fix(earthquakes): preserve failure onset after provider expiry (#9555)
- Revert "fix(sentry): minimize browser URL and identity data (#8165)" (#9549)
- perf(ci): limit Security Audit checkout to audit inputs (#9552)
- fix(chokepoints): headline the IMF PortWatch daily count against a year-earlier baseline (#9550)
- fix(deploy): build same-commit Vercel redeploys on main (#9545)
- fix(relay): count chokepoint transits between gates on each side of the narrows (#9551)
- fix(railway): enroll the provisioned seed-country-history service (#9547)
Full Changelog: https://github.com/koala73/worldmonitor/compare/convex-deployed...v2.11.3
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
World Monitor
Real-time global intelligence dashboard — AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface.

Ways to Use It
| Surface | Get it | Docs |
|---|---|---|
| Web app | worldmonitor.app and the tech, finance, commodity, happy and energy variants | Getting Started |
| Desktop app (Tauri) | Windows, macOS and Linux downloads above | Desktop App |
| Terminal dashboard | npx worldmonitor | Terminal Dashboard |
| CLI | npm install -g worldmonitor or brew install worldmonitor | Command-Line Client |
| SDKs | Python worldmonitor-sdk, Ruby worldmonitor, Go sdk/go | SDKs |
| MCP server | https://worldmonitor.app/mcp | MCP Overview |
The terminal dashboard runs the same live data in your shell: world map, news, markets, conflict, military flights, cyber, climate, prediction markets and live TV, with mouse support and colour themes. No API key needed.

What It Does
- Curated news feeds across global and regional categories, AI-synthesized into briefs
- Dual map engine — 3D globe (globe.gl) and WebGL flat map (deck.gl) with a shared map-layer catalog
- Panel inventory — concrete panel implementations across specialized variants
- Cross-stream correlation — military, economic, disaster, and escalation signal convergence
- Country Instability Index (CII) — live CII v14 scores, bands, and approximate 24-hour movement for 31 Tier-1 countries
- Finance radar — stock exchanges, commodities, crypto, and a market composite
- Local AI — run everything with Ollama, no API keys required
- Site variants from a single codebase (world, tech, finance, commodity, happy, energy)
- Native desktop app (Tauri 2) for macOS, Windows, and Linux
- Multilingual UI with native-language feeds and RTL support
For the full feature list, architecture, data sources, and algorithms, see the documentation.
Support Status
All site variants and desktop binaries are built from a single codebase and ship from the same release process. The table below clarifies maintenance status so you know which surfaces are safe to depend on.
| Surface | Status | Notes |
|---|---|---|
worldmonitor.app, tech., finance., commodity., happy., energy. | Stable | Public deployments built from this repo, actively maintained |
| Desktop binaries (Windows / macOS Apple Silicon / macOS Intel / Linux AppImage x64 and ARM64) | Stable | One Tauri binary for every variant — install World Monitor and switch to tech, finance, commodity, energy, or happy in-app. There is deliberately no per-variant download |
worldmonitor npm package (terminal dashboard and CLI) | Stable | Published from cli/ on every cli-v* tag |
Issues filed against any of the above are triaged from the same backlog — see the issues board for currently-open work.
Quick Start
One-line install (self-host the full stack with Docker — dashboard, Redis, AIS relay, seeded public data):
curl -fsSL https://www.worldmonitor.app/install.sh | bash
This clones into ./worldmonitor (or reuses your checkout), generates the required secrets, starts the stack, and seeds data. Then open localhost:3000. Options: --dir, --port, --no-seed, --no-build, passed after bash -s -- (see scripts/install.sh --help). API keys are optional. Details, production notes, and uninstall: SELF_HOSTING.md.
Local development (hot-reload Vite server):
Requires Node.js 24, the version pinned in .nvmrc. Distribution packages are often older. Debian 12 and Raspberry Pi OS ship Node.js 18 with npm 9.2.0, where npm install stops with Invalid comparator: file:vendor/braces. Install Node.js 24 with nvm (nvm install inside the checkout reads .nvmrc) or from nodejs.org.
git clone https://github.com/koala73/worldmonitor.git
cd worldmonitor
npm install
npm run dev
Open localhost:3000 (override the port with DEV_PORT in .env.local). The app runs with no environment variables.
Feature-specific data sources may require credentials. See .env.example for the full list.
For variant-specific development:
npm run dev:tech # tech.worldmonitor.app
npm run dev:finance # finance.worldmonitor.app
npm run dev:commodity # commodity.worldmonitor.app
npm run dev:happy # happy.worldmonitor.app
npm run dev:energy # energy.worldmonitor.app
See the self-hosting guide for deployment options (Vercel, Docker, static).
Tech Stack
| Category | Technologies |
|---|---|
| Frontend | Vanilla TypeScript, Vite, globe.gl + Three.js, deck.gl + MapLibre GL |
| Desktop | Tauri 2 (Rust) with Node.js sidecar |
| AI/ML | Ollama / OpenRouter, Transformers.js (browser-side) |
| API Contracts | Protocol Buffers and sebuf HTTP annotations |
| Deployment | Vercel Edge Functions, Railway relay, Tauri, PWA |
| Caching | Redis (Upstash), 3-tier cache, CDN, service worker |
Full stack details in the architecture docs.
Programmatic Access
World Monitor is built for agents and scripts as well as browsers:
-
MCP server —
https://worldmonitor.app/mcp(Streamable HTTP). Publictools/list;tools/callauthenticates with aX-WorldMonitor-Keyheader or OAuth. The server also publishes its Agent Skills through the draftio.modelcontextprotocol/skillsextension (skills/list,skills/get, andskill://…resource reads). -
Google Antigravity and Gemini listing preparation — install the bundled Antigravity plugin (
.antigravity-plugin/plugin.json+mcp_config.json) withagy plugin install ./worldmonitor. Gemini custom apps and Connected Apps sign in through Google's OAuth callbacks. See Gemini and Antigravity. -
REST API — base
https://api.worldmonitor.app, described by the OpenAPI spec. -
CLI — the official
worldmonitornpm package (source incli/). Run it with no arguments in a terminal for the terminal dashboard:npx worldmonitor tools # run ad-hoc — list every MCP tool (no key needed) npm install -g worldmonitor # or install the `worldmonitor` (alias `wm`) command brew install worldmonitor # or install it with Homebrew worldmonitor risk IR --api-key wm_xxx -
SDKs — official zero-dependency client libraries mirroring the CLI: Python
worldmonitor-sdk(source insdk/python/), Rubyworldmonitor(sdk/ruby/), Gogithub.com/koala73/worldmonitor/sdk/go(sdk/go/). Guide: worldmonitor.app/docs/sdks.
Agent discovery files: llms.txt · agent-skills manifest · api-catalog. Get an API key at worldmonitor.app/pro.
Flight Data
Flight data provided graciously by Wingbits, the most advanced ADS-B flight data solution.
Supported By
World Monitor's web app and API run on Vercel. Thank you to Vercel for their generous support of the project.
Data Sources
WorldMonitor aggregates attributed upstream sources across geopolitics, finance, energy, climate, aviation, cyber, military, infrastructure, and news intelligence. Curated feeds and freshness-tracked source groups are published in the full data sources catalog, with provider, feed-tier, license-posture, and collection-method details.
Contributing
Contributions welcome! See CONTRIBUTING.md for guidelines.
npm run typecheck # Type checking
npm run build:full # Production build
License
AGPL-3.0-only for the source code. Commercial use is permitted under the AGPL when you comply with its copyleft and source-availability terms.
| Use Case | Allowed? |
|---|---|
| Personal / research / educational | Yes, under AGPL-3.0-only |
| Self-hosted instance | Yes, under AGPL-3.0-only |
| Fork and modify | Yes, share source under AGPL-3.0-only when required |
| Commercial use / SaaS | Yes, under AGPL-3.0-only when you comply with AGPL obligations |
| Private-source proprietary use or official branding rights | Separate commercial or trademark permission needed |
See LICENSE for the full code license and docs/license.mdx for a plain-language summary. Commercial licensing is available as an alternative option for teams that need non-AGPL terms.
Copyright (C) 2024-2026 Elie Habib. All rights reserved.
Author
Elie Habib — GitHub
Contributors
Security Acknowledgments
We thank the following researchers for responsibly disclosing security issues:
- Cody Richard — Disclosed three security findings covering IPC command exposure, renderer-to-sidecar trust boundary analysis, and fetch patch credential injection architecture (2026)
See our Security Policy for responsible disclosure guidelines.