WHAT IS SPECTRE
Open-source global intelligence and threat monitoring dashboard. It fuses public OSINT into one map: geopolitical signals, conflict tracking, disasters, military air and satellite movement, strategic infrastructure, internet infrastructure disruptions, and GPS interference. Core feeds use free/public sources only (no keys required for those sources). SITREP and on-demand intelligence reports are generated on the server with the OpenAI API (OPENAI_API_KEY required).
DATA PIPELINE & RELIABILITY
- Real-time updates: Server-Sent Events (SSE) endpoint
/api/stream pushes data_updated events; the UI reloads data without manual refresh.
- Fast boot: Two-phase load —
/api/fast then /api/all — so the map becomes usable quickly while heavier domains finish.
- Background refresh: Scheduled polling per domain (RSS, flights, satellites, quakes, blackouts, GPS jam, EONET, GDELT, Telegram).
- Cache + resilience: Stale-while-revalidate behavior, disk cache (
.spectre_cache.json) for warm restarts, graceful degradation if a source fails.
- Fallback: If SSE is unavailable, periodic refresh still pulls updates.
SOURCE INGESTION
- RSS — curated feeds in
config.py.
- Telegram — direct
t.me/s/ channel scrape plus RSSHub fallback.
- Geocoding — map search place names via Nominatim (OpenStreetMap), respecting reasonable request rates.
HEADER & STATUS
- Top classification strip: SPECTRE OSINT DASHBOARD.
- DEFCON STATUS badge — global threat level from aggregated OSINT severity.
- Header row: Data Feed count (OSINT items in sync) and Critical / High / Medium classifier counts.
- REFRESH line — transport state (e.g. LINK SECURE when synced).
- ZULU TIME clock (UTC).
- Lower header strip: system id (e.g. SPECTRE-2A), total configured data sources, and mode (REAL TIME).
MAP OVERLAYS (layer bar)
Toggle each layer on the map. Buttons grow with their labels and may wrap to a second row when the window is narrow. Color coding follows classification.
- OSINT — RSS/Telegram-derived hotspots with geo plus GDELT 2.0 conflict-related events.
- Theater Instability — country risk rings from OSINT-derived country risk.
- Air Tracks — military-focused ADS-B tracks (ADS-B.lol).
- Satellites — CelesTrak TLE + SGP4 propagation.
- Net Blackouts — IODA internet outage alerts.
- GPS Jamming · 24h — GPSJam H3 cells (high-interference snapshot; not real-time).
- Bases — military base reference points.
- Nuclear — declared / known nuclear facility reference data.
- Weather — RainViewer global radar overlay (past ~2h; zoom limits per provider).
- Natural events — USGS M4.5+ seismic plus NASA EONET wildfires, storms, volcanoes, and other natural events.
Keyboard shortcuts: keys 1–8 toggle OSINT, Theater instability, Air Tracks, Blackouts, Bases, Nuclear, Weather, and Natural events. Satellites and GPS jamming are not on number keys — use the layer bar buttons.
LEFT SIDEBAR
The left column is split evenly (each panel uses half the column height):
- SITREP — single-paragraph situation report for the last eight hours from prioritized feed items: Telegram OSINT first, then RSS, then GDELT, and within each source by severity (critical → … → info, original classifier), generated with OpenAI. The header shows the reporting window as Zulu times (
HHmmZ). The server generates a SITREP once shortly after startup (after seeding SQLite from cache) and again every 8 hours when ENRICHMENT_WORKER=1 (plus continuous ingest on that schedule). The dashboard loads text via GET /api/sitrep/latest. Collapsible like other panels.
- THEATER INSTABILITY — ranked country risk; click a row to filter the Live OSINT feed to that theater (country).
MAP & NAVIGATION
- Search — latitude/longitude, MGRS (via mgrs.js), or place name (Nominatim geocoding). Enter or GO.
- COCOM quick-fly — GLOBAL plus regional buttons; Alt+1–6 maps to EUCOM through SOUTHCOM; G resets to global view.
- Coordinate readout — MGRS under cursor while moving over the map.
- Leaflet — zoom control (bottom-right), metric scale (bottom-left), Esri imagery base, boundaries/labels overlay; Weather layer adds RainViewer radar tiles when enabled.
- Fullscreen map — map control button or F hides side panels for a clean map.
- Right-click map — context menu: VIEW SATELLITE IMAGERY opens NASA GIBS imagery in a modal with date selection and a Leaflet preview.
RIGHT COLUMN — LIVE OSINT FEED
- LIVE OSINT FEED — severity-ranked items (critical→info), recency within tiers; 24-hour retention for high-signal feed. Filter chips are multi-select (OR): e.g. CRITICAL + HIGH shows either tier.
- Classifier — keyword tiers (critical→info) plus categories: conflict, terrorism, cyber, disaster, political, health, economic, nuclear, maritime, aerospace; color mapping on map markers and feed rows.
- Country filter — banner when filtering from Theater Instability; CLEAR to reset.
- Search — text filter in the feed list.
- Filters — ALL, CRITICAL, HIGH, MEDIUM (multi-select OR).
- Export — CSV or JSON snapshot of the current filtered feed. JSON includes export metadata (UTC timestamp, active filters, UNCLASSIFIED // OPEN SOURCE label).
- Generate Intelligence Report — same row as export; builds a formal report from the currently visible feed via
POST /api/intel/generate using OpenAI on the server (server keeps up to 50 posts: Telegram first, then RSS, then GDELT, then severity critical→info, newest at equal priority). On success the report opens in a modal, copies metadata to clipboard when you use Copy, and a .txt downloads automatically (filename includes UTC time, e.g. SPECTRE_INTEL_YYYYMMDD_HHMMSSZ.txt). Reports are still stored server-side; use the API if you need a list of saved reports.
- NEW badges — newly ingested items since your session can show a NEW tag; toasts can alert on critical or bulk ingest.
FEED & MAP INTERACTIONS
- Left-click OSINT item — menu: open source, copy OSINT snippet, copy URL, fly to location.
- Left-click context menu — use COPY OSINT SNIPPET or COPY URL directly from any selected OSINT row.
TOOLBAR
- ? HELP — this reference (includes keyboard shortcuts), replay guided tour, and ? to toggle.
- BROADCAST — curated MP3/HLS radio streams (HLS.js); draggable panel, volume, now-playing.
- LIVE FEEDS — public camera / live iframe grid; region filters ALL / NEWS / URBAN.
STATUS BAR
- Per-source health dots: OSINT (RSS, Telegram, GDELT conflict events, and other open-source feeds), Seismic, Natural Events, Aircraft Tracking, Satellites, Internet Outages (hover a label for the upstream provider).
- LAST SYNC timestamp (UTC-style).
LAYOUT & PERSISTENCE
- Resize — drag left/right handles to widen side panels.
- Panel collapse — click panel headers; panel collapse state persists in localStorage.
- Toasts — transient notifications (e.g. fullscreen, sync, export).
KEYBOARD SHORTCUTS
NAVIGATION
FToggle fullscreen map (hide panels)
RForce data refresh
GReset to global view
?Show / hide this help panel
ESCClose modals / clear search / clear country filter
MAP LAYERS (toggle)
1OSINT (RSS/Telegram + GDELT)
2Theater instability rings
3Air tracks (ADS-B)
4Net blackouts
5Military bases
6Nuclear facilities
7Weather radar
8Natural events (USGS + EONET)
TOOLS
BToggle broadcast intercept panel
SFocus OSINT feed search bar
Left-clickOpen context menu actions (open source, copy snippet, copy URL, fly to location)
COCOM QUICK-FLY
Alt+1EUCOM — Europe
Alt+2CENTCOM — Middle East / SWASIA
Alt+3INDOPACOM — Indo-Pacific
Alt+4AFRICOM — Africa
Alt+5NORTHCOM — North America
Alt+6SOUTHCOM — South / Latin America
NEWS ITEM LEFT-CLICK CONTEXT MENU
Left-click any OSINT feed item for: open source, copy OSINT snippet, copy URL, fly to location.