World Monitor: How a Music Streaming CEO Built an Open-Source Palantir in His Spare Time

Elie Habib coded the first version on a Sunday afternoon. Two months later, 2 million users rely on it to track global conflicts, military movements, and market shocks across 45 live data layers. The real story is what happens when one developer refuses to stop adding feeds.

by Elie Habib · koala73/worldmonitor · ~14 min read

A vast control room viewed from above, showing a single operator at a curved desk surrounded by dozens of screens displaying world maps, ship tracks, flight paths, news feeds, and financial tickers. Data streams converge toward the central desk from all directions. A massive rotating globe floats above the room.
The ambition of World Monitor: every signal that matters, on one screen.
Key Takeaways

Born on a Boring Sunday

Elie Habib is best known as the co-founder of Anghami, the Middle East's largest music streaming platform. But in early 2026, global news was becoming impossible to follow. Iran tensions, market turbulence, military movements overlapping with trade disputes. He sat down on a Sunday and built the first version in a single day.

"World Monitor was born on a boring Sunday, when global news was becoming too difficult to decipher," Habib told L'Orient-Le Jour. "I built it because it brought me joy."

That Sunday project now has over 40,000 GitHub stars, 6,600 forks, and more than 2 million unique monthly users. Journalists, military analysts, traders, and academic researchers have adopted it. Some users call it "the Bloomberg Terminal for geopolitics." Habib says that description came from the community, not from him.

What You See When You Open It

Visit worldmonitor.app and the first thing you notice is the density. A 3D globe or flat WebGL map dominates the center, surrounded by a grid of resizable panels. Each panel shows a different intelligence stream: breaking news, military flights, ship movements, satellite fire detections, market composites, cyber threat indicators, and more.

Toggle between 45 data layers. Turn on ADS-B to see military aircraft positions. Enable AIS to track 25,000+ vessels in real time. Layer in conflict events from ACLED, GPS jamming zones, nuclear installations, undersea cable health, and radiation monitoring. The map supports both a flat deck.gl view with 8 layer types and a globe.gl 3D view with atmosphere shading and auto-rotation.

The interface runs entirely in the browser as a vanilla TypeScript single-page application. No React. No Vue. No Angular. Every panel extends a base Panel class with debounced rendering and event delegation. State lives in a central mutable AppContext object. URL state syncs bidirectionally with a 250ms debounce.

A pair of hands peeling back transparent layers stacked above a world map. Each layer shows a different data type: ship tracks on one, flight paths on another, fire dots on a third, news headlines on a fourth. The layers separate like pages of a book being fanned open.
45 toggleable data layers stack on top of the base map, each representing a different intelligence stream.

The Architecture: Surprisingly Vanilla, Surprisingly Deep

World Monitor's codebase is almost 5.9 million lines of TypeScript, plus roughly 2 million lines of JavaScript and 500,000 lines of CSS. The primary language is TypeScript at 69% of the codebase. A small Rust component powers the Tauri desktop app, and Protocol Buffers define the API contract layer.

The frontend uses no framework. This is not a React app wrapped in complexity. It is a vanilla TypeScript SPA built with Vite, where every component is a class that manages its own DOM. The Panel base class provides setContent(html) with 150ms debounce, event delegation on a stable content element, and localStorage-persisted layout state.

On the backend, 60+ Vercel Edge Functions handle API requests. Each function is self-contained and cannot import from the main src directory (a constraint enforced by tests and pre-push esbuild bundle checks). A gateway factory provides a 10-step pipeline for every request: origin check, CORS headers, OPTIONS preflight, API key validation, rate limiting, route matching, POST-to-GET compatibility, handler execution, ETag generation via FNV-1a hash, and cache header application.

The Three-Tier Cache That Keeps It Fast

With 2 million users hitting 30+ upstream data sources, caching is existential. World Monitor uses a three-tier approach.

First, Vercel CDN cache headers with configurable s-maxage values ranging from 300 seconds for live event streams to 86,400 seconds for static reference data. Second, Upstash Redis with stampede protection that coalesces concurrent requests for the same key into a single upstream fetch. Third, a browser-side service worker cache for PWA offline support.

Seed scripts run on Railway as continuous loops, pre-fetching data from upstream sources and writing to Redis using atomic publish operations. Each publish acquires a Redis lock via SET NX, validates the data, writes the cache key and freshness metadata, then releases the lock. This prevents partial writes and race conditions across seed loops.

Think CNN war room meets Bloomberg Terminal for geopolitics, but accessible to everyone.

DBS Morocco, via X

Browser-Side AI: No Cloud Required

The most surprising architectural decision is where the AI runs. World Monitor performs classification, clustering, and correlation detection entirely in the browser using Web Workers and ONNX models.

The ML Worker uses @xenova/transformers to run MiniLM-L6 sentence embeddings, sentiment analysis, summarization, and named entity recognition. All inference happens via ONNX Runtime Web. An IndexedDB-backed vector store enables semantic headline search across sessions.

A separate Analysis Worker handles news clustering with Jaccard similarity and cross-domain correlation detection. It looks for convergence across military, economic, disaster, and escalation signals. When it finds a cluster of related events across domains, it surfaces them through the Correlation Panel and Intelligence Gap Badge.

For users who want deeper analysis, Ollama integration enables fully local LLM inference. No API keys. No cloud dependency. The system degrades gracefully: without any AI backend, the dashboard still works. You just lose the AI-generated briefs and summaries.

A magnifying glass held over a globe, with tiny gears and neural network nodes visible inside the lens. The gears are labeled ML, NLP, and ONNX. Below the magnifying glass, streams of news headlines flow from multiple directions and emerge classified and color-coded on the other side.
AI classification runs entirely in the browser, keeping user data local and the system independent of cloud APIs.

Five Variants From One Codebase

World Monitor is not one product. It is five, built from a single codebase. The variant is detected by hostname: worldmonitor.app serves the full geopolitical view, tech.worldmonitor.app shows innovation and AI datacenter coverage, finance.worldmonitor.app provides a Bloomberg-style market layout, commodity.worldmonitor.app focuses on energy and critical minerals, and happy.worldmonitor.app shows only positive news.

Each variant controls which panels appear by default, which map layers are enabled, polling intervals, theme colors, and UI text. Changing variant resets all user settings to the new defaults. On desktop, where there is no hostname, the variant is stored in localStorage.

This is an elegant approach to product segmentation. Instead of maintaining five separate applications, Habib ships one SPA with variant-aware configuration. The build system supports variant-specific builds (npm run build:tech, npm run build:finance) that tree-shake unused panel code for smaller bundles.

The Country Intelligence Index

One of the more ambitious features is the Country Intelligence Index (CII). It computes a composite risk score for every country across 12 signal categories: military activity, conflict events, economic indicators, cyber threats, natural disasters, displacement, trade disruption, energy stress, political instability, maritime activity, airspace anomalies, and infrastructure health.

Each signal category pulls from a different upstream data source, and the system normalizes and weights them into a single score. The CII Panel surfaces these scores alongside trend arrows showing whether risk is increasing or decreasing. Country Deep Dive panels let users drill into the individual signal components.

This is where World Monitor starts to feel less like a news aggregator and more like a genuine intelligence tool. The scoring is transparent (users can see the weights and sources), but the breadth of signals it synthesizes would take a human analyst hours to assemble manually.

The Proto/RPC Contract System

API contracts between frontend and backend are defined using Protocol Buffers with 92 proto definitions across 22 services. The project uses a framework called sebuf that adds HTTP annotations to protobuf service definitions, mapping RPCs to HTTP verbs and paths.

Running buf generate produces TypeScript client stubs, server message types, and OpenAPI v3 specs. CI enforces that generated code stays fresh: a GitHub Actions workflow runs make generate and fails the build if the output differs from committed files. This eliminates the class of bugs where proto definitions drift from implementation.

A river system viewed from above, where multiple tributaries labeled with data source names merge into a central river. The central river flows through a series of processing locks and gates before emptying into a wide delta labeled Dashboard. Small boats carry different types of cargo on each tributary.
30+ upstream data sources flow through edge functions, cache layers, and AI processing before reaching the user.

Desktop App via Tauri 2

World Monitor ships as a native desktop application for macOS (ARM64 and Intel), Windows, and Linux. The desktop version uses Tauri 2 with a Rust shell and a bundled Node.js sidecar that runs the API layer locally.

This means the desktop app can operate fully offline. The sidecar replaces Vercel Edge Functions with local equivalents, and fetch calls are patched at runtime to redirect API requests to the sidecar. The build pipeline compiles the sidecar handlers separately using esbuild, ensuring they stay compatible with the Node.js runtime rather than the browser.

Security researcher Cody Richard disclosed three findings related to the Tauri architecture: IPC command exposure, renderer-to-sidecar trust boundary analysis, and fetch patch credential injection. All three were acknowledged in the project's security policy, reflecting the maturity of a project that takes responsible disclosure seriously.

How It Compares

The OSINT dashboard space has grown rapidly, but most tools target a narrow slice. World Monitor is unusual in its breadth.

Tool Data Sources AI/ML Maps License Best For
World Monitor 435+ feeds, AIS, ADS-B, ACLED, GDELT, markets Browser ONNX + Ollama deck.gl + globe.gl (45 layers) AGPL-3.0 Full-spectrum situational awareness
LiveUAMap Conflict events, social media Manual curation Leaflet (single layer) Proprietary Conflict zone tracking
Shadowbroker ADS-B, AIS, GDELT, satellites Minimal MapLibre (4 layers) Open source Military/maritime OSINT
Palantir Gotham Custom enterprise integrations Full ML pipeline Proprietary GIS Commercial ($$$$) Government/defense intelligence
GDELT Project Global event database NLP classification Google BigQuery + basic maps Open data Academic research and analysis

The key differentiator is accessibility. Palantir Gotham costs millions. LiveUAMap is proprietary and narrowly focused. GDELT provides data but no dashboard. World Monitor gives you the full stack, open source, with no login required.

The 8-Phase Boot Sequence

When the app loads, App.init() runs an 8-phase initialization sequence. It starts with IndexedDB setup and language detection across 21 supported languages with RTL support. Then the ML Worker prepares ONNX models. On desktop, it waits for the Tauri sidecar to signal readiness.

Phase 4 is the most interesting: a two-tier concurrent hydration from /api/bootstrap. The SPA fetches two batches in parallel, one with a 3-second timeout (fast, critical data) and one with a 5-second timeout (slower, supplementary data). Each batch reads cached keys from Redis in a single batch call. Hydrated data is consumed on-demand by panels via getHydratedData(key), avoiding a waterfall of individual API requests.

After layout rendering and UI initialization, Phase 7 runs loadAllData() and primeVisiblePanelData() in parallel. Finally, a variant-specific smart poll loop begins, refreshing data at intervals tuned to each variant's needs.

WSJ hedcut-style portrait of Elie Habib

I built World Monitor on a Sunday because I needed it for myself. Whether it becomes infrastructure or remains a founder's side project is something time will answer.

Elie Habib, co-founder of Anghami and creator of World Monitor

What the User Base Reveals

The traffic distribution tells a story about who needs this kind of tool. Asia accounts for roughly 35% of users, Europe 20%, the Middle East and North Africa 18%, and the United States about 10%. This is not a Silicon Valley toy. It serves people in regions where geopolitical awareness has immediate practical consequences.

Journalists use it to cross-reference breaking stories against satellite fire data and military flight patterns. Risk analysts layer financial market signals over conflict event data. Academic researchers use the ACLED and UCDP integrations to study conflict dynamics. Traders monitor the 7-signal market composite alongside geopolitical escalation signals for early warning.

The "happy" variant, serving only positive news, is a quietly thoughtful addition. In a tool built to track threats and conflict, it acknowledges that constant exposure to crisis information takes a psychological toll. Species comeback stories and renewable energy milestones sit alongside breakthroughs and charitable giving data.

A world map shown as a flat projection with clusters of small human figures standing on different continents. The largest clusters appear in Asia, Europe, and the Middle East. Thin lines connect the figures to a central server stack. A compass rose sits in the corner.
World Monitor's user base is concentrated in regions where geopolitical awareness carries daily stakes.

The Technical Decisions That Reveal the Builder

Several architectural choices reveal a particular engineering philosophy. No framework dependency. No external state library. Protocol Buffers for API contracts with CI freshness enforcement. Browser-side ML instead of cloud APIs. A mutable AppContext instead of Redux-style immutability.

These are the choices of someone who wants to ship fast and maintain full control, not someone building for a team of 50 engineers. The codebase has 30 contributors, but the core architecture is clearly one person's vision. It trades some of the guardrails of framework-driven development for raw speed and flexibility.

The 92-proto API contract system is the counterweight. Where the frontend is pragmatic and fast-moving, the API boundary is rigorously typed and enforced. This split makes sense for a project where the frontend iterates daily but the API surface must remain stable for desktop clients, multiple site variants, and third-party integrations.

Where It Goes From Here

Habib has kept the project under an AGPL-3.0 license for non-commercial use, with a commercial license required for anything else. This is the classic "open-core" tension: the code is open, but the business model is not yet resolved.

"Whether it becomes infrastructure or remains a founder's side project is something time will answer," Habib said. The 40,000 stars and 2 million users suggest time may be answering already. The question is whether one person's side project can sustain the operational demands of a tool this many people depend on.

For now, World Monitor stands as one of the most ambitious single-developer open-source projects in the OSINT space. It is not a prototype or proof of concept. It is a production system with 86 panel classes, 45 map layers, 21 languages, 92 proto definitions, desktop apps on three platforms, and a user base that spans every continent. All from a boring Sunday.