Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface https://worldmonitor.app
  • TypeScript 50.3%
  • JavaScript 47.8%
  • CSS 1.2%
  • HTML 0.2%
  • Shell 0.2%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Elie Habib 93846bdb40
docs(openapi): declare X-Trust-Review-Key on the error-report review operations (#9194)
* docs(openapi): declare X-Trust-Review-Key on the error-report review operations

ListErrorReports and ReviewErrorReport skip the gateway API-key check
(PUBLIC_NO_AUTH_RPC_PATHS) and 401 in the handler without
X-Trust-Review-Key, but the generated spec published security: [] and
no 401. The security injector gains a third credential class: a
TrustReviewKey apiKey scheme, stamped per operation with a 401 that
references the handler's { message } Error body, on the JSON and the
surgical YAML paths. TRUST_REVIEW_KEY_PATHS is single-sourced in
scripts/lib/openapi-codegen.mjs; the injector fails closed if a path
leaves PUBLIC_NO_AUTH_RPC_PATHS or joins a bearer or public-403 source,
and the contract test checks the set against every operation whose
description names the header.

Fixes #9192

Claude-Session: https://claude.ai/code/session_01VWpKXJfGokgi1kLNig7cHC

* fix(openapi): drop unreferenced security schemes from the served JSON

The review-key operations are excluded from public/openapi.json, so
TrustReviewKey shipped there as an orphan worth 243 bytes of the
scanner budget. buildBundle now drops any scheme no security entry
names. The contract test also counts isTrustReviewer call sites against
TRUST_REVIEW_KEY_PATHS, and the 401 description covers an unset
TRUST_REVIEW_SECRET.

Claude-Session: https://claude.ai/code/session_01VWpKXJfGokgi1kLNig7cHC
2026-10-16 19:37:33 +04:00
.agents/skills feat(aviation): add reported aircraft emergency layer (#9164) 2026-10-16 08:07:45 +04:00
.audit feat(supply-chain): score commodity vulnerabilities (#7401) 2026-08-30 19:18:56 +00:00
.github Add Verification Desk: live stage demo with WorldMonitor integration (#9083) 2026-10-16 16:35:15 +04:00
.husky feat(aviation): add reported aircraft emergency layer (#9164) 2026-10-16 08:07:45 +04:00
api feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
blog-site fix(welcome): product-led homepage H1 and canonical meta description (#9156) 2026-10-16 13:07:45 +02:00
cli fix: bound URL trimming and preserve diagnostic text 2026-09-09 17:14:29 +04:00
consumer-prices-core build(deps): bump the npm-security group across 3 directories with 3 updates (#8879) 2026-10-06 01:44:26 +00:00
convex fix(convex): spread lastUsedAt touches so a validation burst stops racing (#9169) 2026-10-16 10:32:15 +04:00
data feat(forecast): freeze and reconcile evaluation cohorts entry by entry (#7066) (#9062) 2026-10-08 21:13:27 -04:00
demos/verification-desk build(deps): bump esbuild and tsx in /demos/verification-desk (#9185) 2026-10-16 17:09:17 +04:00
deploy/nginx Add Brotli-first API compression for sidecar and nginx 2026-02-20 08:41:22 +04:00
docker fix(deps): patch sharp librsvg and shell-quote quote() alerts (#9035) 2026-10-08 07:58:15 +04:00
docs docs(openapi): declare X-Trust-Review-Key on the error-report review operations (#9194) 2026-10-16 19:37:33 +04:00
e2e fix: disclose annual periods for IMF economic indicators (#9181) 2026-10-16 16:21:16 +04:00
pro-test feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
proto feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
public docs(openapi): declare X-Trust-Review-Key on the error-report review operations (#9194) 2026-10-16 19:37:33 +04:00
scripts docs(openapi): declare X-Trust-Review-Key on the error-report review operations (#9194) 2026-10-16 19:37:33 +04:00
sdk fix: bound URL trimming and preserve diagnostic text 2026-09-09 17:14:29 +04:00
server feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
shared feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
skills feat(trade): partner and product-group tariff averages in get-tariff-trends (#9088) 2026-10-10 13:03:34 -04:00
src feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
src-tauri chore: bump version 2.10.0 → 2.11.0 (#9182) 2026-10-16 16:18:09 +04:00
tests docs(openapi): declare X-Trust-Review-Key on the error-report review operations (#9194) 2026-10-16 19:37:33 +04:00
vendor fix(deps): repair and triage Dependabot alerts (#8899) 2026-10-06 01:39:57 -04:00
workers build(deps): bump the npm-security group across 1 directory with 5 updates (#9125) 2026-10-16 14:59:13 +04:00
.dockerignore refactor(inventory): derive extensible count contracts (#6736) 2026-08-16 09:45:35 +04:00
.env.example feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
.gitattributes feat(scorecard): add five-factor resilience scorecards (#7398) 2026-08-30 13:51:46 +04:00
.gitignore chore(gitignore): ignore every dotenv variant except the committed examples (#9121) 2026-10-13 17:51:41 +02:00
.impeccable.md fix(docs): explain how to find and replace API keys (#5181) 2026-07-10 17:05:15 +04:00
.markdownlint-cli2.jsonc fix(review): address code review findings for theater presets (#6023) 2026-08-02 15:34:18 +04:00
.npmrc fix(security): backport brace depth and restricted cache reuse guards (#8821) 2026-10-04 14:18:29 +04:00
.nvmrc build(deps): standardize on node 24 LTS (containers + CI + Dependabot) (#4709) 2026-07-05 19:38:12 +04:00
.vercelignore fix(deploy): exclude api/**/*.test.mjs from Vercel deployment (#4821) (#4822) 2026-07-05 10:14:15 +00:00
AGENTS.md docs(agents): carry operational debugging through verified repair (#8746) 2026-09-29 19:46:02 -04:00
ARCHITECTURE.md fix(plugin): retain loaded article identity in news interaction receipts (#8828) 2026-10-05 02:20:51 -04:00
biome.json fix(military): stop seed-military-flights crashing on every run (#6128) 2026-08-03 23:49:46 +04:00
CHANGELOG.md feat(forecast): stop publishing projections; deprecate Forecast.projections (#8967) (#8980) 2026-10-07 06:26:32 -04:00
CODE_OF_CONDUCT.md docs: add community guidelines (contributing, code of conduct, security) (#226) 2026-02-22 16:26:13 +02:00
compound-engineering.local.md feat(finance-panels): add 7 macro/market panels + Daily Brief context (issues #2245-#2253) (#2258) 2026-03-26 08:03:09 +04:00
CONCEPTS.md docs(solutions): ledger competitor claims on comparison pages before shipping (#9184) 2026-10-16 16:40:13 +04:00
CONTRIBUTING.md ci(codeql): prune stale overlay-base caches after each default-branch scan (#8718) 2026-09-29 16:20:20 +04:00
country.html feat(mcp): meter country briefs as bounded user requests 2026-10-02 08:11:01 -04:00
docker-compose.yml feat(classify): let Jev calls use TYPESAFE_BASE_URL (#8801) 2026-10-07 18:23:50 +00:00
Dockerfile fix(deps): repair and triage Dependabot alerts (#8899) 2026-10-06 01:39:57 -04:00
Dockerfile.digest-notifications chore(deps): bump node from 50c8e8c to ebfe2f9 2026-09-24 16:13:49 +00:00
Dockerfile.publish-bootstrap-tiers chore(deps): bump node from 50c8e8c to ebfe2f9 2026-09-24 16:13:49 +00:00
Dockerfile.relay fix(relay): vet and pin DNS answers for the public /rss proxy (#9116) 2026-10-13 17:52:39 +02:00
Dockerfile.seed-bundle-portwatch-port-activity chore(deps): bump node from 50c8e8c to ebfe2f9 2026-09-24 16:13:49 +00:00
Dockerfile.seed-bundle-resilience-validation chore(deps): bump node from 50c8e8c to ebfe2f9 2026-09-24 16:13:49 +00:00
Dockerfile.umami fix(deps): bump node from ebfe2f9 to ebfe2f9 2026-10-01 16:17:44 +00:00
Dockerfile.umami-retention chore(deps): bump postgres from d3e1620 to 77f5851 2026-09-24 16:13:36 +00:00
embed.html fix(a11y): heading outline and landmark structure for the dashboard and secondary shells (#7029) 2026-08-21 11:38:41 +04:00
index.html fix(welcome): product-led homepage H1 and canonical meta description (#9156) 2026-10-16 13:07:45 +02:00
LICENSE fix(license): put AGPL title first for detection (#6576) (#6583) 2026-08-13 17:05:57 +00:00
live-channels.html fix(browser): bound /pro DebugBear errors, follow OS theme on first visit (#8598) 2026-09-24 13:01:29 +04:00
Makefile fix(mcp): give API tiers the MCP budget the docs promised (#7514) 2026-09-02 14:40:07 +02:00
market.html fix(mcp): restore loaded market charts and quote details (#8813) 2026-10-04 00:54:38 +04:00
mcp-grant.html fix(a11y): announce breaking news alerts and name icon-only controls (#6581) 2026-08-18 13:07:04 +04:00
mcp.json feat(agent-readiness): add Agent Plugins plugin.json manifest (#7342) 2026-08-29 17:05:38 +04:00
middleware.ts fix(mcp): preserve live smoke diagnostics (#8455) 2026-09-21 16:51:32 +04:00
nixpacks.toml fix(railway): tolerate Ubuntu apt mirror failures in NIXPACKS + Dockerfile builds (#3142) 2026-04-17 08:35:20 +04:00
package-lock.json chore: bump version 2.10.0 → 2.11.0 (#9182) 2026-10-16 16:18:09 +04:00
package.json chore: bump version 2.10.0 → 2.11.0 (#9182) 2026-10-16 16:18:09 +04:00
playwright.config.ts ci(e2e): count browser crashes at run scope so a green job cannot hide one (#8549) 2026-09-24 07:24:41 +04:00
plugin.html feat(mcp): apply one-request metering to every embedded panel 2026-10-02 09:43:42 -04:00
plugin.json chore: bump version 2.10.0 → 2.11.0 (#9182) 2026-10-16 16:18:09 +04:00
README.ja-JP.md chore(llm): remove Groq from every LLM chain, setting, and doc (#8885) (#8903) 2026-10-06 10:47:37 +04:00
README.md chore(llm): remove Groq from every LLM chain, setting, and doc (#8885) (#8903) 2026-10-06 10:47:37 +04:00
README.ru.md chore(llm): remove Groq from every LLM chain, setting, and doc (#8885) (#8903) 2026-10-06 10:47:37 +04:00
README.zh-CN.md chore(llm): remove Groq from every LLM chain, setting, and doc (#8885) (#8903) 2026-10-06 10:47:37 +04:00
SECURITY.md docs(security): point MCP DNS residual to active advisory (#8415) 2026-09-20 10:50:29 +04:00
SELF_HOSTING.md chore(llm): remove Groq from every LLM chain, setting, and doc (#8885) (#8903) 2026-10-06 10:47:37 +04:00
server.json feat(verify): verify_claim MCP tool and /verify page — evidence card for a claim (#9092) (#9098) 2026-10-16 15:27:25 +02:00
settings.html fix(browser): bound /pro DebugBear errors, follow OS theme on first visit (#8598) 2026-09-24 13:01:29 +04:00
tsconfig.api.json feat(mcp): retire product aliases onto https://worldmonitor.app/mcp (#8468) 2026-09-21 17:21:13 +04:00
tsconfig.contract-tests.json test(company-monitoring): add sealed evidence curation gate (#6488) 2026-08-12 13:55:57 +04:00
tsconfig.dom-tests.json feat(webmcp): finalize production readiness (#7050) 2026-08-26 15:15:55 +04:00
tsconfig.json fix(analytics): attach CollectorTransportError.cause via ErrorOptions (#8157) 2026-09-15 04:40:48 +02:00
vercel.json feat(trust): /trust page with today's label counts and recent changes (#9093, part 3) (#9108) 2026-10-16 16:45:38 +02:00
verify.html feat(verify): cite published fact-checks on /verify and in verify_claim (#9094) (#9111) 2026-10-16 16:59:51 +02:00
vite.config.ts feat(verify): verify_claim MCP tool and /verify page — evidence card for a claim (#9092) (#9098) 2026-10-16 15:27:25 +02:00
vite.plugin.config.ts fix(mcp): restore loaded market charts and quote details (#8813) 2026-10-04 00:54:38 +04:00
vitest.config.mts fix(convex): stop a one-dot test helper from failing every convex deploy (#6232 follow-up) (#6373) 2026-08-09 21:26:06 +04:00
vitest.dom.config.mts test(dom): set a 15s testTimeout and stop billing data-loader transform to the first test (#7008) 2026-08-20 17:32:32 +04:00

World Monitor

简体中文 | 日本語 | Русский

Real-time global intelligence dashboard — AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface.

GitHub stars License: AGPL v3 TypeScript Last commit Latest release npm: worldmonitor skills.sh

Web App  Tech Variant  Finance Variant  Commodity Variant  Happy Variant  Energy Variant

npm i worldmonitor  npx worldmonitor  pip install worldmonitor-sdk  gem install worldmonitor  go get github.com/koala73/worldmonitor/sdk/go

Download Windows  Download macOS ARM  Download macOS Intel  Download Linux

Documentation  ·  Releases  ·  Contributing

World Monitor Dashboard


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 v8 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) 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

Issues filed against any of the above are triaged from the same backlog — see the issues board for currently-open work.


Quick Start

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). Public tools/list; tools/call authenticates with a X-WorldMonitor-Key header or OAuth. The server also publishes its Agent Skills through the draft io.modelcontextprotocol/skills extension (skills/list, skills/get, and skill://… resource reads).

  • REST API — base https://api.worldmonitor.app, described by the OpenAPI spec.

  • CLI — the official worldmonitor npm package (source in cli/):

    npx worldmonitor tools          # run ad-hoc — list every MCP tool (no key needed)
    npm install -g worldmonitor     # or install the `worldmonitor` (alias `wm`) command
    worldmonitor risk IR --api-key wm_xxx
    
  • SDKs — official zero-dependency client libraries mirroring the CLI: Python worldmonitor-sdk (source in sdk/python/), Ruby worldmonitor (sdk/ruby/), Go github.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.


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.


worldmonitor.app  ·  docs.worldmonitor.app  ·  finance.worldmonitor.app  ·  commodity.worldmonitor.app

Star History

Star History Chart