localStorage and synchronized across tabs.
Overview
Feature toggles provide:- Granular control over which APIs are called
- Cost optimization by disabling unused paid APIs
- Privacy control by disabling cloud services
- Debugging by isolating data sources
- Graceful degradation when API quotas are exhausted
Toggles are client-side only. Desktop users configure them in Settings. Web/cloud deployments must set environment variables.
Available Toggles
AI & Summarization
Ollama local summarizationLocal LLM provider via OpenAI-compatible endpoint (Ollama or LM Studio, desktop-first).Requires:
Fallback: Falls back to Groq, then OpenRouter, then local browser model.
OLLAMA_API_URL, OLLAMA_MODELFallback: Falls back to Groq, then OpenRouter, then local browser model.
Groq summarizationPrimary fast LLM provider used for AI summary generation.Requires:
Fallback: Falls back to OpenRouter, then local browser model.
GROQ_API_KEYFallback: Falls back to OpenRouter, then local browser model.
OpenRouter summarizationSecondary LLM provider for AI summary fallback.Requires:
Fallback: Falls back to local browser model only.
OPENROUTER_API_KEYFallback: Falls back to local browser model only.
Economic & Energy
FRED economic indicatorsMacro indicators from Federal Reserve Economic Data.Requires:
Fallback: Economic panel remains available with non-FRED metrics.
FRED_API_KEYFallback: Economic panel remains available with non-FRED metrics.
EIA oil analyticsU.S. Energy Information Administration oil metrics.Requires:
Fallback: Oil analytics cards show disabled state.
EIA_API_KEYFallback: Oil analytics cards show disabled state.
Supply Chain IntelligenceShipping rates via FRED Baltic Dry Index. Chokepoints and minerals use public data.Requires:
Fallback: Chokepoints and minerals always available; shipping requires FRED key.
FRED_API_KEYFallback: Chokepoints and minerals always available; shipping requires FRED key.
Markets & Trade
Finnhub market dataReal-time stock quotes and market data from Finnhub.Requires:
Fallback: Stock ticker uses limited free data (Yahoo Finance, CoinGecko).
FINNHUB_API_KEYFallback: Stock ticker uses limited free data (Yahoo Finance, CoinGecko).
WTO trade policy dataTrade restrictions, tariff trends, barriers, and flows from WTO.Requires:
Fallback: Trade policy panel shows disabled state.
WTO_API_KEYFallback: Trade policy panel shows disabled state.
Security & Threats
Cloudflare outage radarInternet outages from Cloudflare Radar annotations API.Requires:
Fallback: Outage layer is disabled and map continues with other feeds.
CLOUDFLARE_API_TOKENFallback: Outage layer is disabled and map continues with other feeds.
ACLED conflicts & protestsConflict and protest event feeds from ACLED.Requires:
Fallback: Conflict/protest overlays are hidden.
ACLED_ACCESS_TOKENFallback: Conflict/protest overlays are hidden.
abuse.ch cyber IOC feedsURLhaus and ThreatFox IOC ingestion for the cyber threat layer.Requires:
Fallback: URLhaus/ThreatFox IOC ingestion is disabled.
URLHAUS_AUTH_KEYFallback: URLhaus/ThreatFox IOC ingestion is disabled.
AlienVault OTX threat intelOptional OTX IOC ingestion for cyber threat enrichment.Requires:
Fallback: OTX IOC enrichment is disabled.
OTX_API_KEYFallback: OTX IOC enrichment is disabled.
AbuseIPDB threat intelOptional AbuseIPDB IOC/reputation enrichment for the cyber threat layer.Requires:
Fallback: AbuseIPDB enrichment is disabled.
ABUSEIPDB_API_KEYFallback: AbuseIPDB enrichment is disabled.
Tracking & Sensing
AIS vessel trackingLive vessel ingestion via AISStream WebSocket.Requires:
Fallback: AIS layer is disabled.
WS_RELAY_URL, AISSTREAM_API_KEY (web) or AISSTREAM_API_KEY only (desktop)Fallback: AIS layer is disabled.
OpenSky military flightsOpenSky OAuth credentials for military flight data.Requires:
Fallback: Military flights fall back to limited/no data.
VITE_OPENSKY_RELAY_URL, OPENSKY_CLIENT_ID, OPENSKY_CLIENT_SECRET (web) or OPENSKY_CLIENT_ID, OPENSKY_CLIENT_SECRET only (desktop)Fallback: Military flights fall back to limited/no data.
Wingbits aircraft enrichmentMilitary flight operator/aircraft enrichment metadata.Requires:
Fallback: Flight map still renders with heuristic-only classification.
WINGBITS_API_KEYFallback: Flight map still renders with heuristic-only classification.
NASA FIRMS fire dataFire Information for Resource Management System satellite data.Requires:
Fallback: FIRMS fire layer uses public VIIRS feed.
NASA_FIRMS_API_KEYFallback: FIRMS fire layer uses public VIIRS feed.
AviationStack flight delaysReal-time international airport delay data from AviationStack API.Requires:
Fallback: Non-US airports use simulated delay data.
AVIATIONSTACK_APIFallback: Non-US airports use simulated delay data.
ICAO NOTAM closures (Middle East)Airport closure detection for MENA airports from ICAO NOTAM data service.Requires:
Fallback: Closures detected only via AviationStack flight cancellation data.
ICAO_API_KEYFallback: Closures detected only via AviationStack flight cancellation data.
Desktop Configuration
Desktop app users configure toggles via the Settings window:- Open Settings (Cmd+, or Ctrl+,)
- Navigate to the appropriate category tab:
- AI & Summarization
- Economic & Energy
- Markets & Trade
- Security & Threats
- Tracking & Sensing
- Toggle features on/off with checkboxes
- Status indicators show:
- ✓ Ready — credentials configured and valid
- ⚠ Partial — some credentials missing
- ✗ Not Ready — no credentials
- Sidebar shows ready count per category (e.g., “3/5 ready”)
- Overview tab shows total progress ring
- Dot indicators: green (all ready), blue (partial), yellow (none)
Web / Cloud Configuration
Toggles are disabled in web/cloud deployments. Features are controlled by environment variables only. To disable a feature server-side, omit the required API key:.env.local
Toggle Storage
Toggles are stored inlocalStorage under the key worldmonitor-runtime-feature-toggles:
storage event. The main dashboard and settings window stay synchronized.
Feature Availability Logic
A feature is available when:- Toggle is
true(default: all enabled) - AND (Desktop only) required secrets are present and valid
Analytics
Toggle changes are tracked via PostHog:feature_id— toggle nameenabled— new state (true/false)
Debugging
To inspect current toggle state:Use Cases
Reduce API Costs
Disable paid APIs you’re not using:Privacy Mode
Disable all cloud services, use local-only:Quota Exhausted
Temporarily disable a rate-limited API:Debugging Data Issues
Isolate a problematic data source:Default State
All toggles default totrue (enabled). The system loads stored state from localStorage on startup:
Feature Dependencies
Some features have multi-secret requirements: AIS Relay (web deployment):WS_RELAY_URL— relay server URLAISSTREAM_API_KEY— AISStream API key
AISSTREAM_API_KEYonly (relay runs in sidecar)
VITE_OPENSKY_RELAY_URL— relay server URLOPENSKY_CLIENT_ID— OAuth client IDOPENSKY_CLIENT_SECRET— OAuth secret
OPENSKY_CLIENT_ID— OAuth client IDOPENSKY_CLIENT_SECRET— OAuth secret
desktopRequiredSecrets in the feature definition.
Settings Window UI
The settings window groups toggles into 5 categories:| Category | Features | Progress Indicator |
|---|---|---|
| AI & Summarization | 3 | 3/3 ready |
| Economic & Energy | 3 | 2/3 ready |
| Markets & Trade | 2 | 1/2 ready |
| Security & Threats | 5 | 4/5 ready |
| Tracking & Sensing | 6 | 3/6 ready |
- Ready = toggle enabled + secrets valid
- Total = all features in category
- Green dot = all ready
- Blue dot = partial
- Yellow dot = none ready