1. Project Overview & Quickstart (koala73/worldmonitor)
File: README.md
World Monitor
Real-time global intelligence dashboard โ AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface.
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) โ server-authoritative CII v8 stress scoring for the Tier-1 registry
- 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 devOpen 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.appSee 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 / Groq / 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.REST API โ base
https://api.worldmonitor.app, described by the OpenAPI spec.CLI โ the official
worldmonitornpm package (source incli/):shnpx worldmonitor tools # run ad-hoc โ list every MCP tool (no key needed) npm install worldmonitor # or install the `worldmonitor` (alias `wm`) command worldmonitor risk IR --api-key wm_xxxSDKs โ 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.
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 buildLicense
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.
Star History
File: docs/COMMUNITY-PROMOTION-GUIDE.md
World Monitor โ Community Promotion Guide
Thank you for helping spread the word about World Monitor! This guide provides talking points, must-see features, and visual suggestions to help you create compelling content for your audience.
What is World Monitor?
One-line pitch: A free, open-source, real-time global intelligence dashboard โ like Bloomberg Terminal meets OSINT, for everyone.
Longer description: World Monitor aggregates curated news feeds, military tracking, financial markets, conflict data, protest monitoring, satellite imagery, and AI-powered analysis into a single unified dashboard with an interactive globe. Available as a web app, desktop app (macOS/Windows/Linux), and installable PWA.
Key URLs
| Link | Description |
|---|---|
| worldmonitor.app | Main dashboard โ geopolitics, military, conflicts |
| tech.worldmonitor.app | Tech variant โ startups, AI/ML, cybersecurity |
| finance.worldmonitor.app | Finance variant โ markets, exchanges, central banks |
| commodity.worldmonitor.app | Commodity variant โ mining, metals, energy, supply chains |
| happy.worldmonitor.app | Happy variant โ positive news, breakthroughs, conservation |
| energy.worldmonitor.app | Energy variant โ oil, gas, chokepoints, energy security |
| GitHub | Source code (AGPL-3.0) |
Must-See Features (Top 10)
1. Interactive Globe with a Registry-Backed Layer Catalog
The centerpiece. A WebGL-accelerated globe (deck.gl) with toggleable layers for conflicts, military bases, nuclear facilities, undersea cables, pipelines, satellite fires, protests, cyber threats, and more. Zoom in and the detail layers progressively reveal.
Show: Toggle different layers on/off. Zoom into a conflict region. Show the layer panel.
2. AI-Powered World Brief
One-click AI summary of the top global developments. Three-tier LLM provider chain: local Ollama/LM Studio (fully private, offline), Groq (fast cloud), or OpenRouter (fallback). Redis caching for instant responses on repeat queries.
Show: The summary card at the top of the news panel.
3. Country Intelligence Dossiers
Click any country on the map for a full-page intelligence brief: instability score ring, AI-generated analysis, top headlines, prediction markets, 7-day event timeline, active signal chips, infrastructure exposure, and stock market data.
Show: Click a country (e.g., Japan, Ukraine, or Iran) โ full dossier page.
4. Multilingual Support
The UI follows the runtime locale registry, including Japanese, Swahili, and right-to-left bundles. Regional news feeds auto-adapt โ Japanese users see NHK World, Nikkei Asia, and Japan-relevant sources. Language bundles are lazy-loaded for fast performance.
Show: Switch language to Japanese in the settings. Note how feeds change.
5. Live Military Tracking
Real-time ADS-B military flight tracking and AIS naval vessel monitoring. Strategic Posture panel shows theater-level risk assessment across 9 global regions (Baltic, Black Sea, South China Sea, Eastern Mediterranean, etc.).
Show: Enable the Military layer. Show the Strategic Posture panel.
6. Variant Dashboards
One codebase, specialized views โ switch between World (geopolitics), Tech (startups/AI), Finance (markets/exchanges), Commodity (resources/supply chains), Happy (positive global trends), and Energy (energy security) with one click in the header bar.
Show: Click the variant switcher and cycle through World, Tech, Finance, Commodity, Happy, and Energy.
7. Market & Crypto Intelligence
7-signal macro radar with composite BUY/CASH verdict, BTC spot ETF flow tracker, stablecoin peg monitor, Fear & Greed Index, and Bitcoin technical indicators. Sparkline charts and donut gauges for visual trends.
Show: Scroll to the crypto/market panels. Point out the sparklines.
8. Live Video & Webcam Feeds
Registry-backed live news streams and webcams from geopolitical hotspots across regions. Idle-aware โ auto-pauses after 5 minutes of inactivity.
Show: Open the video panel or webcam panel.
9. Desktop Application (Free)
Native app for macOS, Windows, and Linux via Tauri. API keys stored in OS keychain (not plaintext). The local Node.js sidecar runs the supported API handler catalog offline-capable. Run local LLMs for fully private, offline AI summaries.
Show: The download buttons on the site, or the desktop app running natively.
10. Story Sharing & Social Export
Generate intelligence briefs for any country and share to Twitter/X, LinkedIn, WhatsApp, Telegram, Reddit. Includes canvas-rendered PNG images with QR codes linking back to the live dashboard.
Show: Generate a story for a country โ share dialog with platform options.
11. Local LLM Support (Ollama / LM Studio)
Run AI summarization entirely on your own hardware โ no API keys, no cloud, no data leaving your machine. The desktop app auto-discovers models from Ollama or LM Studio, with a three-tier fallback chain: local โ Groq โ OpenRouter. Settings are split into dedicated LLMs and API Keys tabs for easy configuration.
Show: Open Settings โ LLMs tab โ Ollama model dropdown auto-populated โ generate a summary with the local model.
Visual Content Suggestions
Screenshots Worth Taking
- Full dashboard overview โ globe in center, panels on sides, news feed visible
- Country dossier page โ click Japan or a hotspot country, show the full brief
- Layer toggle demo โ before/after with conflicts + military bases enabled
- Finance variant โ stock exchanges, financial centers, market panels
- Japanese UI โ show the language switcher and Japanese interface
- Webcam grid โ live feeds from different regions
- Strategic Posture โ theater risk levels panel
- Settings LLMs tab โ Ollama model dropdown with local models discovered
Video/GIF Ideas
- 30-second tour: Open site โ rotate globe โ toggle layers โ click country โ show brief
- Language switch: English โ Japanese, show how feeds adapt
- Layer stacking: Start empty โ add conflicts โ military โ cyber โ fires โ wow
- Variant switching: World โ Tech โ Finance in quick succession
Talking Points for Posts
For General Audience
- "An open-source Bloomberg Terminal for everyone โ free, no login required"
- "Curated news sources, military tracking, AI analysis โ all in one dashboard"
- "Run AI summaries locally with Ollama โ your data never leaves your machine"
- "Available in Japanese with NHK and Nikkei feeds built in"
- "Native desktop app for macOS/Windows/Linux, completely free"
For Tech Audience
- "Built with TypeScript, Vite, deck.gl, MapLibre GL, Tauri"
- "A registry-backed WebGL map layer catalog"
- "ONNX Runtime Web for browser-based ML inference (sentiment, NER, summarization)"
- "Local LLM support โ plug in Ollama or LM Studio, zero cloud dependency"
- "Open source under AGPL-3.0 โ contribute on GitHub"
For Finance/OSINT Audience
- "7-signal crypto macro radar with BUY/CASH composite verdict"
- "Global stock exchanges mapped with market caps and trading hours"
- "Country Instability Index tracking 31 Tier-1 countries in real time"
- "Prediction market integration for geopolitical forecasting"
- "Air-gapped AI analysis โ run Ollama locally for sensitive intelligence work"
For Japanese Audience Specifically
- ๆฅๆฌ่ชๅฎๅ จๅฏพๅฟ โ UIใใใฅใผในใใฃใผใใAI่ฆ็ดใในใฆๆฅๆฌ่ชใงๅฉ็จๅฏ่ฝ
- NHK Worldใๆฅ็ตใขใธใขใชใฉๆฅๆฌๅใใใฅใผในใฝใผในๅ ่ต
- ็กๆใปใชใผใใณใฝใผใน โ ใขใซใฆใณใ็ป้ฒไธ่ฆ
- macOS/Windows/Linuxๅฏพๅฟใฎใในใฏใใใใขใใชใใ
Recent Major Features (Changelog Highlights)
| Version | Feature |
|---|---|
| v2.5.1 | Batch FRED fetching, parallel UCDP, partial cache TTL, bot middleware |
| v2.5.0 | Ollama/LM Studio local LLM support, settings split into LLMs + API Keys tabs, keychain vault consolidation |
| v2.4.1 | Ultra-wide layout (panels wrap around map on 2000px+ screens) |
| v2.4.0 | Live webcams from 19 geopolitical hotspots, 4 regions |
| v2.3.9 | Full i18n foundation; introduced Japanese, Arabic (RTL), Chinese, and other localized interfaces |
| v2.3.8 | Finance variant with exchange coverage, Gulf FDI investments |
| v2.3.7 | Light/dark theme system, UCDP/UNHCR/Climate panels |
| v2.3.6 | Desktop app with Tauri, OS keychain, auto-updates |
| v2.3.0 | Country Intelligence dossiers, story sharing |
Branding Notes
- Name: "World Monitor" (two words, capitalized)
- Tagline: "Real-time global intelligence dashboard"
- License: AGPL-3.0 (free and open source)
- Creator: Credit "World Monitor by Elie Habib" or link to the GitHub repo
- Variants: You can mention all six (World/Tech/Finance/Commodity/Happy/Energy) or focus on the main one
- No login required: Anyone can use the web app immediately โ no signup, no paywall
Thank You
We genuinely appreciate community members helping grow World Monitor's reach. Feel free to interpret these guidelines creatively โ there's no strict template. The most compelling content comes from showing what YOU find most interesting or useful about the tool.
If you have questions or want specific screenshots/assets, open a Discussion on the GitHub repo or reach out directly.
File: docs/local-backend-audit.md
Local backend parity matrix (desktop sidecar)
This matrix tracks desktop parity by mapping src/services/*.ts consumers to sebuf domain handlers and classifying each feature as:
- Fully local: works from desktop sidecar without user credentials.
- Requires user-provided API key: local endpoint exists, but capability depends on configured secrets.
- Requires cloud fallback: sidecar exists, but operational behavior depends on a cloud relay path.
Architecture
All JSON API endpoints now use sebuf-generated handlers served through a single catch-all gateway (api/[[...path]].js). Handler implementations live in server/worldmonitor/{domain}/v1/. The desktop sidecar runs the same handler code locally via an esbuild-compiled bundle.
Remaining non-sebuf api/*.js files serve non-JSON content (RSS XML, HTML, redirects) and are not part of this matrix.
Priority closure order
- Priority 1 (core panels + map): LiveNewsPanel, MonitorPanel, StrategicRiskPanel, critical map layers.
- Priority 2 (intelligence continuity): summaries and market panel.
- Priority 3 (enhancements): enrichment and relay-dependent tracking extras.
Feature parity matrix
| Priority | Feature / Panel | Service source(s) | Sebuf domain | Handler path | Classification | Closure status |
|---|---|---|---|---|---|---|
| P1 | LiveNewsPanel | src/services/live-news.ts |
Non-sebuf (YouTube) | api/youtube/live.js |
Fully local | โ Local endpoint available; channel-level video fallback already implemented. |
| P1 | MonitorPanel | None (panel-local keyword matching) | None | None | Fully local | โ Client-side only (no backend dependency). |
| P1 | StrategicRiskPanel cached overlays | src/services/cached-risk-scores.ts |
intelligence | server/worldmonitor/intelligence/v1/ |
Requires user-provided API key | โ Explicit fallback: panel continues with local aggregate scoring when cache feed is unavailable. |
| P1 | Map layers (conflicts, outages, AIS, military flights) | src/services/conflict/, src/services/infrastructure/, src/services/maritime/, src/services/military/ |
conflict, infrastructure, maritime, military | server/worldmonitor/{domain}/v1/ |
Requires user-provided API key | โ Explicit fallback: unavailable feeds are disabled while map rendering remains active for local/static layers. |
| P2 | Summaries | src/services/news/ |
news | server/worldmonitor/news/v1/ |
Requires user-provided API key | โ Explicit fallback chain: Groq โ OpenRouter โ browser model. |
| P2 | MarketPanel | src/services/market/, src/services/prediction/ |
market, prediction | server/worldmonitor/market/v1/, server/worldmonitor/prediction/v1/ |
Fully local | โ Multi-provider and cache-aware fetch behavior maintained in sidecar mode. |
| P3 | Flight enrichment | src/services/military/ |
military | server/worldmonitor/military/v1/ |
Requires user-provided API key | โ Explicit fallback: heuristic-only classification mode. |
| P3 | OpenSky relay fallback path | src/services/military/ |
military | server/worldmonitor/military/v1/ |
Requires cloud fallback | โ Relay fallback documented; no hard failure when relay is unavailable. |
Non-parity closure actions completed
- Added desktop readiness + non-parity fallback visibility in
ServiceStatusPanelso operators can see acceptance status and per-feature fallback behavior in desktop runtime. - Kept local-sidecar strategy as the default path: desktop sidecar executes sebuf handlers locally via the esbuild-compiled bundle and only uses cloud fallback when handler execution or relay path fails.
Desktop-ready acceptance criteria
A desktop build is considered ready when all checks below are green:
- Startup: app launches and local sidecar health reports enabled.
- Map rendering: map loads with local/static layers even when optional feeds are unavailable.
- Core intelligence panels: LiveNewsPanel, MonitorPanel, StrategicRiskPanel render without fatal errors.
- Summaries: at least one summary path works (provider-backed or browser fallback).
- Market panel: panel renders and returns data from at least one market provider.
- Live tracking: at least one live mode (AIS or OpenSky) is available.
These checks are now surfaced in the Service Status UI as "Desktop readiness".
File: docs/TAURI_VALIDATION_REPORT.md
Tauri Validation Report
Scope
Validated desktop build readiness for the World Monitor Tauri app by checking frontend compilation, TypeScript integrity, and Tauri/Rust build execution.
Preflight checks before desktop validation
Run these checks first so failures are classified quickly:
- npm registry reachability
npm ping
- crates.io sparse index reachability
curl -I https://index.crates.io/
- proxy configuration present when required by your network
env | grep -E '^(HTTP_PROXY|HTTPS_PROXY|NO_PROXY)='
If any of these checks fail, treat downstream desktop build failures as environment-level until the network path is fixed.
Commands run
npm ciโ failed because the environment blocks downloading the pinned@tauri-apps/clipackage from npm (403 Forbidden).npm run typecheckโ succeeded.npm run build:fullโ succeeded (warnings only).npm run desktop:tauri:buildโ not runnable in this environment becausenpm cifailed, so the localtauribinary was unavailable (desktop scripts now fail fast with a clearnpm ciremediation message when this occurs).cargo check(fromsrc-tauri/) โ failed because the environment blocks downloading crates fromhttps://index.crates.io(403 CONNECT tunnel failed).
Assessment
- The web app portion compiles successfully.
- Full Tauri desktop validation in this run is blocked by an external environment outage/restriction (registry access denied with HTTP 403).
- No code/runtime defects were observed in project sources during this validation pass.
Failure classification for future QA
Use these labels in future reports so outcomes are actionable:
External environment outage
- Symptoms: npm/crates registry requests fail with transport/auth/network errors (403/5xx/timeout/DNS/proxy), independent of repository state.
- Action: retry in a healthy network or fix credentials/proxy/mirror availability.
Expected failure: offline mode not provisioned
- Symptoms: build is intentionally run without internet, but required offline inputs are missing (for Rust: no
vendor/artifact, no internal mirror mapping, or offline override not enabled; for JS: no prepared package cache). - Action: provision offline artifacts/mirror config first, enable offline override (
config.local.tomlor CLI--config), then rerun.
- Symptoms: build is intentionally run without internet, but required offline inputs are missing (for Rust: no
Next action to validate desktop end-to-end
Choose one supported path:
Online path:
npm cinpm run desktop:tauri:build
Restricted-network path:
- Restore prebuilt offline artifacts (including
src-tauri/vendor/or internal mirror mapping). - Run Cargo with
source.crates-io.replace-withmapped to vendored/internal source and--offlinewhere applicable.
- Restore prebuilt offline artifacts (including
After npm ci, desktop build uses the local tauri binary and does not rely on runtime npx package retrieval.
Remediation options for restricted environments
If preflight fails, use one of these approved remediations:
- Configure an internal npm mirror/proxy for Node packages.
- Configure an internal Cargo registry/sparse index mirror for Rust crates.
- Pre-vendor Rust crates (
src-tauri/vendor/) and run Cargo in offline mode. - Use CI runners that restore package/cache artifacts from a trusted internal store before builds.
For release packaging details, see docs/release-packaging.mdx (section: Network preflight and remediation).
2. Official Technical Reference & Guides (koala73/docs)
Mintlify Starter Kit
Use the starter kit to get your docs deployed and ready to customize.
Click the green Use this template button at the top of this repo to copy the Mintlify starter kit. The starter kit contains examples with
- Guide pages
- Navigation
- Customizations
- API reference pages
- Use of popular components
Follow the full quickstart guide
AI-assisted writing
Set up your AI coding tool to work with Mintlify:
npx skills add https://mintlify.com/docsThis command installs Mintlify's documentation skill for your configured AI tools like Claude Code, Cursor, Windsurf, and others. The skill includes component reference, writing standards, and workflow guidance.
See the AI tools guides for tool-specific setup.
Development
Install the Mintlify CLI to preview your documentation changes locally. To install, use the following command:
npm i mintRun the following command at the root of your documentation, where your docs.json is located:
mint devView your local preview at http://localhost:3000.
Publishing changes
Install our GitHub app from your dashboard to propagate changes from your repo to your deployment. Changes are deployed to production automatically after pushing to the default branch.
Need help?
Troubleshooting
- If your dev environment isn't running: Run
mint updateto ensure you have the most recent version of the CLI. - If a page loads as a 404: Make sure you are running in a folder with a valid
docs.json.