How to Set Up World Monitor: A Zero-Config Intelligence Dashboard
The Problem: Setting Up a Global Intelligence Dashboard
I wanted a self-hosted dashboard to monitor global events - stocks, geopolitical events, aircraft tracking, and more. I discovered World Monitor, but documentation was scattered. I needed a clear setup guide that covered both basic installation and the optional API configurations for full functionality.
Environment
- Node.js: 18+
- Go: 1.21+ (for proto generation)
- OS: macOS / Windows / Linux
What Happened During Setup
First Attempt: Basic Clone and Run
I cloned the repository and tried to run it:
git clone https://github.com/koala73/worldmonitor.gitcd worldmonitornpm installnpm run devThe development server started immediately:
VITE v5.0.0 ready in 342 ms
➜ Local: http://localhost:5173/ ➜ Network: http://192.168.1.100:5173/I opened http://localhost:5173 and the dashboard loaded. No environment variables required. The map displayed with multiple data layers visible.
Second Attempt: Using Make for Full Setup
I noticed a Makefile in the repository and wanted to understand what additional setup it provided:
make installThis command installed:
- buf (Protocol Buffers linter and generator)
- protobuf plugins
- npm dependencies
- proto dependencies
The make install approach is recommended for development work because it ensures all proto generation tools are available.
Solution: Complete Setup Guide
Step 1: Clone and Install Dependencies
git clone https://github.com/koala73/worldmonitor.gitcd worldmonitormake install # Full setup with proto toolsnpm run dev # Start development serverIf you don’t have make available, use:
npm installnpm run devStep 2: Access the Dashboard
Open your browser to http://localhost:5173. The dashboard loads with all default data layers.
Step 3: Configure Optional API Keys (Optional)
The dashboard works without any configuration. Some data layers require API keys to display their data:
| Variable | Service | What It Enables |
|---|---|---|
FINNHUB_API_KEY | Finnhub | Real-time stock quotes |
EIA_API_KEY | EIA | Oil and energy analytics |
CLOUDFLARE_API_TOKEN | Cloudflare | Internet outage detection |
ACLED_ACCESS_TOKEN | ACLED | Protest and conflict data |
OPENSKY_CLIENT_ID | OpenSky | Military aircraft tracking |
OPENSKY_CLIENT_SECRET | OpenSky | Military aircraft tracking |
Create a .env file based on .env.example:
cp .env.example .envThen edit .env and add your keys:
FINNHUB_API_KEY=your_finnhub_key_hereEIA_API_KEY=your_eia_key_hereStep 4: Explore Variants
World Monitor supports multiple variants for different use cases. Change the VITE_VARIANT environment variable:
# Full geopolitical monitoringVITE_VARIANT=full npm run dev
# Technology sector focusnpm run dev:tech
# Financial markets focusnpm run dev:finance
# Commodity trackingnpm run dev:commodity
# Positive news onlynpm run dev:happyStep 5: Desktop App Installation (Alternative)
If you prefer a native desktop app, download pre-built binaries:
- Windows:
.exeinstaller - macOS: Apple Silicon or Intel builds
- Linux:
.AppImagefile
The desktop app provides additional features:
- Access settings with
Cmd+,(macOS) orCtrl+,(Windows/Linux) - Configure LLM endpoints for AI analysis
- Enable traffic logging for debugging
Why This Works
World Monitor uses Vite’s environment variable system (VITE_* prefix) to configure variants and API endpoints. The zero-config default works because:
- The frontend loads with hardcoded fallback values
- Optional API layers gracefully degrade when keys are missing
- Variant selection is purely client-side routing and configuration
The make install command ensures Protocol Buffers tooling is available, which is needed if you’re modifying the data schemas or contributing to the project.
Navigation Tips
Keyboard Shortcuts
Cmd+K/Ctrl+K- Open searchUp/Down- Navigate search resultsEsc- Close modals
Map Controls
- Mouse wheel or trackpad pinch to zoom
- Click and drag to pan
- Layer toggle buttons in the sidebar for 20+ data layers
Panel Management
- Drag panels to reorder
- Toggle visibility in Settings
- Collapsed panels continue refreshing data in the background
Deployment Options
World Monitor supports multiple deployment targets:
Vercel Edge Functions:
npm run buildvercel deployDocker:
docker build -t worldmonitor .docker run -p 5173:5173 worldmonitorStatic Site:
npm run build# Deploy the dist/ folder to any static hostSummary
In this post, I showed how to set up World Monitor from clone to running dashboard. The key insight is that basic operation requires zero configuration - just npm install && npm run dev. Optional API keys unlock additional data layers, and variant selection lets you customize the dashboard focus. The project also offers desktop apps and multiple deployment options for production use.
Final Words + More Resources
My intention with this article was to help others share my knowledge and experience. If you want to contact me, you can contact by email: Email me
Here are also the most important links from this article along with some further resources that will help you in this scope:
Oh, and if you found these resources useful, don’t forget to support me by starring the repo on GitHub!
Comments