Osint War Room is a high-performance, tactical dashboard designed for tracking global conflicts, military movements, and geopolitical events in real-time. Vibecoded ehm i mean designed with a dark-mode/tactical UI, it aggregates multiple open-source intelligence (OSINT) feeds into a single, customizable, and interactive command center.
It currently tracks global conflicts, live air/naval radar, frontline Telegram intelligence, latest news, Cyber threat feeds, Stock markets, raw energy & industrial materials, crypto, live casualties, war time events, Pentagon pizza index, CCTV footage all around the world, VIX fear index, Polymarket bets, and more. Fully customizable.
war2.mp4
- Live Conflict Events β Parses the GDELT Project database every 15 minutes to display explosions, missile strikes, and armed engagements as animated pulse markers. Prioritizes Middle East, Ukraine, and active conflict zones.
- Airspace Monitoring (ADS-B) β Integrates with OpenSky Network to render live aircraft positions, altitude, heading, and callsign with rotating arrow icons.
- Maritime Traffic (AIS) β WebSocket connection to AISStream.io for real-time ship tracking across 4 global regions. Color-coded by vessel type (tanker, cargo, military, passenger).
- Military Infrastructure β Queries the Overpass API (OpenStreetMap) to map military bases, airfields, and naval ports across Ukraine, the Middle East, and the Taiwan Strait.
- Nuclear Detonation Simulator β Click-to-detonate nuke simulator using Glasstone & Dolan cube-root scaling. Choose from 7 historical weapons (Little Boy β Tsar Bomba) and visualize 5 blast zones (fireball, heavy blast, moderate blast, thermal radiation, light blast) with animated ring expansion.
- Tactical Tools β Distance measurement tool, custom marker placement with labels, coordinate HUD, and toggleable map legend.
- Conflict Casualties Tracker β Overlay widget that aggregates
NumKilledandNumWoundedGDELT fields for a live 24h casualty estimate.
- Webcam Grid β Customizable live surveillance feed grid (1Γ1, 2Γ2, 3Γ3) from YouTube streams and public CCTV cameras worldwide.
- Telegram Scraper β Background async scraper that polls public web previews of frontline OSINT channels every 15 seconds. Configurable channel list. Supports channels like
@monitor_the_situation,@terroralarm,@ConflictsTracker,@OSINTWarfare,@aljazeeraglobal. - Live News Ticker β Scrolling RSS headline aggregator from BBC World, Reuters, Al Jazeera, and AP News.
- Cyber Intel Panel β Visualizes the CISA Known Exploited Vulnerabilities (KEV) catalog. Displays CVEs on the world map as glowing blue dots, filterable by type (exploit, DDoS, malware, breach).
- Air Raid Alerts β Real-time polling of regional alarm APIs for active air raid sirens (Ukraine focus).
- Radio Intercepts β Simulated military radio widget using Web Audio API. Generates realistic bandpass-filtered static, squelch cycles, and rotating transcripts for 5 stations (CENTCOM, NATO OPS, PACIFIC CMD, KYIV CTRL, NORAD).
- Market Dashboard β Live tickers via
yfinancefor S&P 500, FTSE 100, Nikkei, Gold, Silver, WTI Crude, Natural Gas, Wheat, BTC, ETH, XMR, and the VIX Fear Index; - Pentagon Pizza Index β Tracks order volume at pizza chains near the Pentagon as a proxy for unusual after-hours military activity (source);
- Polymarket Integration β Live betting odds on geopolitical outcomes, filtered to remove sports markets. Shows 24h trending and highest all-time volume markets;
- DEFCON Threat Meter β Calculated global tension score derived from active Ukraine alarms + GDELT conflict event density. Displays as a DEFCON 1β5 rating in the top bar;
- Sound Engine: Procedural sound effects (alarms, clicks, nukes) generated with Web Audio API;
- Window Management: Resizable, multi-pane layout powered by Split.js with local storage persistence, draggable floating panels (nuke sim, cyber intel, radio);
- Map: Region-based map presets (Global, Middle East, Ukraine, Taiwan);
- Optimization: Server-side in-memory caching with pending-request locking to prevent API stampedes on multi-tab load;
I vibecoded 90% of this project using Gemini extension on Vs Code, Claude, and Gemini Pro. The structure was originally designed to be lightweight, modular, and extremely fast, avoiding heavy frontend frameworks, and it kinda respects these prerequisites:
- Backend: Python 3.11+ using FastAPI for rapid endpoint delivery, asyncio for non-blocking background scraping loops and BeautifulSoup4 for parsing HTML feeds.
- Frontend: ES6 JavaScript, HTML5, and CSS Grid/Flexbox, libraries: Leaflet.js, Split.js, FontAwesome;
- Database: Lightweight, local JSON flat-file storage (
database.json) for caching alerts and managing user settings.
-
Requirements: Python 3.11, AISStream.io API key (free), and Acled email + password.
-
Clone the repo:
git clone https://github.com/Hue-Jhan/OSINT-War-Room
cd OSINT-War-Room- Install requirements (optionally in a virtual env):
pip install -r requirements.txt
- Run (port 8000):
uvicorn backend.main:app --reloadNote: On first load, the GDELT conflict feed and OSM military bases may take 10β30 seconds to appear, this is normal and happens because GDELT's live feed requires downloading and parsing a large ZIP. Results are cached server-side for 15 minutes (GDELT) and 6 hours (military bases) after the first successful fetch.
The Api is added in frontend/js/map.js, in the startAISWebSocket function. The Acled credentials in backend/api/radar.py on line 175, before the get_acled_token() function.
Telegram channels are configurable at runtime via the News settings modal in the UI, or by editing backend/database.json directly:
{
"settings": {
"telegram_channels": [
"monitor_the_situation",
"terroralarm",
"ConflictsTracker",
"aljazeeraglobal",
"OSINTWarfare" ]
}
}Regarding CORS Origins, if you're running the frontend from a different port (e.g., Live Server on :5500), add your origin to the origins list in backend/main.py:
origins = [
"http://localhost:5500",
"http://127.0.0.1:5500",
"http://localhost:8000",
"http://127.0.0.1:8000", ]osint-war-room/
βββ backend/
β βββ main.py # FastAPI app entry point, CORS, router mounting, startup tasks
β βββ database.json # Flat-file storage for alerts, news cache, and user settings
β βββ api/
β βββ alerts.py # Telegram scraper (async background task, BeautifulSoup parser)
β βββ news.py # (Not used) unified news feed endpoint, RSS aggregation
β βββ economy.py # Market data (yfinance), Pizza Index, Polymarket, VIX
β βββ radar.py # GDELT conflict events, OSM military bases, OpenSky aircraft,
β # AIS ships, CISA KEV cyber feed, air alarms and more...
β
βββ frontend/
βββ index.html # Main dashboard layout, all panels, modals, sidebar
βββ css/
β βββ base.css # CSS variables, resets, scrollbar, .hidden utility
β βββ layout.css # App shell, sidebar, top bar, Split.js gutters, panel cards
β βββ components.css # Nav items, modals, ticker, buttons, region toggles, clock
β βββ map.css # Leaflet overrides, custom icons, pulse animations, nuke rings
β βββ modules.css # Bottom panel modules (markets, feeds, webcams, pizza)
βββ js/
βββ main.js # DOMContentLoaded entry point, initializes all modules
βββ map.js # Leaflet map, all layer logic, nuke sim, cyber panel,
β # threat meter, body count, radio widget, sound engine (_sfx)
βββ ui.js # Split.js layout, modals, clock, webcam grid, snap buttons
βββ api.js # Data polling (Telegram feed, markets, pizza, ticker, webcams)| Method | Endpoint | Description |
|---|---|---|
| GET | /api/status |
Backend health check |
| GET | /api/alerts/telegram |
Latest scraped Telegram messages |
| GET | /api/alerts/settings |
Current Telegram channel list |
| POST | /api/alerts/settings |
Update Telegram channel list |
| GET | /api/news/feed |
Unified Telegram + news feed |
| GET | /api/economy/markets |
Live market tickers (yfinance) |
| GET | /api/economy/pizza |
Pentagon Pizza Index |
| GET | /api/economy/polymarket |
Polymarket geopolitical bets |
| GET | /api/economy/ticker |
RSS headline ticker |
| GET | /api/radar/alarms |
Ukraine air raid alarms |
| GET | /api/radar/bases |
OSM military bases (cached 6h) |
| GET | /api/radar/conflicts |
GDELT conflict events (cached 15min) |
| GET | /api/radar/aircraft |
OpenSky live aircraft positions |
| GET | /api/radar/cyber |
CISA KEV vulnerability feed |
- AIS Maritime tracking requires a working connection to
stream.aisstream.io. Free tier IP blocks can occur after excessive connections, so wait 24 hours or register a new key on a different network. - GDELT first load can be slow (10β30s) depending on the GDELT server and file size. Try to reload, open a page in a new tab or in a incognito tab.
- Telegram scraping uses the public web preview (
t.me/s/channel) and may rate-limit on high-frequency polling or for channels with restricted previews. - OpenSky Network has a 10-second rate limit on anonymous requests. Results refresh every 30 seconds while the layer is active.
I'm broke pls donate plssss
bc1qdf06nx2mlpkxkmjj8vn29mwp88etgvzr9wh975
0xFBc5aDF16f1459f2D61ab87f26431A6b377Dba8C
882ViUtGxERFvajFFiR698B2DKcpKDDCgFfpb4DzJDHKevB2cgq9gYjVudj9d8Us5ahxPMVtz4sxXgpwjcSCVu8pLcrbBC5