MCPcopy
hub / github.com/koala73/worldmonitor

github.com/koala73/worldmonitor @v2.5.23 sqlite

repository ↗ · DeepWiki ↗ · release v2.5.23 ↗
5,100 symbols 11,532 edges 493 files 184 documented · 4%
README

World Monitor

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

GitHub stars GitHub forks License: AGPL v3 TypeScript Last commit Latest release

Web App  Tech Variant  Finance Variant

Download Windows  Download macOS ARM  Download macOS Intel  Download Linux

Full Documentation  ·  All Releases

World Monitor Dashboard


Why World Monitor?

Problem Solution
News scattered across 100+ sources Single unified dashboard with 100+ curated feeds
No geospatial context for events Interactive map with 40+ toggleable data layers
Information overload AI-synthesized briefs with focal point detection and local LLM support
Crypto/macro signal noise 7-signal market radar with composite BUY/CASH verdict
Expensive OSINT tools ($$$) 100% free & open source
Static news feeds Real-time updates with live video streams and AI-powered deductions
Cloud-dependent AI tools Run AI locally with Ollama/LM Studio — no API keys, no data leaves your machine. Opt-in Headline Memory builds a local semantic index of every headline for RAG-powered queries
Web-only dashboards Native desktop app (Tauri) for macOS, Windows, and Linux + installable PWA with offline map support
Flat 2D maps 3D WebGL globe with deck.gl rendering and 40+ toggleable data layers
Siloed financial data Finance variant with 92 stock exchanges, 19 financial centers, 13 central banks, BIS data, WTO trade policy, and Gulf FDI tracking
Undocumented, fragile APIs Proto-first API contracts — 20 typed services with auto-generated clients, servers, and OpenAPI docs

Live Demos

Variant URL Focus
World Monitor worldmonitor.app Geopolitics, military, conflicts, infrastructure
Tech Monitor tech.worldmonitor.app Startups, AI/ML, cloud, cybersecurity
Finance Monitor finance.worldmonitor.app Global markets, trading, central banks, Gulf FDI
Happy Monitor happy.worldmonitor.app Good news, positive trends, uplifting stories

All four variants run from a single codebase — switch between them with one click via the header bar.


Key Features

Localization & Regional Support

  • Multilingual UI — Fully localized interface supporting 16 languages: English, French, Spanish, German, Italian, Polish, Portuguese, Dutch, Swedish, Russian, Arabic, Chinese, Japanese, Turkish, Thai, and Vietnamese. Language bundles are lazy-loaded on demand — only the active language is fetched, keeping initial bundle size minimal.
  • RTL Support — Native right-to-left layout support for Arabic (ar) and Hebrew.
  • Localized News Feeds — Region-specific RSS selection based on language preference (e.g., viewing the app in French loads Le Monde, Jeune Afrique, and France24). 17 locales have dedicated native-language feed sets: French, Arabic, German, Spanish, Italian, Dutch, Swedish, Turkish (BBC Türkçe, Hurriyet, DW Turkish), Polish (TVN24, Polsat News, Rzeczpospolita), Russian (BBC Russian, Meduza, Novaya Gazeta Europe), Thai (Bangkok Post, Thai PBS), Vietnamese (VnExpress, Tuoi Tre News), Korean (Yonhap, Chosun Ilbo), Greek (Kathimerini, Naftemporiki, in.gr, Proto Thema), Portuguese (O Globo, Folha), Japanese (Asahi Shimbun), and Chinese (MIIT, MOFCOM). On first load for non-English users, a one-time locale boost automatically enables these native-language sources without overwriting manual preferences.
  • AI Translation — Integrated LLM translation for news headlines and summaries, enabling cross-language intelligence gathering.
  • Regional Intelligence — Dedicated monitoring panels for Africa, Latin America, Middle East, and Asia with local sources.

Interactive 3D Globe

  • WebGL-accelerated rendering — deck.gl + MapLibre GL JS for smooth 60fps performance with thousands of concurrent markers. Switchable between 3D globe (with pitch/rotation) and flat map mode via VITE_MAP_INTERACTION_MODE
  • 40+ data layers — conflicts, military bases, nuclear facilities, undersea cables, pipelines, satellite fire detection, protests, natural disasters, datacenters, displacement flows, climate anomalies, cyber threat IOCs, GPS/GNSS jamming zones, stock exchanges, financial centers, central banks, commodity hubs, Gulf investments, trade routes, airport delays, and more
  • Smart clustering — Supercluster groups markers at low zoom, expands on zoom in. Cluster thresholds adapt to zoom level
  • Progressive disclosure — detail layers (bases, nuclear, datacenters) appear only when zoomed in; zoom-adaptive opacity fades markers from 0.2 at world view to 1.0 at street level
  • Label deconfliction — overlapping labels (e.g., multiple BREAKING badges) are automatically suppressed by priority, highest-severity first
  • 8 regional presets — Global, Americas, Europe, MENA, Asia, Africa, Oceania, Latin America
  • Time filtering — 1h, 6h, 24h, 48h, 7d event windows
  • URL state sharing — map center, zoom, active layers, and time range are encoded in the URL for shareable views (?view=mena&zoom=4&layers=conflicts,bases)
  • Mobile touch gestures — single-finger pan with inertial velocity animation (0.92 decay factor, computed from 4-entry circular touch history), two-finger pinch-to-zoom with center-point preservation, and bottom-sheet popups with drag-to-dismiss. An 8px movement threshold prevents accidental interaction during taps
  • Timezone-based region detection — on first load, the map centers on the user's approximate region derived from Intl.DateTimeFormat().resolvedOptions().timeZone — no network dependency, no geolocation prompt. If the Geolocation permission is already granted, it upgrades to precise coordinates silently

AI-Powered Intelligence

  • World Brief — LLM-synthesized summary of top global developments with a 4-tier provider fallback chain: Ollama (local) → Groq (cloud) → OpenRouter (cloud) → browser-side T5 (Transformers.js). Each tier is attempted with a 5-second timeout before falling through to the next, so the UI is never blocked. Results are Redis-cached (24h TTL) and content-deduplicated so identical headlines across concurrent users trigger exactly one LLM call
  • Local LLM Support — Ollama and LM Studio (any OpenAI-compatible endpoint) run AI summarization entirely on local hardware. No API keys required, no data leaves the machine. The desktop app auto-discovers available models from the local instance and populates a selection dropdown, filtering out embedding-only models. Default fallback model: llama3.1:8b
  • AI Deduction & Forecasting — an interactive geopolitical analysis tool where analysts enter a free-text query (e.g., "What will happen in the next 24 hours in the Middle East?") and receive an LLM-generated near-term timeline deduction. The panel auto-populates context from the 15 most recent live headlines via buildNewsContext(), so the AI always has current situational awareness. Other panels can pre-fill and auto-submit queries via the wm:deduct-context custom event for seamless cross-panel deep-linking into contextual forecasts. Results are Redis-cached (1-hour TTL) by query hash to avoid redundant LLM calls
  • Headline Memory (RAG) — an opt-in client-side Retrieval-Augmented Generation system. When enabled in Settings, every incoming RSS headline is embedded using an ONNX model (all-MiniLM-L6-v2, 384-dimensional float32 vectors) running in a dedicated Web Worker, then stored in IndexedDB (worldmonitor_vector_store, capped at 5,000 vectors with LRU eviction by ingestion time). Any component can semantically search the headline archive using natural-language queries — results are ranked by brute-force cosine similarity and returned in score order. The entire pipeline runs locally in the browser with zero server dependency, enabling persistent semantic intelligence across sessions
  • Hybrid Threat Classification — instant keyword classifier with async LLM override for higher-confidence results
  • Focal Point Detection — correlates entities across news, military activity, protests, outages, and markets to identify convergence
  • Country Instability Index — real-time stability scores for every country with incoming data using weighted multi-signal blend. 23 curated tier-1 nations have tuned baseline risk profiles; all other countries receive universal scoring with sensible defaults when any event data (protests, conflicts, outages, displacement, climate anomalies) is detected
  • Trending Keyword Spike Detection — 2-hour rolling window vs 7-day baseline flags surging terms across RSS feeds, with CVE/APT entity extraction and auto-summarization
  • Strategic Posture Assessment — composite risk score combining all intelligence modules with trend detection
  • Country Brief Pages — click any country for a full-page intelligence dossier with CII score ring, AI-generated analysis, top news with citation anchoring, prediction markets, 7-day event timeline, active signal chips, infrastructure exposure, and stock market index — exportable as JSON, CSV, or image

Real-Time Data Layers

Geopolitical

  • Active conflict zones with escalation tracking (UCDP + ACLED)
  • Intelligence hotspots with news correlation
  • Social unrest events (dual-source: ACLED protests + GDELT geo-events, Haversine-deduplicated)
  • Natural disasters from 3 sources (USGS earthquakes M4.5+, GDACS alerts, NASA EONET events)
  • Sanctions regimes
  • Cyber threat IOCs (C2 servers, malware hosts, phishing, malicious URLs) geo-located on the globe
  • GPS/GNSS jamming zones from ADS-B transponder analysis (H3 hex grid, interference % classification)
  • Weather alerts and severe conditions

Military & Strategic

  • 220+ military bases from 9 operators
  • Live military flight tracking (ADS-B)
  • Naval vessel monitoring (AIS)
  • Nuclear facilities & gamma irradiators
  • APT cyber threat actor attribution
  • Spaceports & launch facilities

Infrastructure

  • Undersea cables with landing points, cable health advisories (NGA navigational warnings), and cable repair ship tracking
  • Oil & gas pipelines
  • AI data

Extension points exported contracts — how you extend this code

AppModule (Interface)
(no doc) [18 implementers]
src/app/app-context.ts
PreparedCluster (Interface)
Prepared cluster data for rendering
src/components/NewsPanel.ts
ImportMetaEnv (Interface)
(no doc)
src/vite-env.d.ts
DeductContextDetail (Interface)
(no doc)
src/types/index.ts
GeoResult (Interface)
(no doc)
src/utils/reverse-geocode.ts
InvestmentsMapLike (Interface)
(no doc)
src/services/investments-focus.ts
InitMessage (Interface)
(no doc)
src/workers/ml.worker.ts
EventTargetLike (Interface)
(no doc)
src/bootstrap/chunk-reload.ts

Core symbols most depended-on inside this repo

t
called by 1533
src/services/i18n.ts
escapeHtml
called by 592
src/utils/sanitize.ts
rss
called by 445
src/config/feeds.ts
h
called by 230
src/utils/dom-utils.ts
match
called by 211
server/router.ts
getCSSColor
called by 136
src/utils/theme-colors.ts
text
called by 117
src/utils/dom-utils.ts
text
called by 90
src/components/DeckGLMap.ts

Shape

Function 1,844
Method 1,740
Interface 1,128
Class 388

Languages

TypeScript100%

Modules by API surface

src/components/DeckGLMap.ts194 symbols
src/components/Map.ts115 symbols
scripts/ais-relay.cjs97 symbols
src/types/index.ts85 symbols
src/components/MapContainer.ts76 symbols
src/components/MapPopup.ts74 symbols
src/app/data-loader.ts69 symbols
src/components/LiveNewsPanel.ts63 symbols
src/generated/client/worldmonitor/economic/v1/service_client.ts57 symbols
src/generated/server/worldmonitor/economic/v1/service_server.ts56 symbols
src/services/country-instability.ts54 symbols
src/components/Panel.ts53 symbols

Dependencies from manifests, versioned

@deck.gl/aggregation-layers9.2.6 · 1×
@deck.gl/core9.2.6 · 1×
@deck.gl/geo-layers9.2.6 · 1×
@deck.gl/layers9.2.6 · 1×
@deck.gl/mapbox9.2.6 · 1×
@playwright/test1.52.0 · 1×
@sentry/browser10.39.0 · 1×
@tauri-apps/cli2.10.0 · 1×
@types/canvas-confetti1.9.0 · 1×
@types/d37.4.3 · 1×
@types/dompurify3.0.5 · 1×
@types/maplibre-gl1.13.2 · 1×

For agents

$ claude mcp add worldmonitor \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact