Building a real-time rocket alert monitoring stack for Israel
A Docker microservices stack for monitoring Pikud HaOref red alerts with real-time maps, push notifications, AI sitreps, and Home Assistant integration.
The Project
https://github.com/danielrosehill/Red-Alert-Monitoring-Stack
danielrosehill/Red-Alert-Monitoring-Stack View on GitHubThe Red Alert Monitoring Stack is a complete microservices-based system for monitoring Israel's Home Front Command (Pikud HaOref) rocket and missile alerts in real time. Built on Docker Compose, the stack comprises nine independent services that communicate over HTTP and MQTT, all sharing a single upstream data source. Each service does one thing: the proxy polls, the dashboard visualizes, the notifier pushes, the bot responds, and the actuator controls physical devices. If any single service goes down, the rest keep working.
Architecture and Components
At the heart of the stack sits the Oref Alert Proxy, a lightweight FastAPI service that polls Pikud HaOref every 3 seconds and serves raw alert data via HTTP. Because the upstream API is geo-restricted to Israeli IP addresses, the proxy must run from within Israel. Every other service in the stack consumes data from this single relay, ensuring there is only one connection to the government API regardless of how many consumers are running.
danielrosehill/Oref-Alert-Proxy View on GitHubThe Geodash service provides a real-time geographic dashboard built with Leaflet maps, rendering over 1,450 polygon overlays corresponding to alert zones across Israel. It writes time-series data to InfluxDB for historical playback and includes a TV-optimized view for wall-mounted displays. Separate pages provide alerts-with-news, mobile, and tablet layouts.
danielrosehill/Red-Alert-Geodash View on GitHub
Notifications and Intelligence
The stack includes two notification channels. The Pushover Notifier sends push notifications to your phone when the nationwide alert count crosses configurable thresholds (50, 100, 200, up to 1,000 simultaneous areas). This is designed for large-scale situational awareness rather than per-area alerts. The Telegram Bot provides on-demand intelligence: the /sitrep command generates AI situation reports using dual-model synthesis via OpenRouter, combining live alert data with cached RSS news feeds.
An RSS Cache service polls news feeds on a schedule and serves cached articles to both the Geodash dashboard and the Telegram bot. A Prompt Runner service handles AI prompt templates (immediate intelligence briefs, daily sitreps) and is triggered automatically by the actuator when your local area receives an alert.
Home Automation and Physical Actuation
The Actuator service bridges the monitoring stack to Home Assistant via its REST API. It polls the proxy and sets an input_select entity to states like idle, warning, active, clear, or threshold_N. Home Assistant automations then handle the physical response: flashing RGB lights red, sounding smart sirens, and issuing TTS announcements over a whole-house audio system. When your local area (e.g., Jerusalem South) gets a direct alert, lights flash red and sirens sound. When the all-clear arrives, lights turn green and silence the sirens. After 2 minutes, the system restores normal lighting.

MCP Server for AI Agents
The stack includes an MCP (Model Context Protocol) server that exposes alert data as tools for AI agents like Claude Code and Claude Desktop. Available tools include get_current_alerts, get_area_alerts (with Haversine distance filtering), get_alert_history, get_news, and get_sample_payloads. The server automatically captures one real alert payload every 3 hours to build a reference library for development. It uses streamable HTTP transport via FastMCP and can be connected with a single command: claude mcp add --transport http red-alert http://localhost:8786/mcp.
A Management UI on port 8888 provides a health dashboard showing the status of all services with links to the Geodash map. The entire stack builds from source in the monorepo with no external Docker Hub images required beyond influxdb:2 and eclipse-mosquitto:2. Two compose variants are provided: one for users with an existing MQTT broker on their network, and a self-contained version that bundles Mosquitto.